arXiv · 2407.01742
The Continuous Tensor Abstraction: Where Indices are Real
Abstract
This paper introduces the continuous tensor abstraction, allowing indices to take real-number values (for example, A[3.14]). It also presents continuous tensor algebra expressions, such as C(x,y) = A(x,y) * B(x,y), where indices are defined over a continuous domain. This work expands the traditional tensor model to include continuous tensors. Our implementation supports piecewise-constant tensors, enabling infinite domains to be processed in finite time. We also introduce a new tensor format for efficient storage and a code generation technique for automatic kernel generation. For the first time, our abstraction expresses domains like computational geometry and computer graphics in the language of tensor programming. Our approach demonstrates competitive or better performance than hand-optimized kernels in leading libraries across diverse applications. Compared to hand-implemented libraries on a CPU, our compiler-based implementation achieves an average speedup of 9.20x on 2D radius search with approximately 60x fewer lines of code (LoC), 1.22x on genomic interval overlapping queries (with approximately 18x LoC saving), and 1.69x on trilinear interpolation in Neural Radiance Field (with approximately 6x LoC saving).
Explore related subjects
Keep this discovery
Explore connections, maps & timelines
Jaeyeon Won, Willow Ahrens, Teodoro Fields Collin, Joel S. Emer, Saman Amarasinghe. 2024-07-01. The Continuous Tensor Abstraction: Where Indices are Real. https://doi.org/10.1145/3763146
Cite the original work for its findings. Save a collection to share your selection of sources.