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 directive | 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 | |
in_reduction clause for task/taskloop | 2021.1 | |
task_reduction for taskgroup | 2021.1 | |
allocate directive, allocate/allocator clauses | 2021.1 | |
use_device_addr clause | 2021.1 | |
nested declare target constructs | 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 modifier for lastprivate clause | 2021.1 | |
close modifier for map clause | 2021.1 | |
defaultmap extensions | 2021.1 | |
omp_get_supported_active_levels | 2021.1 | |
omp_set_affinity_format omp_get_affinity_format omp_display_affinity 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 | |
in, out, and inout dependence-type | 2021.1 | |
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 | |
declare mapper directive | 2021.3 | |
in_reduction clause for target | 2022.0 | |
depend clause for taskwait | 2022.0 | |
OMP_GET_TEAMS_THREAD_LIMIT | 2022.2 | |
OMP_GET_MAPPED_PTR OMP_TARGET_ASSOCIATE_PTR OMP_TARGET_DISASSOCIATE_PTR |
2022.2 | |
depobj construct | 2022.2 | |
mutexinoutset and depobj dependence-type | 2022.2 | |
metadirectives (partial support) | 2022.2 | Only supports static context selectors |
depend clause iterators | 2023.1 | |
scan directive for simd | 2023.1 | |
detach clause for task | 2023.2 | |
task modifier for reduction clause | 2024.1 |
OpenMP 5.1
The following are OpenMP 5.1 features supported beyond OpenMP 5.0.
Feature | Available from ICX version? | Comments |
---|---|---|
OMP_NUM_TEAMS OMP_TEAMS_THREAD_LIMIT |
2021.1 | |
dispatch construct | 2021.3 | |
adjust_args and append_args clauses for declare variant | 2021.3 | |
interop construct | 2021.3 | |
omp_get_num_interop_properties omp_get_interop_int omp_get_interop_ptr omp_get_interop_str omp_get_interop_name omp_get_interop_type_desc omp_get_interop_rc_desc |
2021.3 | Interoperability runtime routines to inspect the properties of an omp_interop_t object. |
align clause/modifier | 2021.4 | |
scope construct | 2022.0 | |
nowait clause for taskwait depend | 2022.0 | |
tile construct | 2022.1 | |
inoutset dependence-type | 2022.2 | |
masked construct | 2022.2 | masked replaces master, which is deprecated |
has_device_addr for target | 2022.2 | |
align modifier for allocate clause | 2022.2 | |
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 | |
omp_all_memory reserved locator | 2022.2 | |
defaultmap(present) | 2022.2 | |
default(private) and default(firstprivate) | 2022.3 | |
parallel masked masked taskloop masked taskloop simd parallel masked taskloop parallel masked taskloop simd |
2023.0 | Combined and composite constructs containing masked |
nothing directive | 2023.1 | |
error directive | 2023.1 | |
strict modifier for grainsize and num_tasks clauses | 2023.1 | |
begin declare variant and end declare variant directives | 2023.2 | |
thread_limit clause for target | 2023.2 | |
affinity clause for task | 2024.0 | |
primary affinity policy for proc_bind clause |
2024.1 |
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 | |
Deprecate destroy clause without argument for depobj directive | 2023.2 | |
reproducible and unconstrained modifiers for order clause | 2023.2 | |
doacross clause for ordered | 2024.0 | |
omp_cur_iteration keyword | 2024.0 | |
Deprecate depend(source) and depend(sink:vec) | 2024.0 | |
firstprivate clause for scope | 2024.0 | |
Deprecate the minus operation from reduction clause | 2024.0 | |
allocate clause for scope | 2024.1 | |
deprecate map syntax of modifiers without comma separators | 2024.1 | |
step modifier for linear clause | 2024.1 | |
deprecate the linear-modifier(list) syntax for linear clause | 2024.1 |
OpenMP 6.0 TR11
Feature | Available from ICX version? | Comments |
interop clause for dispatch | 2023.0 | Intel-proposed feature in OMP6.0/TR11. 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/TR11 |
local clause for declare target | 2023.2 | |
groupprivate directive | 2023.2 | |
omp_target_memset() | 2024.2 | |
omp_target_memset_async() | 2024.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 |
ompx_assert clause for simd | 2023.0 | The classic compiler (icc) supported an assert clause, a similar extension |
need_device_ptr clause for dispatch to support variadic functions | 2023.1 | Proposed to be part of OpenMP 6.0 spec |
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