AOMP Release 18.0-0
These are the release notes for AOMP 18.0-0. AOMP uses AMD developer modifications to the upstream LLVM development trunk. These differences are managed in a branch called the "amd-stg-open". This branch is found in a mirror of upstream LLVM found at https://github.com/RadeonOpenCompute/llvm-project. The amd-stg-open branch is constantly changing as AMD merges upstream development trunk with its internal open development efforts. The AMD modifications are experimental and/or/while contributions under review for the upstream trunk. AOMP uses a snapshot of amd-stg-open at the commit ids and dates listed below. AOMP also includes builds of related ROCm components. We call AOMP a "standalone" build as it does not use or require ROCm with the exception of the kernel module (dkms) and libdrm which are often part of the Linux distribution. AOMP is isolated from any ROCm installations by installing into /usr/lib/aomp and the use of RPATH for runtime libraries.
For AOMP 18.0-0, the last trunk commit is c3b979e6512b00a5bd9c3e0d4ed986cf500630 on Sept 8, 2023. The last amd-only commit is def7057717b5098f6a9f773fc6e7b2a7f59cdd50 on Sept 11, 2023 . These commits forms a frozen branch now called "aomp-18.0-0". See https://github.com/RadeonOpenCompute/llvm-project/tree/aomp-18.0-0.
The integrated ROCm components for this AOMP release were built with ROCM 5.6.1 sources.
This is the 1st AOMP release based on LLVM 18 development.
The changes from 17.0-3 to 18.0-0 include:
- New driver default (opaque offload linker)
- This driver uses clang-offload-packager to create and extract heterogeneous objects.
- For amdgpu, the final link phase steps through a series of commands instead of making a single call to clang-linker-wrapper. clang-linker-wrapper obscures the process of linking and embedding offload and host objects. To use clang-linker-wrapper, use command line option --no-opaque-offload-linker.
- Fix support for multi-arch.
- Optimizations to remove initial hostexec malloc.
- This driver uses clang-offload-packager to build and extract heterogeneous objects.
- Zero copy support for MI300A.
- Fixed data_share2 smoke test regression.
- Fix new DeviceRTL schedule clause intermittent fail.
- Support HIP bundles.
- Upstream convergence (3490 lines removed)
- Remove old plugin code.
- Remove the hostRPC code.
- DeviceRTL cleanup - Synchronized threads
- Set default OpenMP to 5.1.
- Restore safe buffer usage warnings for MIOpen GTest.
- Fix build to use LLVM-project mono-repo components, ROCm devicelibs and comgr.
Errata:
- smoke tests flang-272343-3 and flang-299043 get seg faults, both have PARALLEL DO with ENTER MAP and EXIT MAP
- fprintf intermittent fails (~15%) when writing to open file descriptor, no problems with fprintf to stderr.
- The non-default option --no-opaque-offload-linker often fails because of problems with clang-linker-wrapper.