Paper #33

Paper #33

Compiler Assisted Source Transformation of OpenMP Kernels

Jannek Squar1, Tim Jammer2, Michael Blesel1, Michael Kuhn1, Thomas Ludwig3

1 Scientific Computing, Universität Hamburg, Hamburg, Germany
{squar,3blesel,michael.kuhn} @ informatik uni-hamburg de
2 FG Scientific Computing, Technische Universität Darmstadt, Darmstadt, Germany
tim.jammer @ sc tu-darmstadt de
3Deutsches Klimarechenzentrum, Hamburg, Germany
ludwig @ dkrz de

Abstract: Many scientific applications use OpenMP as a relatively easy and fast approach to utilise symmetric multiprocessor systems at their full capacity. However, scalability on shared memory systems is limited and thus distributed parallel computing is inevitable if the full potential through horizontal scaling shall be achieved. Additional software layers like MPI must be used, which require further knowledge on the scientific developers’ side.
This paper presents CATO, a tool prototype using LLVM and Clang, to transform existing OpenMP code to MPI; this enables distributed code execution while keeping OpenMP’s relatively low barrier of entry. The main focus lies on increasing the maximum problem size, which a scientific application can work on; converting an intra-node problem into an inter-node problem makes it possible to overcome the limitation of memory of a single node. Our tool does not focus on improving the absolute runtime, even though it might improve it by e.g. introducing concurrency during the I/O phase; but we rather focus on increasing the maximal problem size and our benchmark of a stencil code shows promising results: The transformation preserves the speedup trend of the code to some extent. Another example demonstrates the capability to increase the maximum problem size while using additional compute nodes.

Keywords: OpenMP, MPI, LLVM, Source Transformation, Code Distribution