Skip to content

AOMP Release 13.0-3

Pre-release
Pre-release
Compare
Choose a tag to compare
@estewart08 estewart08 released this 08 Jun 22:21

THIS IS AN OLD RELEASE. DO NOT DOWNLOAD. PLEASE DOWNLOAD THE LATEST RELEASE.

These are the release notes for AOMP_13.0-3 The source code base for this release is the upstream LLVM 13 monorepo main development branch as of April 1, 2021 with hash value 0889181625bb570e463362ab8f53f9a14c886b2e. Updates from the AMD public repository " amd-stg-open" were added to this base with one commit per file difference as of April 6, 2021. Log messages from amd-stg-open were harvested and merge into the per-file commits. Then aomp development commits from previous releases of AOMP that were not yet upstreamed or merged with amd-stg-open were cherry-picked to start the development of AOMP 13.0-3. During development some upstream (trunk) commits were merged to resolve issues. These are visible from the llvm-project commit log for AOMP 13.0-3.

This release of AOMP has significant enhancements for multi-image support and target-id. Much of which is not yet committed upstream, some of which are not yet tested and released through the ROCm compiler.

The AOMP compiler is a standalone complete source build of the compiler and supporting components. The sources for the supporting components were taken from ROCM 4.2. public sources.

Features:

  1. support for the --offload-arch option. Both cuda and hip offload kinds already support --offload-arch flag. One could think if it as an alias for --fopenmp-targets=TRIPLE -Xopenmp-target=TRIPLE -march=GPUNAME which greatly simplifies command line specification for OpenMP offloading. One only needs to specify --offload-arch=GPUNAME.
  2. A new cross-architecture clang tool called 'offload-arch' will determine the current GPUNAME of an active system with a supported GPU card. There are a number of options. However, with no options it prints to stdout the GPUNAME. So this command could be used to compile foo.c for openmp offloading "clang -fopenmp --offload-arch=offload-arch" Assuming $AOMP/bin is in your $PATH environment variable.
  3. New runtime checking now looks at available images and selects an image whose requirements are satisfied with runtime capabilities. Requirements include the GPUNAME and special compilation features that create an image that only works when a system is operating with the special capabilities. These special requirements form what is known as target-id.
  4. Archive files on the command line are now checked to see if they contain offloading code for the specified offload target which are subsequently used to link the GPU image.
  5. Support for 16.04 was dropped

Fixes:

  • [flang] Resolved: cannot compile modules with private allocatable structs.
  • Removed invalid header definitions for log2 affecting Kokkos.
  • QMCPACK unit tests now at 100% pass rate.
  • Move hostcall required test to rtl, fix minor race.
  • Centos 7 system headers had math functions with various return types for isnan/isinf, which caused conflicts with clang headers. Clang headers now use omp variants to resolve issue.

System Build

  • Moved the construction of offloading libm from aomp-extras to openmp/libomptarget/deviceRTLs/libm Currently the libm device library is only needed for FORTRAN because clang system headers have architecture specific definitions for math functions for c and c++. The build of libm builds bc files for GPU linking in $AOMP/lib/libdevice/libm--.bc . These are built using the clang system headers by changing each static definition to external definitions by setting BUILD_MATH_BUILTINS_LIB .

Known issues to be resolved in 13.0-4

  • aomp/examples failures:
    • cloc/vector_copy_hip
    • cloc/vector_copy_hip_omp
    • hip/device_lib
    • hip/writeIndex
  • hip-openmp failures:
    • aomp_hip_launch_test
    • hip_host_register
  • 36 Clang lit tests failing
  • raja build failure
  • -march option used with -fopenmp-targets fails to handle targetID in some cases (offload-arch should work fine)
  • flang driver hardwires to amd triple if the --offload-arch= option is used.
  • flang driver needs to handle target-id flags such as xnack.