Understanding Portability of a High-level Programming Model on Contemporary Heterogeneous Architectures
|Title||Understanding Portability of a High-level Programming Model on Contemporary Heterogeneous Architectures|
|Publication Type||Conference Paper|
|Year of Publication||2015|
|Authors||Sabne, Amit, Sakdhnagool Putt, Lee Seyong, and Vetter Jeffrey S.|
|Conference Name||IEEE Micro|
Accelerator-based heterogeneous computing is gaining momentum in the High-Performance Computing arena. However, the increased complexity of the heterogeneous architectures demands more generic, high-level programming models. OpenACC is one such attempt to tackle this problem. While the abstraction provided by OpenACC offers productivity, it raises questions on both functional and performance portability. In this article, we propose HeteroIR, a high-level, architecture-independent intermediate representation, to map high-level programming models, such as OpenACC, to heterogeneous architectures. We present a compiler approach that translates OpenACC programs into HeteroIR and accelerator kernels, in order to obtain OpenACC functional portability. Then, we evaluate the performance portability obtained by OpenACC with our approach on twelve OpenACC programs on NVIDIA CUDA, AMD GCN, and Intel Xeon Phi architectures. We study the effects of various compiler optimizations and OpenACC program settings on these architectures to provide insights into the achieved performance portability.