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 Intel® oneAPI DPC++/C++ Compiler releases. 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 4.5
All features of OpenMP 4.5 are implemented in version 2021.1.
OpenMP 5.0
Following is the status and version of compiler support for OpenMP 5.0 features beyond OpenMP 4.5.
Feature | Available from ICX version? | Comments |
---|---|---|
requires directive for unified_shared_memory | 2021.1 | |
declare variant subset to support target variant dispatch (an Intel extension) | 2021.1 | |
teams without enclosing target | 2021.1 | |
canonical loop: allow != | 2021.1 | |
default nonmonotonic schedule | 2021.1 | |
nontemporal and order(concurrent) clauses for SIMD | 2021.1 | |
loop construct | 2021.1 | |
task/taskloop in_reduction | 2021.1 | |
taskgroup task_reduction | 2021.1 | |
allocate directive, allocate/allocator clauses | 2021.1 | |
use_device_addr clause | 2021.1 | |
nested declare target constructs in C/C++ | 2021.1 | |
master taskloop parallel master parallel master taskloop master taskloop simd parallel master taskloop simd |
2021.1 | |
teams loop | 2021.1 | |
acq_rel, acquire, release clauses for atomic and flush | 2021.1 | |
relaxed and hint clauses for atomic | 2021.1 | |
conditional lastprivate | 2021.1 | |
close map-type-modifier | 2021.1 | |
defaultmap extensions | 2021.1 | |
omp_get_supported_active_levels | 2021.1 | |
omp_set_affinity_format omp_get_affinity_format omp_display_affinity and omp_capture_affinity OMP_DISPLAY_AFFINITY OMP_AFFINITY_FORMAT |
2021.1 | |
omp_get_device_num | 2021.1 | |
omp_pause_resource omp_pause_resource_all | 2021.1 | |
OMP_TARGET_OFFLOAD | 2021.1 | |
OMPT support | 2021.1 | |
scan | 2023.1 | |
Metadirectives | No | |
in, out, and inout dependence-type | 2021.1 | |
mutexinoutset and depobj dependence-type | No | |
detach clause | No | |
declare mapper | 2021.3 | |
depend clause on taskwait | No | |
depobj directive | No | |
iterators | No | |
Target in_reduction clause | 2022.0 | |
Nowait clause for taskwait depend | 2022.0 | |
thread_limit clause for target | 2022.2 | |
default (private | firstprivate) | 2022.2 | Support for private and firstprivate as an argument to the default clause in C and C++. |
defaultmap(present) | 2022.2 | New defaultmap implicit-behavior type of present was added. |
OMP_ALLOCATOR | 2021.1 | |
OMP_DEBUG | 2021.1 | Host: Supported Device: Not Supported |
OMP_TOOL OMP_TOOL_LIBRARIES omp_control_tool | 2021.1 | Host: Supported Device: Minimal Support |
OMP_DISPLAY_ENV | 2021.1 | |
OMP_GET_TEAMS_THREAD_LIMIT | 2022.2 | |
OMP_GET_MAPPED_PTR OMP_TARGET_ASSOCIATE_PTR | 2022.2 | |
OMP_TARGET_DISASSOCIATE_PTR | ||
OMPT support for tools | 2022.2 |
OpenMP 5.1
The following are OpenMP 5.1 features supported beyond OpenMP 5.0.
Feature | Available from ICX version? | Comments |
---|---|---|
Align clause/modifier | 2021.4 | |
dispatch | 2021.3 | |
declare variant subset to support dispatch | 2021.3 | |
omp begin/end declare variant | 2022.2 | |
dispatch construct | 2022.2 | |
interop | 2021.3 | |
Scope | 2022.0 | |
thread_limit clause for target | 2021.1 | |
nowait clause for taskwait depend | 2022.2 | |
depend (inoutset:…) | 2022.2 | |
tile construct | 2022.1 | |
masked construct | 2022.2 | Masked replaces master. Master is deprecated. |
interop directive | 2022.2 | Additional routines omp_get_num_interop_properties omp_get_interop_property omp_get_interop_property_name were added to interpret the value of an omp_interop_t object. |
Dispatch variant interop clause | 2023 | Enables interoperability with libraries which may or may not use OpenMP offloading. |
has_device_addr for target | 2022.2 | |
align modifier for allocate clause | 2022.2 | |
OMP_NUM_TEAMS OMP_TEAMS_THREAD_LIMIT |
2021.1 | |
OMP_SET_NUM_TEAMS OMP_GET_MAX_TEAMS OMP_SET_TEAMS_THREAD_LIMIT |
2022.2 | |
OMP_TARGET_MEMCPY_ASYNC OMP_TARGET_MEMCPY_RECT_ASYNC |
2022.2 |
OpenMP 5.2
The following are OpenMP 5.2 features supported beyond OpenMP 5.1.
Feature | Available from ICX version? | Comments |
---|---|---|
adjust_args, append_args for declare variant | 2022.2 | |
align clause for allocate directive | 2022.2 |
Extensions
Extension | Available from ICX version? | Comments |
---|---|---|
target variant dispatch construct | 2021.1 | Became the OMP5.1 dispatch construct |
Unified Shared Memory runtime APIs: omp_target_alloc_host, omp_target_alloc_shared, omp_target_alloc_device | 2021.1 | Proposed to be part of OpenMP 6.0 spec |
prefetch directive and data clause | 2023.0 | Performance feature for GPU |
Improved OpenMP and SYCL interoperability | 2023.1 | As a part of Intel® Data Center GPU Max Series support |
Added the support for Immediate command list to increase concurrency of kernel launch and reduce kernel launch latency | 2023.1 | As a part of Intel® Data Center GPU Max Series support |
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