FreeTensor: A Free-Form DSL with Holistic Optimizations for Irregular Tensor Programs
Shizhi Tang,Jidong Zhai,Haojie Wang,Lin Jiang,Liyan Zheng,Zhenhao Yuan,Chen Zhang
DOI: https://doi.org/10.1145/3519939.3523448
2022-01-01
Abstract:Tensor programs are of critical use in many domains. Existing frameworks, such as PyTorch, TensorFlow, and JAX, adopt operator-based programming to ease programming, increase performance, and perform automatic differentiation. However, as the rapid development of tensor programs, operator-based programming shows significant limitations for irregular patterns since a large amount of redundant computation or memory access is introduced. In this work, we propose FreeTensor, a free-form domain specific language which supports redundancy-avoid programming by introducing fine-grained control flow. With optimizations including partial evaluation, dependence-aware transformations, and fine-grained automatic differentiation, FreeTensor is able to generate high performance tensor programs on both CPU and GPU. Experiments show a speedup over existing tensor programming frameworks up to 5.10x (2.08x on average) without differentiation, and up to 127.74x (36.26x on average) after differentiation, for typical irregular tensor programs.