TY - GEN
T1 - The pochoir stencil compiler
AU - Tang, Yuan
AU - Chowdhury, Rezaul Alam
AU - Kuszmaul, Bradley C.
AU - Luk, Chi Keung
AU - Leiserson, Charles E.
PY - 2011
Y1 - 2011
N2 - A stencil computation repeatedly updates each point of a d-dimensional grid as a function of itself and its near neighbors. Parallel cache-efficient stencil algorithms based on "trapezoidal decompositions" are known, but most programmers find them difficult to write. The Pochoir stencil compiler allows a programmer to write a simple specification of a stencil in a domain-specific stencil language embedded in C++ which the Pochoir compiler then translates into high-performing Cilk code that employs an efficient parallel cache-oblivious algorithm. Pochoir supports general d-dimensional stencils and handles both periodic and aperiodic boundary conditions in one unified algorithm. The Pochoir system provides a C++ template library that allows the user's stencil specification to be executed directly in C++ without the Pochoir compiler (albeit more slowly), which simplifies user debugging and greatly simplified the implementation of the Pochoir compiler itself. A host of stencil benchmarks run on a modern multicore machine demonstrates that Pochoir outperforms standard parallelloop implementations, typically running 2-10 times faster. The algorithm behind Pochoir improves on prior cache-efficient algorithms on multidimensional grids by making "hyperspace" cuts, which yield asymptotically more parallelism for the same cache efficiency.
AB - A stencil computation repeatedly updates each point of a d-dimensional grid as a function of itself and its near neighbors. Parallel cache-efficient stencil algorithms based on "trapezoidal decompositions" are known, but most programmers find them difficult to write. The Pochoir stencil compiler allows a programmer to write a simple specification of a stencil in a domain-specific stencil language embedded in C++ which the Pochoir compiler then translates into high-performing Cilk code that employs an efficient parallel cache-oblivious algorithm. Pochoir supports general d-dimensional stencils and handles both periodic and aperiodic boundary conditions in one unified algorithm. The Pochoir system provides a C++ template library that allows the user's stencil specification to be executed directly in C++ without the Pochoir compiler (albeit more slowly), which simplifies user debugging and greatly simplified the implementation of the Pochoir compiler itself. A host of stencil benchmarks run on a modern multicore machine demonstrates that Pochoir outperforms standard parallelloop implementations, typically running 2-10 times faster. The algorithm behind Pochoir improves on prior cache-efficient algorithms on multidimensional grids by making "hyperspace" cuts, which yield asymptotically more parallelism for the same cache efficiency.
KW - C++
KW - cache-oblivious algorithm
KW - cilk
KW - compiler
KW - embedded domain-specific language
KW - multicore
KW - parallel computation
KW - stencil computation
KW - trapezoidal decomposition
UR - https://www.scopus.com/pages/publications/79959673844
U2 - 10.1145/1989493.1989508
DO - 10.1145/1989493.1989508
M3 - Conference contribution
AN - SCOPUS:79959673844
SN - 9781450307437
T3 - Annual ACM Symposium on Parallelism in Algorithms and Architectures
SP - 117
EP - 128
BT - SPAA'11 - Proceedings of the 23rd Annual Symposium on Parallelism in Algorithms and Architectures
T2 - 23rd ACM Symposium on Parallelism in Algorithms and Architectures, SPAA'11
Y2 - 4 June 2011 through 6 June 2011
ER -