OpenMP* Features and Extensions Supported in Intel® oneAPI DPC++/C++ Compiler
Published: 01/29/2021
Last Updated: 05/10/2022
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 | No | |
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 | |
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 |
OpenMP 5.1
The following are OpenMP 5.1 features supported beyond OpenMP 5.0
Feature | Available from ICX version? |
---|---|
Align clause/modifier | 2021.4 |
dispatch | 2021.3 |
declare variant subset to support dispatch | 2021.3 |
interop | 2021.3 |
Scope | 2022.0 |
thread_limit clause for target | 2021.1 |
tile construct | 2022.1 |
OMP_DISPLAY_ENV | 2021.1 |
OMP_NUM_TEAMS OMP_TEAMS_THREAD_LIMIT |
2021.1 |
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 |
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
Product and Performance Information
Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.