A Strategy for Mapping Threads to GPUs in a Directive-Based Programming Model



Journal Title

Journal ISSN

Volume Title



The proliferation of accelerators in modern clusters makes efficient coprocessor programming a key requirement if application codes are to achieve high levels of performance with acceptable energy consumption on such platforms. This has led to considerable effort to provide suitable programming models for these accelerators, especially within the OpenMP community. While OpenMP 4.5 offers a rich set of directives, clauses and runtime calls to fully utilize accelerators, an efficient implementation of OpenMP 4.5 for GPUs remains a non-trivial task, given their multiple levels of thread parallelism. In this thesis, we describe a new implementation of the corresponding features of OpenMP 4.5 for GPUs based on a one-to-one mapping of its loop hierarchy parallelism to the GPU thread hierarchy. We assess the impact of this mapping, in particular the use of GPU warps to handle innermost loop execution, on the performance of GPU execution via a set of benchmarks that include a version of the NAS parallel benchmarks specifically developed for this research; we also used the Matrix- Matrix multiplication, Jacobi, Gauss and Laplacian kernels for better understanding the potential performance issues.



OpenMP, OpenUH, GPUs


Portions of this document appear in: Chen Shen, Xiaonan Tian, Dounia Khaldi, and Barbara Chapman, "Assessing One-to-One Parallelism Levels Mapping for OpenMP Offloading to GPUs," Proceedings of the 8th International Workshop on Programming Models and Applications for Multicores and Manycores (2017): 68-73. DOI: 10.1145/3026937.3026945