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

ID 659957
Updated 3/17/2023
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 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