C++ Abstraction Layers – Performance, Portability and Productivity
Authors: Dennis C. Dinge (Sandia National Laboratories), Simon D. Hammond (Sandia National Laboratories), Christian R. Trott (Sandia National Laboratories), Harold C. Edwards (Sandia National Laboratories)
Abstract: Programming applications for next-generation supercomput- ing architectures is a critical and challenging goal for HPC developers. Developers may elect to use hardware-specific programming models to obtain the highest levels of per- formance possible while sacrificing portability, alternatively, they may choose more portable solutions such as directive- based models to gain portability often at the cost of cross- platform performance.
In this poster we present quantitative runtime performance and qualitative discussion of source code modifications for ports of the LULESH benchmark using the Kokkos C++ programming model and library. We show, when compared with the original OpenMP benchmark, we are able to demon- strate at least equivalent, if not greater, performance than the original code with approximately similar levels of code modification. Crucially however, applications written in Kokkos are hardware portable and we are able to use a single application source to provide efficient execution on GPUs, many-core and multi-core devices.
Two-page extended abstract: pdf