Target-Specific Refinement of Multigrid Codes
Richard Membarth, Marcel Köster, Sebastian Hack
Abstract
Richard Membarth, Marcel Köster, Sebastian Hack
Abstract
Abstract—This paper applies partial evaluation to stage a sten-cil code Domain-Specific Language (DSL) onto a functional and imperative programming language. Platform-specific primitives such as scheduling or vectorization, and algorithmic variants such as boundary handling are factored out into a library that make up the elements of that DSL. We show how partial evaluation can eliminate all overhead of this separation of concerns and creates code that resembles hand-crafted versions for a particular target platform. We evaluate our technique by implementing a DSL for the V-cycle multigrid iteration. Our approach generates code for AMD and NVIDIA GPUs (via SPIR and NVVM) as well as for CPUs using AVX/AVX2 alike from the same high-level DSL program. First results show that we achieve a speedup of up to 3 × on the CPU by vectorizing multigrid components and a speedup of up to 2 × on the GPU by merging the computation of multigrid components. Index Terms—Multigrid codes, partial evaluation, domain-specific language. I.
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
Abstract—This paper applies partial evaluation to stage a sten-cil code Domain-Specific Language (DSL) onto a functional and imperative programming language. Platform-specific primitives such as scheduling or vectorization, and algorithmic variants such as boundary handling are factored out into a library that make up the elements of that DSL. We show how partial evaluation can eliminate all overhead of this separation of concerns and creates code that resembles hand-crafted versions for a particular target platform. We evaluate our technique by implementing a DSL for the V-cycle multigrid iteration. Our approach generates code for AMD and NVIDIA GPUs (via SPIR and NVVM) as well as for CPUs using AVX/AVX2 alike from the same high-level DSL program. First results show that we achieve a speedup of up to 3 × on the CPU by vectorizing multigrid components and a speedup of up to 2 × on the GPU by merging the computation of multigrid components. Index Terms—Multigrid codes, partial evaluation, domain-specific language. I.
Key concepts: Speedup, Computer science, Stencil, Parallel computing, Digital subscriber line, Multigrid method, Domain-specific language, Vectorization (mathematics)