The design and implementation of OpenMP 4.5 and OpenACC backends for the RAJA C++ performance portability layer

3Citations
Citations of this article
3Readers
Mendeley users who have this article in their library.
Get full text

Abstract

Portability 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.

Cite

CITATION STYLE

APA

Killian, W., Scogland, T., Kunen, A., & Cavazos, J. (2018). The design and implementation of OpenMP 4.5 and OpenACC backends for the RAJA C++ performance portability layer. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 10732 LNCS, pp. 63–82). Springer Verlag. https://doi.org/10.1007/978-3-319-74896-2_4

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free