TACO: The Tensor Algebra Compiler

A fast and versatile compiler-based library for sparse linear and tensor algebra

Try online Download from GitHub

What can I use TACO for?

TACO can be used to implement sparse linear and tensor algebra applications in a wide range of domains, such as…

Data Analytics

See an example

Scientific Computing

See an example

Machine Learning

See an example

Why should I use TACO?

TACO is versatile!

TACO supports a wide range of sparse (and dense) linear/tensor algebra computations, from simpler ones like sparse matrix-vector multiplication to more complex ones like MTTKRP on higher-order sparse tensors. Tensors can be stored in a variety of storage formats, including commonly-used sparse matrix and tensor formats like CSR and COO as well as specialized formats like CSF.

TACO is fast!

Under the hood, TACO employs a novel compiler-based technique to generate kernels that are optimized for the computations you want to perform. This lets TACO achieve performance that exceeds the MATLAB Tensor Toolbox by up to several orders of magnitude and that is competitive with other high-performance sparse linear/tensor algebra libraries like Eigen, Intel oneMKL, and SPLATT.

TACO is easy to use!

TACO lets you perform complex sparse linear and tensor algebra computations by writing just a few lines of code. TACO provides C++ and Python APIs that can be used in similar ways as other linear algebra libraries like Eigen and SciPy. The command-line tool and web tool also make it easy to build your own library of custom linear/tensor algebra kernels that you can link to your applications.

How can I start using TACO?

The TACO code base is hosted on GitHub and can be downloaded from there. The code base includes a README that describes how to build the C++ and Python APIs and the command-line tool.

The online documentation describes how to use the C++ and Python APIs as well as includes some example programs that show how TACO can be used. The command-line tool also includes a help menu that documents all of its features; you can access the help menu by invoking the tool with the --help option.

You can also use TACO as a code generator directly within your browser without having to download it.

How can I contribute to TACO?

If you encounter any bugs while using TACO or if you have any suggestions for improvements, please consider creating an issue on GitHub.

We also welcome pull requests if you would like to actively contribute by fixing bugs or implementing new features in TACO!

Acknowledgements

TACO is developed and maintained by members of Prof. Fredrik Kjolstad’s research group at Stanford University, members of the COMMIT research group (led by Prof. Saman Amarasinghe) at MIT CSAIL, and other contributors.

TACO is built on research supported by the National Science Foundation; the U.S. Department of Energy, Office of Science, Office of Advanced Scientific Computing Research; the Direction Générale de l’Armement; the Toyota Research Institute; the Application Driving Architectures (ADA) Research Center, a JUMP Center co-sponsored by SRC and DARPA; the Defense Advanced Research Projects Agency; the Google Research Scholar Program; and the Stanford Data Analytics for What’s Next (DAWN) Affiliate Program. Any opinions, findings, and conclusions or recommendations expressed here are those of the developers of TACO and do not necessarily reflect the views of the aforementioned funding agencies.