Heterogeneous systems are becoming increasingly prevalent. In order to exploit the rich compute resources of such systems, robust programming models are needed for application developers to seamlessly migrate legacy code from today's systems to tomorrow's. Over the past decade and more, directives have been established as one of the promising paths to tackle programmatic challenges on emerging systems. This work focuses on applying and demonstrating OpenMP offloading directives on five proxy applications. We observe that the performance varies widely from one compiler to the other; a crucial aspect of our work is reporting best practices to application developers who use OpenMP offloading compilers. While some issues can be worked around by the developer, there are other issues that must be reported to the compiler vendors. By restructuring OpenMP offloading directives, we gain an 18x speedup for the su3 proxy application on NERSC's Cori system when using the Clang compiler, and a 15.7x speedup by switching max reductions to add reductions in the laplace mini-app when using the Cray-llvm compiler on Cori.
翻译:为了利用这些系统的丰富计算资源,应用程序开发者需要强有力的编程模型,以便从今天的系统将遗留代码无缝地从今天的系统迁移到明天的系统。在过去的十年和更多的十年中,指令被确定为解决新兴系统方案挑战的有希望的途径之一。这项工作的重点是应用和演示关于五个代理应用程序的 OpenMP 卸载指令。我们观察到,从一个编译者到另一个代用软件的性能差异很大;我们工作的一个重要方面是向使用 OpenMP 卸载编译器的应用开发者报告最佳做法。虽然有些问题可以由开发者处理,但还有其他问题必须报告给编译者供应商。通过调整 OpenMP 卸载指令,我们在使用Clan 编译器时,为 NERSC Cori系统中的 su3 代用软件加速了18x加速度,在使用Clan 编译器时,通过转换最大减速来减少粘贴微型应用程序。使用Cray-llm 编译器时,我们得到了15.7x的加速。