OpenMP 12.0.0 Release Notes¶
Warning
These are in-progress notes for the upcoming LLVM 12.0.0 release. Release notes for previous releases can be found on the Download Page.
Introduction¶
This document contains the release notes for the OpenMP runtime, release 12.0.0. Here we describe the status of OpenMP, including major improvements from the previous release. All OpenMP releases may be downloaded from the LLVM releases web site.
Non-comprehensive list of changes in this release¶
Extended the
libomptarget
API functions to include source location information and OpenMP target mapper support. This allowslibomptarget
to know the source location of the OpenMP region it is executing, as well as the name and declarations of all the variables used inside the region. Each function generated now uses itsmapper
variant. The old API calls now call into the new API functions withnullptr
arguments for backwards compatibility with old binaries. Source location information forlibomptarget
is now generated by Clang at any level of debugging information.Added improved error messages for
libomptarget
andCUDA
plugins. Error messages are now presented without requiring a debug build oflibomptarget
. The newly added source location information can also be used to identify which OpenMP target region the failure occurred in. More information can be found here.Added additional environment variables to control output from the
libomptarget
runtime library.LIBOMPTARGET_PROFILE
to generate time profile output similar to Clang’s-ftime-trace
option.LIBOMPTARGET_MEMORY_MANAGER_THRESHOLD
sets the threshold size for which thelibomptarget
memory manager will handle the allocation.LIBOMPTARGET_INFO
allows the user to request certain information from thelibomptarget
runtime using a 32-bit field. A full description of each environment variable is described here.target nowait
was supported via hidden helper task, which is a task not bound to any parallel region. A hidden helper team with a number of threads is created when the first hidden helper task is encountered. The number of threads can be configured via the environment variableLIBOMP_NUM_HIDDEN_HELPER_THREADS
. By default it is 8. IfLIBOMP_NUM_HIDDEN_HELPER_THREADS=0
, hidden helper task is disabled and falls back to a regular OpenMP task. It can also be disabled by setting the environment variableLIBOMP_USE_HIDDEN_HELPER_TASK=OFF
.deviceRTLs
for NVPTX platform is CUDA free now. It is generally OpenMP code. Target dependent parts are implemented with Clang/LLVM/NVVM intrinsics. CUDA SDK is also dropped as a dependence to build the device runtime, which means device runtime can also be built on a CUDA free system. However, it is disabled by default. Set the CMake variableLIBOMPTARGET_BUILD_NVPTX_BCLIB=ON
to enable the build of NVPTX device runtime on a CUDA free system.gcc-multilib
andg++-multilib
are required. If CUDA is found, the device runtime will be built by default.Static NVPTX device runtime library (
libomptarget-nvptx.a
) was dropped.
A bitcode library is required to build an OpenMP program. If the library is not found in the default path or any of the paths defined by
LIBRARY_PATH
, an error will be raised. User can also specify the path to the bitcode device library via--libomptarget-nvptx-bc-path=
.