[all-commits] [llvm/llvm-project] 5a3a52: [OpenMP] Introduce basic JIT support to OpenMP tar...

Shilei Tian via All-commits all-commits at lists.llvm.org
Tue Dec 27 19:19:17 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5a3a527f8ae220583981a122fda2a2c2eefa1a41
      https://github.com/llvm/llvm-project/commit/5a3a527f8ae220583981a122fda2a2c2eefa1a41
  Author: Shilei Tian <i at tianshilei.me>
  Date:   2022-12-27 (Tue, 27 Dec 2022)

  Changed paths:
    M openmp/libomptarget/CMakeLists.txt
    M openmp/libomptarget/plugins-nextgen/CMakeLists.txt
    M openmp/libomptarget/plugins-nextgen/common/PluginInterface/CMakeLists.txt
    A openmp/libomptarget/plugins-nextgen/common/PluginInterface/JIT.cpp
    A openmp/libomptarget/plugins-nextgen/common/PluginInterface/JIT.h
    M openmp/libomptarget/plugins-nextgen/common/PluginInterface/PluginInterface.cpp
    M openmp/libomptarget/plugins-nextgen/common/PluginInterface/PluginInterface.h
    M openmp/libomptarget/plugins-nextgen/cuda/src/rtl.cpp
    M openmp/libomptarget/plugins-nextgen/generic-elf-64bit/src/rtl.cpp
    M openmp/libomptarget/test/lit.cfg

  Log Message:
  -----------
  [OpenMP] Introduce basic JIT support to OpenMP target offloading

This patch adds the basic JIT support for OpenMP. Currently it only works on Nvidia GPUs.

The support for AMDGPU can be extended easily by just implementing three interface functions. However, the infrastructure requires a small extra extension (add a pre process hook) to support portability for AMDGPU because the AMDGPU backend reads target features of functions. https://github.com/shiltian/llvm-project/commit/02bc7effccc6ff2f5ab3fe5218336094c0485766#diff-321c2038035972ad4994ff9d85b29950ba72c08a79891db5048b8f5d46915314R432 shows how it roughly works.

As for the test, even though I added the corresponding code in CMake files, the test still cannot be triggered because some code is missing in the new plugin CMake file, which has nothing to do with this patch. It will be fixed later.

In order to enable JIT mode, when compiling, `-foffload-lto` is needed, and when linking, `-foffload-lto -Wl,--embed-bitcode` is needed. That implies that, LTO is required to enable JIT mode.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D139287




More information about the All-commits mailing list