Intel® oneAPI DPC++/C++ Compiler

Developer Guide and Reference

ID 767253
Date 3/31/2025
Public
Document Table of Contents

Supported OpenMP* Pragmas

This is a summary of the OpenMP* pragmas supported in the Intel® oneAPI DPC++/C++ Compiler. For detailed information about the OpenMP API, see the OpenMP Application Program Interface Version 5.1 specification, which is available from the OpenMP web site.

This topic has an alphabetical list of supported OpenMP pragmas and after that list, it shows categories for the supported OpenMP pragmas.

Alphabetical List of Supported OpenMP* Pragmas

The Intel oneAPI DPC++/C++ Compiler currently supports OpenMP* 5.0 Version TR4, and some OpenMP Version 5.1 pragmas. Supported pragmas are listed below. For more information about these pragmas, reference the OpenMP* Version 5.1 specification.

Intel-specific clauses, if any, are noted in the affected pragma description.

Pragma

Description

omp allocate

Specifies memory allocators to use for object allocation and deallocation.

omp atomic

Specifies a computation that must be executed atomically.

omp barrier

Specifies a point in the code where each thread must wait until all threads in the team arrive.

omp cancel

Requests cancellation of the innermost enclosing region of the type specified, and causes the encountering task to proceed to the end of the cancelled construct.

omp cancellation point

Defines a point at which implicit or explicit tasks check to see if cancellation has been requested for the innermost enclosing region of the type specified. This construct does not implement a synchronization between threads or tasks.

Categories of Supported OpenMP* Pragmas

The following tables show the categories of the supported OpenMP pragmas.

Parallelism

OpenMP* Pragma

Use this pragma to form a team of threads and execute those threads in parallel.

omp parallel

Tasking

OpenMP* Pragmas

Use these pragmas for deferring execution.

omp task

omp taskloop

Worksharing

OpenMP* Pragmas

Use these pragmas to share work among a team of threads.

omp for

omp loop

omp scope

omp sections

omp single

Synchronization

OpenMP* Pragmas

Use these pragmas to synchronize between threads.

omp atomic

omp barrier

omp critical

omp flush

omp masked

omp master (deprecated, see omp masked)

omp ordered

omp taskgroup

omp taskwait

omp taskyield

Data Environment

OpenMP* Pragma

Use this pragma to affect the data environment.

omp threadprivate

Offload Target Control

OpenMP* Pragmas

Use these pragmas to control execution on one or more offload targets.

omp declare target

omp declare variant

omp dispatch

omp distribute

omp interop

omp requires

omp target

omp target data

omp target enter data

omp target exit data

omp target update

omp teams

Use these pragmas to control execution on vector hardware.

Vectorization

OpenMP* Pragmas

Use these pragmas to control execution on vector hardware.

omp scan

omp simd

omp declare simd

Cancellation

OpenMP* Pragmas

Use these pragmas to cancel an innermost enclosing region or to check if cancellation is in effect.

omp cancel

omp cancellation point

User-Defined Reduction

OpenMP* Pragma

Use this pragma to define reduction identifiers that can be used as reduction operators in a reduction clause.

omp declare reduction

Memory Space Allocation

OpenMP* Pragma

Use this declarative directive to allocate memory space.

omp allocate

Combined and Composites

OpenMP* Pragmas

Use these pragmas as shortcuts for multiple pragmas in sequence.

Combined constructs: These are shortcuts for specifying one construct immediately nested inside another construct. This kind of construct is semantically identical to that of explicitly specifying the first construct containing one instance of the second construct and no other statements.

Composite construct: These constructs are composed of two constructs but they do not have identical semantics to specifying one of the constructs immediately nested inside the other. This kind of construct either adds semantics not included in the constructs from which it is composed or the nesting of the one construct inside the other is not conforming.

omp distribute parallel for 1

omp distribute parallel for simd1

omp distribute simd 1

omp for simd1

omp parallel for

omp parallel for simd

omp parallel sections

omp target parallel

omp target parallel for

omp target parallel for simd

omp target parallel loop

omp target simd

omp target teams

omp target teams distribute

omp target teams distribute parallel for

omp target teams distribute parallel for simd

omp target teams distribute simd

omp target teams loop

omp taskloop simd 1

omp teams distribute

omp teams distribute parallel for

omp teams distribute parallel for simd

omp teams distribute simd

omp teams loop

1 This is a composite construct.