Tensor algebra is a powerful tool with applications in machine learning, data analytics, engineering and the physical sciences. Tensors are often sparse and compound operations must frequently be computed in a single kernel for performance and to save memory. Programmers are left to write kernels for every operation of interest, with different mixes of dense and sparse tensors in different formats. The combinations are infinite, which makes it impossible to manually implement and optimize them all. This paper introduces the first compiler technique to automatically generate kernels for any compound tensor algebra operation on dense and sparse tensors. The technique is implemented in a C++ library called taco. Its performance is competitive with best-in-class hand-optimized kernels in popular libraries, while supporting far more tensor operations.
%0 Journal Article
%1 Kjolstad:2017:TAC:3152284.3133901
%A Kjolstad, Fredrik
%A Kamil, Shoaib
%A Chou, Stephen
%A Lugato, David
%A Amarasinghe, Saman
%C New York, NY, USA
%D 2017
%I ACM
%J Proc. ACM Program. Lang.
%K 2017 algebra compiler mit tensor
%N OOPSLA
%P 77:1--77:29
%R 10.1145/3133901
%T The Tensor Algebra Compiler
%U http://doi.acm.org/10.1145/3133901
%V 1
%X Tensor algebra is a powerful tool with applications in machine learning, data analytics, engineering and the physical sciences. Tensors are often sparse and compound operations must frequently be computed in a single kernel for performance and to save memory. Programmers are left to write kernels for every operation of interest, with different mixes of dense and sparse tensors in different formats. The combinations are infinite, which makes it impossible to manually implement and optimize them all. This paper introduces the first compiler technique to automatically generate kernels for any compound tensor algebra operation on dense and sparse tensors. The technique is implemented in a C++ library called taco. Its performance is competitive with best-in-class hand-optimized kernels in popular libraries, while supporting far more tensor operations.
@article{Kjolstad:2017:TAC:3152284.3133901,
abstract = {Tensor algebra is a powerful tool with applications in machine learning, data analytics, engineering and the physical sciences. Tensors are often sparse and compound operations must frequently be computed in a single kernel for performance and to save memory. Programmers are left to write kernels for every operation of interest, with different mixes of dense and sparse tensors in different formats. The combinations are infinite, which makes it impossible to manually implement and optimize them all. This paper introduces the first compiler technique to automatically generate kernels for any compound tensor algebra operation on dense and sparse tensors. The technique is implemented in a C++ library called taco. Its performance is competitive with best-in-class hand-optimized kernels in popular libraries, while supporting far more tensor operations.},
acmid = {3133901},
added-at = {2019-12-22T15:19:51.000+0100},
address = {New York, NY, USA},
articleno = {77},
author = {Kjolstad, Fredrik and Kamil, Shoaib and Chou, Stephen and Lugato, David and Amarasinghe, Saman},
biburl = {https://www.bibsonomy.org/bibtex/250efdaf4258ed45d973a9205d8ddaae1/analyst},
description = {The tensor algebra compiler},
doi = {10.1145/3133901},
interhash = {a50286a16d075e5723ca2d50dbb5ee29},
intrahash = {50efdaf4258ed45d973a9205d8ddaae1},
issn = {2475-1421},
issue_date = {October 2017},
journal = {Proc. ACM Program. Lang.},
keywords = {2017 algebra compiler mit tensor},
month = oct,
number = {OOPSLA},
numpages = {29},
pages = {77:1--77:29},
publisher = {ACM},
timestamp = {2019-12-22T15:19:51.000+0100},
title = {The Tensor Algebra Compiler},
url = {http://doi.acm.org/10.1145/3133901},
volume = 1,
year = 2017
}