LLVM Offload: A deep dive into device offloading in LLVM

Author

solitary crow

OpenMP1 has been a staple of high performance computing community for almost two decades and has provided its users with considerable performance compared to the effort it takes to write it, and ever since version (?) it has had the support for device offloading2, this has allowed OpenMP to be used for writing high performance device code without needed to write CUDA or OpenCL. But LLVM went one step futher to provide a more generic offloading infrastructure which can be used by different frontend ends such as SYCL3, ML compiler runtimes, etc using the same interface. This write-up is about that general offloading infrastructure in LLVM.

Device Programming

Introduction to OpenMP Offloading

Introduction to LLVM Offloading

Footnotes

  1. https://www.openmp.org/↩︎

  2. device here means an accelerator such as a GPU/NPU, but it can also be a multicore CPU↩︎

  3. https://www.khronos.org/sycl/↩︎