llvm-project/openmp/libomptarget
Jon Chesterfield ae5348a38e [openmp][amdgpu] Make plugin robust to presence of explicit implicit arguments
OpenMP (compiler) does not currently request any implicit kernel
arguments. OpenMP (runtime) allocates and initialises a reasonable guess at
the implicit kernel arguments anyway.

This change makes the plugin check the number of explicit arguments, instead
of all arguments, and puts the pointer to hostcall buffer in both the current
location and at the offset expected when implicit arguments are added to the
metadata by D113538.

This is intended to keep things running while fixing the oversight in the
compiler (in D113538). Once that patch lands, and a following one marks
openmp kernels that use printf such that the backend emits an args element
with the right type (instead of hidden_node), the over-allocation can be
removed and the hardcoded 8*e+3 offset replaced with one read from the
.offset of the corresponding metadata element.

Reviewed By: estewart08

Differential Revision: https://reviews.llvm.org/D114274
2021-11-22 23:00:20 +00:00
..
DeviceRTL [OpenMP] Fix initializer not working on AMDGPU 2021-11-16 08:17:15 -05:00
cmake/Modules [NFC][libomptarget] Fixed -DLLVM_ENABLE_RUNTIMES="openmp" build. 2021-06-18 09:20:10 -07:00
deviceRTLs [Libomptarget] Remove undefined symbol in old runtime 2021-11-20 08:26:57 -05:00
docs [NFC] Initial documentation for declare target indirect support. 2021-11-08 15:12:03 -08:00
include [Libomptarget] Add an external interface to dynamic shared memory 2021-10-08 15:36:57 -04:00
plugins [openmp][amdgpu] Make plugin robust to presence of explicit implicit arguments 2021-11-22 23:00:20 +00:00
src Revert "[openmp] Add OMPT initialization in libomptarget" 2021-11-10 12:44:25 +01:00
test [OpenMP] Fix main thread barrier for Pascal and amdgpu 2021-11-12 11:18:45 -05:00
tools [OpenMP] Fixing llvm-omp-device-info compilation with runtimes 2021-07-30 13:09:08 -05:00
utils Revert "[OpenMP] Codegen aggregate for outlined function captures" 2021-09-21 13:20:39 -07:00
CMakeLists.txt Revert "[openmp] Add OMPT initialization in libomptarget" 2021-11-10 12:44:25 +01:00
README.txt

README.txt

    README for the LLVM* OpenMP* Offloading Runtime Library (libomptarget)
    ======================================================================

How to Build the LLVM* OpenMP* Offloading Runtime Library (libomptarget)
========================================================================
In-tree build:

$ cd where-you-want-to-live
Check out openmp (libomptarget lives under ./libomptarget) into llvm/projects
$ cd where-you-want-to-build
$ mkdir build && cd build
$ cmake path/to/llvm -DCMAKE_C_COMPILER=<C compiler> -DCMAKE_CXX_COMPILER=<C++ compiler>
$ make omptarget

Out-of-tree build:

$ cd where-you-want-to-live
Check out openmp (libomptarget lives under ./libomptarget)
$ cd where-you-want-to-live/openmp/libomptarget
$ mkdir build && cd build
$ cmake path/to/openmp -DCMAKE_C_COMPILER=<C compiler> -DCMAKE_CXX_COMPILER=<C++ compiler>
$ make

For details about building, please look at README.rst in the parent directory.

Architectures Supported
=======================
The current library has been only tested in Linux operating system and the
following host architectures:
* Intel(R) 64 architecture
* IBM(R) Power architecture (big endian)
* IBM(R) Power architecture (little endian)
* ARM(R) AArch64 architecture (little endian)

The currently supported offloading device architectures are:
* Intel(R) 64 architecture (generic 64-bit plugin - mostly for testing purposes)
* IBM(R) Power architecture (big endian) (generic 64-bit plugin - mostly for testing purposes)
* IBM(R) Power architecture (little endian) (generic 64-bit plugin - mostly for testing purposes)
* ARM(R) AArch64 architecture (little endian) (generic 64-bit plugin - mostly for testing purposes)
* CUDA(R) enabled 64-bit NVIDIA(R) GPU architectures

Supported RTL Build Configurations
==================================
Supported Architectures: Intel(R) 64, IBM(R) Power 7 and Power 8

              ---------------------------
              |   gcc      |   clang    |
--------------|------------|------------|
| Linux* OS   |  Yes(1)    |  Yes(2)    |
-----------------------------------------

(1) gcc version 4.8.2 or later is supported.
(2) clang version 3.7 or later is supported.


Front-end Compilers that work with this RTL
===========================================

The following compilers are known to do compatible code generation for
this RTL:
  - clang (from https://github.com/clang-ykt )
  - clang (development branch at http://clang.llvm.org - several features still
    under development)

-----------------------------------------------------------------------

Notices
=======
This library and related compiler support is still under development, so the
employed interface is likely to change in the future.

*Other names and brands may be claimed as the property of others.