Sparsity-Specific Code Optimization using Expression Trees
Sparsity-Specific Code Optimization using Expression Trees
复制标题
DOI:
10.1145/3520484
复制
发表时间:
2021-10
期刊:
影响因子:
--
通讯作者:
Philipp Herholz;Xuan Tang;T. Schneider;Shoaib Kamil;Daniele Panozzo;O. Sorkine-Hornung
中科院分区:
文献类型:
--
作者:
Philipp Herholz;Xuan Tang;T. Schneider;Shoaib Kamil;Daniele Panozzo;O. Sorkine-Hornung
We introduce a code generator that converts unoptimized C++ code operating on sparse data into vectorized and parallel CPU or GPU kernels. Our approach unrolls the computation into a massive expression graph, performs redundant expression elimination, grouping, and then generates an architecture-specific kernel to solve the same problem, assuming that the sparsity pattern is fixed, which is a common scenario in many applications in computer graphics and scientific computing. We show that our approach scales to large problems and can achieve speedups of two orders of magnitude on CPUs and three orders of magnitude on GPUs, compared to a set of manually optimized CPU baselines. To demonstrate the practical applicability of our approach, we employ it to optimize popular algorithms with applications to physical simulation and interactive mesh deformation.