"Stencil computations are not well optimized by general-purpose
production compilers and the increased use of multicore, manycore, and
accelerator-based systems makes the optimization problem even more
challenging. In this paper we present Snowflake, a Domain Specific
Language (DSL) for stencils that uses a "micro-compiler" approach, i.e.,
small, focused, domain-specific code generators. The approach is
similar to that used in image processing stencils, but Snowflake handles
the much more complex stencils that arise in scientific computing,
including complex boundary conditions, higher- order operators (larger
stencils), higher dimensions, variable coefficients, non-unit-stride
iteration spaces, and multiple input or output meshes. Snowflake is
embedded in the Python language, allowing it to interoperate with
popular scientific tools like SciPy and iPython; it also takes advantage
of built-in Python libraries for powerful dependence analysis as part
of a just-in-time compiler. We demonstrate the power of the Snowflake
language and the micro-compiler approach with a complex scientific
benchmark, HPGMG, that exercises the generality of stencil support in
Snowflake. By generating OpenMP comparable to, and OpenCL within a
factor of 2x of hand-optimized HPGMG, Snowflake demonstrates that a
micro-compiler can support diverse processor architectures and is
performance-competitive whilst preserving a high-level Python
implementation."
https://github.com/ucb-sejits/snowflake
Snowflake: A Lightweight Portable Stencil DSL - https://hgpu.org/?p=17333
No comments:
Post a Comment