Early Experiences Porting Three Applications to OpenMP 4.5

Early Experiences Porting Three Applications to OpenMP 4.5
复制标题

将三个应用程序移植到 OpenMP 4.5 的早期经验

DOI:
--
复制
发表时间:
2016
期刊:
International Workshop on OpenMP
影响因子:
--
通讯作者:
D. Richards
D. Richards
中科院分区:
--
文献类型:
--
作者:
I. Karlin;T. Scogland;A. Jacob;S. Antão;Gheorghe;C. Bertolli;B. Supinski;E. Draeger;A. Eichenberger;J. Glosli;Holger E. Jones;A. Kunen;David Poliakoff;D. Richards

文献摘要

被引文献

相似文献

许多应用程序开发人员需要在多个体系结构上高效运行的代码,但无法负担维护特定于体系结构的代码的费用。通过添加目标指令来支持卸载加速器,OpenMP现在有了支持性能可移植代码开发的机制。本文介绍了Kripke、Cardioid和LULESH在openmp4.5上的应用端口,并讨论了我们的成功和失败。遇到的挑战包括OpenMP如何与c++交互,包括带有虚拟方法和lambda函数的类。此外,OpenMP中缺乏深度复制支持增加了代码的复杂性。最后,gpu无法处理虚拟函数调用需要代码重构。尽管存在这些挑战,我们证明OpenMP在LULESH的内存带宽限制内核中获得的性能在手写CUDA的10%以内。此外,我们还展示了对OpenMP标准的一个微小更改,OpenMP代码的注册使用量可以减少多达10%。
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 %.