File: ReleaseNotes.rst

package info (click to toggle)
llvm-toolchain-16 1%3A16.0.6-15~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,634,792 kB
  • sloc: cpp: 6,179,261; ansic: 1,216,205; asm: 741,319; python: 196,614; objc: 75,325; f90: 49,640; lisp: 32,396; pascal: 12,286; sh: 9,394; perl: 7,442; ml: 5,494; awk: 3,523; makefile: 2,723; javascript: 1,206; xml: 886; fortran: 581; cs: 573
file content (100 lines) | stat: -rw-r--r-- 4,860 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
===========================
OpenMP 16.0.0 Release Notes
===========================


.. warning::
   These are in-progress notes for the upcoming LLVM 16.0.0 release.
   Release notes for previous releases can be found on
   `the Download Page <https://releases.llvm.org/download.html>`_.


Introduction
============

This document contains the release notes for the OpenMP runtime, release 16.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 <https://llvm.org/releases/>`_.

Non-comprehensive list of changes in this release
=================================================

* OpenMP target offloading will no longer support on 32-bit Linux systems.
  ``libomptarget`` and plugins will not be built on 32-bit systems.

* OpenMP target offloading plugins are re-implemented and named as the NextGen
  plugins. These have an internal unified interface that implement the common
  behavior of all the plugins. This way, generic optimizations or features can
  be implemented once, in the plugin interface, so all the plugins include them
  with no additional effort. Also, all new plugins now behave more similarly and
  debugging is simplified. The NextGen module includes the NVIDIA CUDA, the
  AMDGPU and the GenericELF64bit plugins. These NextGen plugins are enabled by
  default and replace the original ones. The new plugins can be disabled by
  setting the environment variable ``LIBOMPTARGET_NEXTGEN_PLUGINS`` to ``false``
  (default: ``true``).

* Support for building the OpenMP runtime for Windows on AArch64 and ARM
  with MinGW based toolchains.

* Made the OpenMP runtime tests run successfully on Windows.

* Improved performance and internalization when compiling in LTO mode using
  ``-foffload-lto``.

* Created the ``nvptx-arch`` and ``amdgpu-arch`` tools to query the user's
  installed GPUs.

* Removed ``CLANG_OPENMP_NVPTX_DEFAULT_ARCH`` in favor of using the new
  ``nvptx-arch`` tool.

* Added support for ``--offload-arch=native`` which queries the user's locally
  available GPU architectures. Now ``-fopenmp --offload-arch=native`` is
  sufficient to target all of the user's GPUs.

* Added ``-fopenmp-target-jit`` to enable JIT support. Only basic JIT feature is
  supported in this release. A couple of JIT related environment variables were
  added, which can be found on `LLVM/OpenMP runtimes page <https://openmp.llvm.org/design/Runtimes.html#libomptarget-jit-opt-level>`.

* OpenMP now supports ``-Xarch_host`` to control sending compiler arguments only
  to the host compilation.

* Improved ``clang-format`` when used on OpenMP offloading applications.

* ``f16`` suffix is supported when compiling OpenMP programs if the target
  supports it.

* Python 3 is required to run OpenMP LIT tests now.

* Fixed a number of bugs and regressions.

* Improved host thread utilization on target nowait regions. Target tasks are
  now continuously re-enqueued by the OpenMP runtime until their device-side
  operations are completed, unblocking the host thread to execute other tasks.

* Target tasks re-enqueue can be controlled on a per-thread basis based on
  exponential backoff counting. ``OMPTARGET_QUERY_COUNT_THRESHOLD`` defines how
  many target tasks must be re-enqueued before the thread starts blocking on the
  device operations (defaults to 10). ``OMPTARGET_QUERY_COUNT_MAX`` defines the
  maximum value for the per-thread re-enqueue counter (defaults to 5).
  ``OMPTARGET_QUERY_COUNT_BACKOFF_FACTOR`` defines the decrement factor applied
  to the counter when a target task is completed (defaults to 0.5).

* GPU dynamic shared memory (aka. local data share (lds)) can now be allocated
  per kernel via the ``ompx_dyn_cgroup_mem(<Bytes>)`` clause. For an example,
  see https://openmp.llvm.org/design/Runtimes.html#dynamic-shared-memory.

* OpenMP-Opt (run as part of O1/O2/O3) will more effectively lower GPU resource
  usage and improve performance.

* Support record-and-replay functionality for individual OpenMP offload kernels.
  Enabling recording in the host OpenMP target runtime library stores per-kernel
  the device image, device memory state, and kernel launching information. The
  newly added command-line tool `llvm-omp-kernel-replay` replays kernel execution.
  Environment variables control recording/replaying:
   * LIBOMPTARGET_RECORDING=<0|1>, 0: disable recording (default), 1: enable recording
   * LIBOMPTARGET_RR_DEVMEM_SIZE = <integer in bytes>, default 64GB, amount of device
     memory to pre-allocate for storing/loading when recording/replaying
   * LIBOMPTARGET_RR_SAVE_OUTPUT=<0|1>, 0: disable saving device memory post-kernel execution
     (default), 1: enable saving device memory post-kernel execution (used for verification
     with `llvm-omp-kernel-replay`)