SC21 Proceedings

The International Conference for High Performance Computing, Networking, Storage, and Analysis

Challenges Porting a C++ Template-Metaprogramming Abstraction Layer to Directive-based Offloading


Workshop:WACCPD 2021: Eighth Workshop on Accelerator Programming Using Directives

Authors: Jeffrey Kelling, Sergei Bastrakov, Alexander Debus, and Thomas Kluge (Helmholtz-Zentrum Dresden-Rossendorf (HZDR)); Matt Leinhauser (University of Delaware; Center for Advanced Systems Understanding (CASUS), Germany); Richard Pausch and Klaus Steiniger (Helmholtz-Zentrum Dresden-Rossendorf (HZDR)); Jan Stephan (Center for Advanced Systems Understanding (CASUS), Germany); René Widera (Helmholtz-Zentrum Dresden-Rossendorf (HZDR)); Jeff Young (Georgia Institute of Technology); Michael Bussmann (Center for Advanced Systems Understanding (CASUS), Germany); Sunita Chandrasekaran (University of Delaware); and Guido Juckeland (Center for Advanced Systems Understanding (CASUS), Germany)


Abstract: HPC systems employ a growing variety of compute accelerators with different architectures and from different vendors. Large scientific applications which 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 to 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 compiler support.





Back to WACCPD 2021: Eighth Workshop on Accelerator Programming Using Directives Archive Listing



Back to Full Workshop Archive Listing