# Why should I use taco?

taco is fast

Under the hood, the taco library employs a novel compiler-based technique to generate kernels that are optimized for the computations you want to perform. This enables taco to 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 and tensor algebra libraries like Eigen, Intel MKL, and SPLATT.

taco is versatile

The compiler-based technique that underlies taco enables it to support a wide variety of linear and tensor algebra operations, ranging from simpler ones like sparse matrix-vector multiplication to more complex ones like MTTKRP on tensors of any order. Tensors can be stored in a wide range of storage formats, including many commonly used sparse matrix and tensor formats such as CSR.

taco is easy to use

With taco, you can define even complex tensor algebra computations on dense and sparse tensors in just a couple of lines of C++ code using tensor index notation. The taco library takes care of generating the potentially very complicated kernels that are needed to perform your desired computations.

# Tools Demo

# Are you using taco?

The first paper on taco will be presented at OOPSLA in Vancouver at the end of this month. We would love to say something about usage in this presentation, so if you are actively using taco we would love to hear from you!

# Acknowledgements

taco is developed by members of the Commit research group in MIT CSAIL and is built on work supported by the National Science Foundation under Grant No. CCF-1533753, by the U.S. Department of Energy, Office of Science, Office of Advanced Scientific Computing Research under Award Numbers DE-SC008923 and DE-SC014204, by the Direction Générale de l'Armement (Projet ERE 2016929), and by the Toyota Research Institute.