OpenMP* Features and Extensions Supported in Intel® oneAPI DPC++/C++ Compiler

ID 659957
Updated 6/21/2024
Version Latest
Public

author-image

By

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