The Design and Implementation of OpenMP 4.5 and OpenACC
Backends for the RAJA C++ Performance Portability Layer
Author/Presenter
Event Type
Workshop
Accelerators
Applications
Compiler Analysis and Optimization
Compilers
Parallel Programming Languages, Libraries, Models
and Notations
Runtime Systems
TimeMonday, November 13th1:30pm -
2pm
Location712
DescriptionPortability abstraction layers such as RAJA enable
users to quickly change how a loop nest is executed with
minimal modifications to high-level source code.
Directive-based programming models such as OpenMP and
OpenACC provide easy-to-use annotations on for-loops and
regions which change the execution pattern of user code.
Directive-based language backends for RAJA have
previously been limited to few options due to
multiplicative clauses creating version explosion. In
this work, we introduce an updated implementation of two
directive-based backends which helps mitigate the
aforementioned version explosion problem by leveraging
the C++ type system and template meta-programming
concepts. We implement partial OpenMP 4.5 and OpenACC
backends for the RAJA portability layer which can apply
loop transformations and specify how loops should be
executed. We evaluate our approach by analyzing
compilation and runtime overhead for both backends using
PGI 17.7 and IBM clang (OpenMP 4.5) on a collection of
computation kernels.
Author/Presenter




