arrow
Return

Sparsity-Specific Code Optimization using Expression Trees

delete2022-05-13
delete4
delete
OA
AI
P
Philipp Herholz *
X
Xuan Tang
T
Teseo Schneider
S
Shoaib Kamil
D
Daniele Panozzo
O
Olga Sorkine‐Hornung
DOI:10.1145/3520484delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

En 中文
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 showthat 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.
Keywords:
Code optimisation
sparse computation

Journal

ACM Transactions on Graphics cover
ACM Transactions on Graphics
IF:
9.5
Papers:
4.7K
Citations:
3.6W

Organization

N
New York University
Scholars:
4.4W
Papers: 3.9W
Citations: 5.8W
U
University of Victoria
Scholars:
1.0W
Papers: 1.0W
Citations: 1.5W
E
ETH Zurich
Scholars:
3.0W
Papers: 2.4W
Citations: 8.4W
S
swiss federal institutes of technology domain
Scholars:
9.0W
Papers: 8.0W
Citations: 163
researcher View more organizations