Pochoir is a compiler for a domain-specific language embedded in C++ which produces excellent code from a simple specification of a desired stencil computation. Pochoir allows a wide variety of boundary conditions to be specified, and it automatically parallelizes and optimizes cache performance. Benchmarks of Pochoir-generated code demonstrate a performance advantage of 2-10 times over straightforward parallel loop code. This paper describes the Pochoir specification language and shows how a wide range of stencil computations can be easily specified. |