Challenges Porting a C++ Template-Metaprogramming Abstraction Layer to Directive-based Offloading
Jeffrey Kelling, Sergei Bastrakov, Alexander Debus, Thomas Kluge, Matt, Leinhauser, Richard Pausch, Klaus Steiniger, Jan Stephan, Ren\'e Widera, Jeff, Young, Michael Bussmann, Sunita Chandrasekaran, Guido Juckeland

TL;DR
This paper discusses porting a complex C++ scientific code to GPU accelerators using directive-based models, addressing challenges in standards and compiler support to maintain portability and performance.
Contribution
It introduces a method for porting a C++ template metaprogramming abstraction layer to directive-based offloading models like OpenACC and OpenMP, with minimal code changes.
Findings
Successful porting of PIConGPU to OpenACC and OpenMP
Identification of conflicts between standards and compiler support
Practical insights into porting complex C++ code to accelerators
Abstract
HPC systems employ a growing variety of compute accelerators with different architectures and from different vendors. Large scientific applications are required to run efficiently across these systems but need to retain a single code-base in order to not stifle development. Directive-based offloading programming models set out to provide the required portability, but, to existing codes, they themselves represent yet another API to port to. Here, we present our approach of porting the GPU-accelerated particle-in-cell code PIConGPU to OpenACC and OpenMP target by adding two new backends to its existing C++-template metaprogramming-based offloading abstraction layer alpaka and avoiding other modifications to the application code. We introduce our approach in the face of conflicts between requirements and available features in the standards as well as practical hurdles posed by immature…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed and Parallel Computing Systems · Scientific Computing and Data Management · Advanced Data Storage Technologies
