2016Unpublished venueRequires access

Target-Specific Refinement of Multigrid Codes

Richard Membarth, Marcel Köster, Sebastian Hack

Open publisher page 0 citations

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.

About this research paper

What this paper is about

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.

Why it matters

A significance statement is not available in the OpenAlex record.

Key contribution

A contribution statement is not available in the OpenAlex record.

Method / approach

Method details are not available in the OpenAlex metadata.

Main findings

Findings are not separately available in the OpenAlex metadata.

Limitations

Limitations are not available in the OpenAlex metadata.

Applications

Application details are not available in the OpenAlex metadata.

Available 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.

Key concepts: Speedup, Computer science, Stencil, Parallel computing, Digital subscriber line, Multigrid method, Domain-specific language, Vectorization (mathematics)

Related papers

Back to paper searchBrowse research topicsOriginal source
Target-Specific Refinement of Multigrid Codes — Research Paper | ScholarLens