The Intel® oneAPI DPC++/C++ Compiler (DPCPP and ICX) is the new LLVM-based compiler and is part of the Intel® oneAPI toolkits. This article describes OpenMP specification features and Intel's OpenMP extensions supported in the Intel® oneAPI DPC++/C++ Compiler. Information regarding Intel® oneAPI Toolkits versions maps to which specific compiler versions and packages can be found here.
Similar information for the Intel® Fortran Compiler (IFX) regarding the Language and OpenMP features implemented can be found here.
OpenMP 5.2
Features from almost all of the OpenMP 5.2 specification (which includes all OpenMP versions before it) are supported. Some OpenMP 5.2 features that are not fully supported include dynamic context selectors, reverse offload, collapse of triangular loops, and scan reduction for the composite for simd construct.
OpenMP 6.0
| Feature | Compiler Version | Comments |
|---|---|---|
| interop clause for dispatch | 2023.0 | Intel-proposed feature in OMP6.0. Enables interoperability with libraries that may or may not use OpenMP offloading. |
| prefer_type(preference-list) in append_args clause | 2023.0 | Intel-proposed feature in OMP6.0 |
| local clause for declare target | 2023.2 | |
| groupprivate directive | 2023.2 | |
| underscore form of multi-word constructs | 2026.0 | |
| array section allows omission of length | 2026.0 | |
| default clause for target and target_data | 2026.0 | |
| implicitly-declared reduction identifiers for class-type variables | 2026.0 | |
| map-type modifiers can be specified without a map-type | 2025.0 | |
| need_device_addr modifier for adjust_args clause | 2025.3 | |
| put declare_target at same scope as declaration of its list items | 2026.0 | |
| interchange loop transformation construct, permutation clause | 2025.1 | |
| reverse loop transformation construct | 2026.2 | |
| stripe loop transformation construct | 2025.2 | Intel-proposed feature in OMP6.0. Useful for tuning GPU offloads by strip-mining the loop. |
| if clause for teams | 2025.0 | |
| loop-transformation constructs allowed in loop constructs | 2025.3 | |
| atomic is allowed in constructs with order(concurrent) specified | 2025.3 | |
| threadset clause for task and taskloop | 2026.2 | |
| device_type( host | nohost | any ) clause for target | 2025.0 | |
| prefer_type new syntax to support attributes/properties | 2026.2 | Intel-proposed feature in OMP6.0 |
| nowait can take an optional nonconstant argument | 2025.2 | |
| transparent clause for task and taskloop | 2026.2 | |
| omp_is_free_agent() and omp_ancestor_is_free_agent() | 2026.2 | |
| omp_target_memset() and omp_target_memset_async() | 2024.2 | |
| new routines to get host/device memory spaces | 2024.1 | |
| omp_get_memspace_num_resources() | 2024.1 | |
| omp_get_submemspace() | 2024.1 | |
| new routines to get host/device memory allocators | 2024.1 | |
| “_ALL” suffix on an environment var affects both host and device | 2025.0 | |
| Support abstract names for OMP_THREAD_LIMIT, OMP_TEAMS_THREAD_LIMIT, OMP_NUM_THREADS, and OMP_PLACES | 2025.0 | |
| environment variable OMP_AVAILABLE_DEVICES | 2025.0 | |
| Extend the environment variable OMP_DEFAULT_DEVICE to support device selection by traits | 2025.0 | |
| environment variable OMP_THREADS_RESERVE | 2026.2 |
OpenMP 6.1 (TR15)
| Feature | Compiler Version | Comments |
|---|---|---|
| fallback modifier for need_device_ptr | 2026.0 | Intel-proposed feature in OMP6.1 |
Extensions
| Extension | Compiler Version | Comments |
|---|---|---|
| omp_target_alloc_host, omp_target_alloc_shared, omp_target_alloc_device | 2021.1 | Unified Shared Memory runtime APIs |
| prefetch directive and data clause | 2023.0 | Performance feature for GPU |
| ompx_assert clause for simd | 2023.0 | Compiler asserts if the simd loop is not vectorized |
| need_device_ptr clause for dispatch to support variadic functions | 2023.1 | Needed for variadic function support |
| ompx_sub_group_size clause for target | 2025.0 | Chooses the kernel’s SIMD width |
References
OpenMP* Specification
The OpenMP* specifications are available at openmp.org.
Intel Documentation
Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference
OpenMP* Features Implemented in Intel® Fortran and C++ Compiler Classic