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:

from 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.6.10.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

autoray-0.6.10-py3-none-any.whl (50.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for autoray-0.6.10.tar.gz
Algorithm Hash digest
SHA256 afff46ed3a001daad1bed917aecda75a8f0d36c0c8823eed877db4e8d55a8b20
MD5 2a2c4c599cebc352269a7be27f48e05b
BLAKE2b-256 4410b912fb6231ea096ab148f1ad3fa997b5a95091bbc86eb8881793ccc67809

See more details on using hashes here.

File details

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

File metadata

  • Download URL: autoray-0.6.10-py3-none-any.whl
  • Upload date:
  • Size: 50.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for autoray-0.6.10-py3-none-any.whl
Algorithm Hash digest
SHA256 a475909417a1593275d427e20aded362aa55266a5e24aa0e09df69a14dc6eb50
MD5 a3051019302a75e4fc93070621f560d5
BLAKE2b-256 e4b451bab53d8b74f4c5bc3b3b8e6f93e3f5ad32e6f3475dbc90facd0957f125

See more details on using hashes here.

Supported by

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