Early experiences porting three applications to OpenMP 4.5

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

Abstract

Many application developers need code that runs efficiently on multiple architectures, but cannot afford to maintain architecturally specific codes. With the addition of target directives to support offload accelerators, OpenMP now has the machinery to support performance portable code development. In this paper, we describe application ports of Kripke, Cardioid, and LULESH to OpenMP 4.5 and discuss our successes and failures. Challenges encountered include how OpenMP interacts with C++ including classes with virtual methods and lambda functions. Also, the lack of deep copy support in OpenMP increased code complexity. Finally, GPUs inability to handle virtual function calls required code restructuring. Despite these challenges we demonstrate OpenMP obtains performance within 10% of hand written CUDA for memory bandwidth bound kernels in LULESH. In addition, we show with a minor change to the OpenMP standard that register usage for OpenMP code can be reduced by up to 10%.

Cite

CITATION STYLE

APA

Karlin, I., Scogland, T., Jacob, A. C., Antao, S. F., Bercea, G. T., Bertolli, C., … Richards, D. F. (2016). Early experiences porting three applications to OpenMP 4.5. Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 9903 LNCS, 281–292. https://doi.org/10.1007/978-3-319-45550-1_20

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