Skip to main content

Abstract your array operations.

Project description

autoray-header

tests codecov Codacy Badge Docs PyPI Anaconda-Server Badge

autoray is a lightweight python AUTOmatic-arRAY library for abstracting your tensor operations. Primarily it provides an automatic dispatch mechanism that means you can write backend agnostic code that works for:

Beyond that, abstracting the array interface allows you to:

Basic usage

The main function of autoray is do, which takes a function name followed by *args and **kwargs, and automatically looks up (and caches) the correct function to match the equivalent numpy call:

import autoray as ar

def noised_svd(x):
    # automatic dispatch based on supplied array
    U, s, VH = ar.do('linalg.svd', x)

    # automatic dispatch based on different array
    sn = s + 0.1 * ar.do('random.normal', size=ar.shape(s), like=s)

    # automatic dispatch for multiple arrays for certain functions
    return ar.do('einsum', 'ij,j,jk->ik', U, sn, VH)

# explicit backend given by string
x = ar.do('random.uniform', size=(100, 100), like="torch")

# this function now works for any backend
y = noised_svd(x)

# explicit inference of backend from array
ar.infer_backend(y)
# 'torch'

If you don't like the explicit do syntax, or simply want a drop-in replacement for existing code, you can also import the autoray.numpy module:

from autoray import numpy as np

# set a temporary default backend
with ar.backend_like('cupy'):
    z = np.ones((3, 4), dtype='float32')

np.exp(z)
# array([[2.7182817, 2.7182817, 2.7182817, 2.7182817],
#        [2.7182817, 2.7182817, 2.7182817, 2.7182817],
#        [2.7182817, 2.7182817, 2.7182817, 2.7182817]], dtype=float32)

Custom backends and functions can be dynamically registered with:

The main documentation is available at autoray.readthedocs.io.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

autoray-0.7.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

autoray-0.7.1-py3-none-any.whl (930.8 kB view details)

Uploaded Python 3

File details

Details for the file autoray-0.7.1.tar.gz.

File metadata

  • Download URL: autoray-0.7.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for autoray-0.7.1.tar.gz
Algorithm Hash digest
SHA256 e5af6c62ba7c3be8a36b2ab19e344c715f3478d39a0e47755aad365572bc90f8
MD5 df64a0a59e89e637092e8381307ab9c6
BLAKE2b-256 48a0ca3e6c8f13eb6d1d715ce740a705475805c83af413b7ae9a1dd8a363b093

See more details on using hashes here.

Provenance

The following attestation bundles were made for autoray-0.7.1.tar.gz:

Publisher: pypi-release.yml on jcmgray/autoray

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file autoray-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: autoray-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 930.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for autoray-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 36bbcac072771039073d896eb3e73cedbe41b879e247b6ec3c70781ce9afc720
MD5 4d23294528431f00ad62d19e0a848546
BLAKE2b-256 7330acc6359867d31cd34ed85e733e0d5bae25d482089c0a45f258d7833fb543

See more details on using hashes here.

Provenance

The following attestation bundles were made for autoray-0.7.1-py3-none-any.whl:

Publisher: pypi-release.yml on jcmgray/autoray

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page