DOE OSTI · 1567436
Towards Achieving Performance Portability Using Directives for Accelerators
Abstract
In this paper we explore the performance portability of directives provided by OpenMP 4 and OpenACC to program various types of node architectures with attached accelerators, both self-hosted multicore and offload multicore/GPU. Our goal is to examine how successful OpenACC and the newer offload features of OpenMP 4.5 are for moving codes between architectures, how much tuning might be required and what lessons we can learn from this experience. To do this, we use examples of algorithms with varying computational intensities for our evaluation, as both compute and data access efficiency are important considerations for overall application performance. We implement these kernels using various methods provided by newer OpenACC and OpenMP implementations, and we evaluate their performance on various platforms including both X86_64 with attached NVIDIA GPUs, self-hosted Intel Xeon Phi KNL, as well as an X86_64 host system with Intel Xeon Phi coprocessors. In this paper, we explain what factors affected the performance portability such as how to pick the right programming model, its programming style, its availability on different platforms, and how well compilers can optimize and target to multiple platforms.
Explore related subjects
Keep this discovery
Explore connections, maps & timelines
Lopez, M. Graham, Larrea, Veronica Vergara, Joubert, Wayne, Hernandez, Oscar, Haidar, Azzam, Tomov, Stanimire, Dongarra, Jack. 2016-11-01. Towards Achieving Performance Portability Using Directives for Accelerators. https://doi.org/10.1109/waccpd.2016.006
Cite the original work for its findings. Save a collection to share your selection of sources.