Skip to main content

TACO CLI interface for Tensora

This Python package provides a Python wrapper around the CLI tool of the Tensor Algebra Compiler (TACO). This package exists to support the tensora[taco] extra of Tensora. The main tensora package is pure Python, and including TACO by default would complicate its distribution.

The tensora-taco Python package contains one function taco_cli that takes the taco CLI arguments of as a list of strings, and returns a Result.

from tensora_taco import taco_cli

result = taco_cli(["y(i) = A(i,j) * x(j)", "-print-nocolor", "-print-compute"])

kernel = result.unwrap()
# // Generated by the Tensor Algebra Compiler (tensor-compiler.org)
#
# int compute(taco_tensor_t *y, taco_tensor_t *A, taco_tensor_t *x) {
#   int y1_dimension = (int)(y->dimensions[0]);
#   double* restrict y_vals = (double*)(y->vals);
#   int A1_dimension = (int)(A->dimensions[0]);
#   int A2_dimension = (int)(A->dimensions[1]);
#   double* restrict A_vals = (double*)(A->vals);
#   int x1_dimension = (int)(x->dimensions[0]);
#   double* restrict x_vals = (double*)(x->vals);
#
#   #pragma omp parallel for schedule(runtime)
#   for (int32_t i = 0; i < A1_dimension; i++) {
#     double tjy_val = 0.0;
#     for (int32_t j = 0; j < x1_dimension; j++) {
#       int32_t jA = i * A2_dimension + j;
#       tjy_val += A_vals[jA] * x_vals[j];
#     }
#     y_vals[i] = tjy_val;
#   }
#   return 0;
# }

Contributing

tensora-taco is a free and open source project developed under an MIT license. Development occurs at the GitHub project.

Cloning the repo

To make a local copy of tensora-taco, clone the repository with git. This project depends on TACO at build time as a submodule, so it must be cloned as well in order to build the project:

git clone --recurse-submodules https://github.com/drhagen/tabeline.git

Installing from source

tensora-taco uses Poetry as its packaging and dependency manager. In whatever Python environment you prefer, install Poetry and then use Poetry to install this package and its dependencies:

pip install poetry
poetry install

Testing

tensora-taco uses pytest to run the tests in the tests/ directory. The test command is encapsulated with Nox:

poetry run nox -s test

This will try to test with all compatible Python versions that nox can find. To run the tests with only a particular version, run something like this:

poetry run nox -s test-3.11

It is good to run the tests locally before making a PR, but it is not necessary to have all Python versions run. It is rare for a failure to appear in a single version, and the CI will catch it anyway.

Code quality

tensora-taco uses Ruff to ensure a minimum standard of code quality. The code quality commands are encapsulated with Nox:

poetry run nox -s ruff

Making a release

  1. Bump
    1. Increment version in pyproject.toml
    2. Commit with message "Bump version number to X.Y.Z"
    3. Push commit to GitHub
    4. Check CI to ensure all tests pass
  2. Tag
    1. Tag commit with "vX.Y.Z"
    2. Push tag to GitHub
    3. Wait for build to finish
    4. Check PyPI for good upload
  3. Document
    1. Create GitHub release with name "Tensora TACO X.Y.Z" and major changes in body

Metadata

Release files for tensora-taco 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tensora-taco 0.1.2
File Size Uploaded Provenance
tensora_taco-0.1.2.tar.gz 1.3 MB Without provenance Details

Release files / tensora_taco-0.1.2.tar.gz

Download URL tensora_taco-0.1.2.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
b61fea33cb2468d78d7600f3232ff96847e170af679fd9375e29d9630c4ea5ae
BLAKE2b-256 checksum
How to use checksums
0b6f84a96ecbf6b518b956537229a3d760e60ec9df26d6bcd69df1d06e93a918
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.8

Security for tensora-taco 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.2 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page