Python wrapper around the TACO CLI as an alternative kernel generator for Tensora
Project description
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
- Bump
- Increment version in
pyproject.toml
- Commit with message "Bump version number to X.Y.Z"
- Push commit to GitHub
- Check CI to ensure all tests pass
- Increment version in
- Tag
- Document
- Create GitHub release with name "Tensora TACO X.Y.Z" and major changes in body
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.