Early Experiences Porting Three Applications to OpenMP 4.5
Early Experiences Porting Three Applications to OpenMP 4.5
复制标题
将三个应用程序移植到 OpenMP 4.5 的早期经验
DOI:
--
复制
发表时间:
2016
期刊:
影响因子:
--
通讯作者:
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
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 %.