OpenMP 4.x and GPUs

Print

OpenMP provides a directive-based language that allows a programmer to mark parts of its code to take advantage of the features of the machine or system that will execute it, most notably parallelism at the thread level. OpenMP 4.0 included for the first directives to control offloading to a device other than the host, i.e. an accelerator, and OpenMP 4.5 refined a few things so that it become more user friendly. 

A natural target for this offloading model is a heterogeneous system that consists of a host CPU, e.g. PowerPC, with GPUs attached. This requires specific compiler and runtime library support to handle the mapping of the data from host to device and vice-versa, as well as implement the programming model with a native threading model that do not exactly match. I've been investigating ways to accomplished that and I'm actively working on contributing a fully functional implementation to LLVM itself and two related projects: Clang and OpenMP.

OpenMPOffloading

Related Publications:

  • Bercea, G-T., Bertolli, C., Antão, S., Jacob, A. C., Eichenberger, A. E., Chen, T., Sura, Z., Sung, H., Rokos, G., Appelhans, D., O’Brien, K. (2015). Performance Analysis of OpenMP on a GPU using a CORAL Proxy Application. Performance Modeling, Benchmarking and Simulation of HPC Workshop - International Conference for High Performance Computing, Networking, Storage, and Analysis – SC 2015 (pp. 2:1-2:11). Austin, TX, USA: ACM;
  • Bertolli, C., Antão, S., Bercea, G-T., Jacob, A. C., Eichenberger, A. E., Chen, T., Sura, Z., Sung, H., Rokos, G., Appelhans, D., O’Brien, K. (2015). Integrating GPU Support for OpenMP Offloading Directives into Clang. LLVM Compiler Infrastructure in HPC Workshop - International Conference for High Performance Computing, Networking, Storage, and Analysis – SC 2015 (pp. 5:1-5:15). Austin, TX, USA: ACM;
  • Bertolli, C., Antão, S., Eichenberger, A. E., O’Brien, K., Sura, Z., Jacob, A. C., Chen, T., & Sallenave, O. (2014). Coordinating GPU Threads for OpenMP 4.0 in LLVM. LLVM Compiler Infrastructure in HPC Workshop - International Conference for High Performance Computing, Networking, Storage, and Analysis – SC 2014 (pp. 12–21). New Orleans, LI, USA: ACM

IBM Research  IST link  INESC-ID link  Sips link