10 Commits

Author SHA1 Message Date
Joseph Huber
2d588461bc [Libomptarget] Add more moves to expected conversion
Summary:
Fixes other instances of the same problem in the previous patch.
2023-01-06 09:09:45 -06:00
Johannes Doerfert
ccc1324120 Introduce environment variables to deal with JIT IR
We can now dump the IR before and after JIT optimizations into the
files passed via `LIBOMPTARGET_JIT_PRE_OPT_IR_MODULE` and
`LIBOMPTARGET_JIT_POST_OPT_IR_MODULE`, respectively.

Similarly, users can set `LIBOMPTARGET_JIT_REPLACEMENT_MODULE` to
replace the IR in the image with a custom IR module in a file.
All options take file paths, documentation was added.

Reviewed by: tianshilei1992

Differential revision: https://reviews.llvm.org/D140945
2023-01-05 00:17:46 -08:00
Johannes Doerfert
5524952c14 [OpenMP][JIT][FIX] Create the default O0 pipeline for -O0 2023-01-03 17:07:52 -08:00
Doru Bercea
86dc7de8ff Fix initializer name. 2023-01-03 12:45:28 -06:00
Ron Lieberman
750e1c8dbd Revert "[libomptarget][plugin-nextgen] fix for [TypePromotion] NewPM support."
This reverts commit 135f6a1ee8b20bb392ebad2fa5aef78e3a30ddb4.
2023-01-03 12:26:39 -06:00
Ron Lieberman
135f6a1ee8 [libomptarget][plugin-nextgen] fix for [TypePromotion] NewPM support. 2023-01-03 11:04:13 -06:00
Shilei Tian
75019f18bd [OpenMP][JIT] Fixed a couple of issues in the initial implementation of JIT
This patch fixes a couple of issues:
1. Instead of using `llvm_unreachable` for those base virtual functions, unknown
   value will be returned. The previous method could cause runtime error for those
   targets where the image is not compatible but JIT is not implemented.
2. Fixed the type in CMake that causes the `Target` CMake variable is undefined.

Reviewed By: ye-luo

Differential Revision: https://reviews.llvm.org/D140732
2022-12-28 14:40:59 -05:00
Shilei Tian
5a3a527f8a [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. 02bc7effcc (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
2022-12-27 22:19:05 -05:00
Shilei Tian
95956bd896 Revert "[OpenMP] Introduce basic JIT support to OpenMP target offloading"
This reverts commit 58906e4901ec5b7ed230d7fa96123654f6a974af because it breaks AMD's buildbot.
2022-12-27 21:52:07 -05:00
Shilei Tian
58906e4901 [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. 02bc7effcc (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
2022-12-27 19:07:32 -05:00