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 the Intel® oneAPI DPC++/C++ Compiler. 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 5.2

Features from almost all of the OpenMP 5.2 specification (which includes all OpenMP versions before it) are supported. Some OpenMP 5.2 features that are not fully supported include dynamic context selectors, reverse offload, collapse of triangular loops, and scan reduction for the composite for simd construct.

OpenMP 6.0

FeatureCompiler VersionComments
interop clause for dispatch2023.0Intel-proposed feature in OMP6.0. Enables interoperability with libraries that may or may not use OpenMP offloading.
prefer_type(preference-list) in append_args clause2023.0Intel-proposed feature in OMP6.0
local clause for declare target2023.2 
groupprivate directive2023.2 
underscore form of multi-word constructs2026.0 
array section allows omission of length2026.0 
default clause for target and target_data2026.0 
implicitly-declared reduction identifiers for class-type variables2026.0 
map-type modifiers can be specified without a map-type2025.0 
need_device_addr modifier for adjust_args clause2025.3 
put declare_target at same scope as declaration of its list items2026.0 
interchange loop transformation construct, permutation clause2025.1 
reverse loop transformation construct2026.2 
stripe loop transformation construct2025.2Intel-proposed feature in OMP6.0. Useful for tuning GPU offloads by strip-mining the loop.
if clause for teams2025.0 
loop-transformation constructs allowed in loop constructs2025.3 
atomic is allowed in constructs with order(concurrent) specified2025.3 
threadset clause for task and taskloop2026.2 
device_type( host | nohost | any ) clause for target2025.0 
prefer_type new syntax to support attributes/properties2026.2Intel-proposed feature in OMP6.0
nowait can take an optional nonconstant argument2025.2 
transparent clause for task and taskloop2026.2 
omp_is_free_agent() and omp_ancestor_is_free_agent()2026.2 
omp_target_memset() and omp_target_memset_async()2024.2 
new routines to get host/device memory spaces2024.1 
omp_get_memspace_num_resources()2024.1 
omp_get_submemspace()2024.1 
new routines to get host/device memory allocators2024.1 
“_ALL” suffix on an environment var affects both host and device2025.0 
Support abstract names for OMP_THREAD_LIMIT, OMP_TEAMS_THREAD_LIMIT, OMP_NUM_THREADS, and OMP_PLACES2025.0 
environment variable OMP_AVAILABLE_DEVICES2025.0 
Extend the environment variable OMP_DEFAULT_DEVICE to support device selection by traits2025.0 
environment variable OMP_THREADS_RESERVE2026.2 

OpenMP 6.1 (TR15)

FeatureCompiler VersionComments
fallback modifier for need_device_ptr2026.0Intel-proposed feature in OMP6.1

Extensions

ExtensionCompiler VersionComments
omp_target_alloc_host, omp_target_alloc_shared, omp_target_alloc_device2021.1Unified Shared Memory runtime APIs
prefetch directive and data clause2023.0Performance feature for GPU
ompx_assert clause for simd2023.0Compiler asserts if the simd loop is not vectorized
need_device_ptr clause for dispatch to support variadic functions2023.1Needed for variadic function support
ompx_sub_group_size clause for target2025.0Chooses the kernel’s SIMD width

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

1