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

By Sravani Konda,

Published: 04/23/2021   Last Updated: 07/12/2021

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.

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 of support for OpenMP 5.0 features beyond OpenMP 4.5

Feature 2021.1 2021.2 2021.3 Comments
requires directive for unified_shared_memory Yes Yes Yes  
declare variant subset to support target variant dispatch (an Intel extension) Yes Yes Yes  
teams without enclosing target Yes Yes Yes  
canonical loop: allow != Yes Yes Yes  
default nonmonotonic schedule Yes Yes Yes  
nontemporal and order(concurrent) clauses for SIMD Yes Yes Yes  
loop construct Yes Yes Yes  
task/taskloop in_reduction Yes Yes Yes  
taskgroup task_reduction Yes Yes Yes  
allocate directive, allocate/allocator clauses Yes Yes Yes  
use_device_addr clause Yes Yes Yes  
nested declare target constructs in C/C++ Yes Yes Yes  
master taskloop
parallel master
parallel master taskloop
master taskloop simd
parallel master taskloop simd
Yes Yes Yes  
teams loop Yes Yes Yes  
acq_rel, acquire, release clauses for atomic and flush Yes Yes Yes  
relaxed and hint clauses for atomic Yes Yes Yes  
conditional lastprivate Yes Yes Yes  
close map-type-modifier Yes Yes Yes  
defaultmap extensions Yes Yes Yes  
omp_get_supported_active_levels Yes Yes Yes  
omp_set_affinity_format
omp_get_affinity_format
omp_display_affinity
and omp_capture_affinity
OMP_DISPLAY_AFFINITY
OMP_AFFINITY_FORMAT
Yes Yes Yes  
omp_get_device_num Yes Yes Yes  

omp_pause_resource

omp_pause_resource_all

Yes Yes Yes  
OMP_TARGET_OFFLOAD Yes Yes Yes  
OMPT support Yes Yes Yes  
scan No No No  
Metadirectives No No No  
in, out, and inout dependence-type Yes Yes Yes  
mutexinoutset and depobj dependence-type No No No  
detach clause No No No  
declare mapper No No Yes  
depend clause on taskwait No No No  
depobj directive No No No  
iterators No No No  
OMP_ALLOCATOR Yes Yes Yes  
OMP_DEBUG Yes Yes Yes

Host: Supported

Device: Not Supported

OMP_TOOL

OMP_TOOL_LIBRARIES

omp_control_tool

Yes Yes Yes

Host: Supported

Device: Minimal Support

OpenMP 5.1

The following are OpenMP 5.1 features supported beyond OpenMP 5.0

Feature  2021.1 2021.2 2021.3
dispatch No No Yes
declare variant subset to support dispatch No No Yes
interop No No Yes
thread_limit clause for target Yes Yes Yes
OMP_DISPLAY_ENV Yes Yes Yes

OMP_NUM_TEAMS

OMP_TEAMS_THREAD_LIMIT

Yes Yes Yes

Extensions

Extension  2021.1 2021.2 Comments
target variant dispatch construct Yes Yes Became the OMP5.1 dispatch construct
Unified Shared Memory runtime APIs: omp_target_alloc_host, omp_target_alloc_shared, omp_target_alloc_device Yes Yes 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 2021.1 Developer Guide and Reference

OpenMP* Features Implemented in Intel® Fortran and C++ Compiler Classic

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.