Developer Guide and Reference

Contents

Intel-supported Pragma Reference

The
Intel® oneAPI
DPC++/C++
Compiler
supports the following pragmas to ensure compatibility with other compilers.

Pragmas Compatible with the Microsoft* Compiler

The following pragmas are compatible with the Microsoft Compiler. For more information about these pragmas, go to the Microsoft Developer Network (http://msdn.microsoft.com).
Pragma
Description
alloc_text
Names the code section where the specified function definitions are to reside.
auto_inline
Excludes any function defined within the range where
off
is specified from being considered as candidates for automatic inline expansion.
bss_seg
Indicates to the compiler the segment where uninitialized variables are stored in the
.obj
file.
check_stack
The
on
argument indicates that stack checking should be enabled for functions that follow and the
off
argument indicates that stack checking should be disabled for functions that follow.
code_seg
Specifies a code section where functions are to be allocated.
comment
Places a comment record into an object file or executable file.
component
Controls collecting of browse information or dependency information from within source files.
conform
Specifies the run-time behavior of the
/Zc
:
forScope
compiler option.
const_seg
Specifies the segment where functions are stored in the
.obj
file.
data_seg
Specifies the default section for initialized data.
deprecated
Indicates that a function, type, or any other identifier may not be supported in a future release or indicates that a function, type, or any other identifier should not be used any more.
fenv_access
Informs an implementation that a program may test status flags or run under a non-default control mode.
float_control
Specifies floating-point behavior for a function.
fp_contract
Allows or disallows the implementation to contract expressions.
loop
Controls how the loop code will be considered or excluded from consideration by the auto-vectorizer.
init_seg
Specifies the section to contain C++ initialization code for the translation unit.
message
Displays the specified string literal to the standard output device (
stdout
).
optimize
Specifies optimizations to be performed on functions below the pragma or until the next optimize pragma; implemented to partly support the Microsoft implementation of same pragma; for the
Intel oneAPI
DPC++/C++
Compiler
implementation, see the
optimize
reference page.
pointers_to_members
Specifies whether a pointer to a class member can be declared before its associated class definition and is used to control the pointer size and the code required to interpret the pointer.
pop_macro
Sets the value of the specified macro to the value on the top of the stack.
push_macro
Saves the value of the specified macro on the top of the stack.
region/endregion
Specifies a code segment in the Microsoft Visual Studio* Code Editor that expands and contracts by using the outlining feature.
section
Creates a section in an
.obj
file. Once a section is defined, it remains valid for the remainder of the compilation.
vtordisp
The
on
argument enables the generation of hidden
vtordisp
members and the
off
disables them.
push
argument pushes the current
vtordisp
setting to the internal compiler stack.
pop
argument removes the top record from the compiler stack and restores the removed value of
vtordisp
.
warning
Allows selective modification of the behavior of compiler warning messages.
weak
Declares symbol you enter to be weak.

OpenMP* Standard Pragmas

The
Intel oneAPI
DPC++/C++
Compiler
currently supports OpenMP* 5.0 Version TR4, and some OpenMP Version 5.1 pragmas. Supported pragmas are isted below. For more information about these pragmas, reference the OpenMP* Version 5.1 specification.
Intel-specific clauses 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.
omp critical
Specifies a code block that is restricted to access by only one thread at a time.
omp declare reduction
Declares User-Defined Reduction (UDR) functions (reduction identifiers) that can be used as reduction operators in a reduction clause.
omp declare simd
Creates a version of a function that can process multiple arguments using Single Instruction Multiple Data (SIMD) instructions from a single invocation from a SIMD loop.
omp declare target
Specifies functions and variables that are created or mapped to a device.
omp distribute
Specifies that the iterations of one or more loops should be distributed among the master threads of all thread teams in a league.
omp distribute parallel for
Specifies a loop that can be executed in parallel by multiple threads that are members of multiple teams.
omp distribute parallel for simd
Specifies a loop that will be executed in parallel by multiple threads that are members of multiple teams. It will be executed concurrently using SIMD instructions.
omp distribute simd
Specifies a loop that will be distributed across the master threads of the teams region. It will be executed concurrently using SIMD instructions.
omp flush
Identifies a point at which the view of the memory by the thread becomes consistent with the memory.
omp for
Specifies a parallel loop. Each iteration of the loop is executed by one of the threads in the team.
omp for simd
Specifies that the iterations of the loop will be distributed across threads in the team. Iterations executed by each thread can also be executed concurrently using SIMD instructions.
omp inclusive_scan
Specifies that scan computations update the list items on each iteration.
omp master
Specifies the beginning of a code block that must be executed only once by the master thread of the team.
omp ordered
Specifies a block of code that the threads in a team must execute in the natural order of the loop iterations.
omp ordered simd
Specifies a block of code in the SIMD loop or SIMD-enabled function that should be executed serially, in a logical order of SIMD lanes.
omp ordered simd monotonic
Specifies a block of code in which the value of the new list item on each iteration of the associated SIMD loop(s) corresponds to the value of the original list item before entering the associated loop, plus the number of the iterations for which the conditional update happens prior to the current iteration, times linear-step. The value corresponding to the sequentially last iteration of the associated loop(s) is assigned to the original list item.
omp ordered simd overlap
Specifies a block of code that has to be executed scalar for overlapping
inx
values and parallel for different
inx
values within SIMD loop.
omp parallel
Specifies that a structured block should be run in parallel by a team of threads.
omp parallel for
Provides an abbreviated way to specify a parallel region containing a single FOR construct.
omp parallel for simd
Specifies a parallel construct that contains one for simd construct and no other statement.
omp parallel sections
Specifies a parallel construct that contains a single sections construct.
omp sections
Defines a region of structured blocks that will be distributed among the threads in a team.
omp simd
Transforms the loop into a loop that will be executed concurrently using SIMD instructions.
omp single
Specifies that a block of code is to be executed by only one thread in the team at a time.
omp target
Creates a device data environment and executes the construct on that device.
omp target data
Specifies that variables are mapped to a device data environment for the extent of the region.
omp target enter data
Specifies that variables are mapped to a device data environment.
omp target exit data
Specifies that variables are unmapped from a device data environment. .
omp target teams
Creates a device data environment and executes the construct on the same device. It also creates a league of thread teams with the master thread in each team executing the structured block.
omp target teams distribute
Creates a device data environment and then executes the construct on that device. It also specifies that loop iterations will be distributed among the master threads of all thread teams in a league created by a
teams
construct.
omp target teams distribute parallel for
Creates a device data environment and then executes the construct on that device. It also specifies a loop that can be executed in parallel by multiple threads that are members of multiple teams created by a
teams
construct.
omp target teams distribute parallel for simd
Creates a device data environment and then executes the construct on that device. It also specifies a loop that can be executed in parallel by multiple threads that are members of multiple teams created by a
teams
construct. The loop will be distributed across the teams, which will be executed concurrently using SIMD instructions.
omp target teams distribute simd
Creates a device data environment and then executes the construct on that device. It also specifies that loop iterations will be distributed among the master threads of all thread teams in a league created by a teams construct. It will be executed concurrently using SIMD instructions.
omp target update
Makes the items listed in the device data environment consistent between the device and host, in accordance with the motion clauses on the pragma.
omp task
Specifies the beginning of a code block whose execution may be deferred.
omp taskgroup
Causes the program to wait until the completion of all enclosed and descendant tasks.
omp taskwait
Specifies a wait on the completion of child tasks generated since the beginning of the current task.
omp taskyield
Specifies that the current task can be suspended at this point in favor of execution of a different task.
omp teams
Creates a league of thread teams inside a target region to execute a structured block in the master thread of each team.
omp teams distribute
Creates a league of thread teams to execute the structured block in the master thread of each team. It also specifies that loop iterations will be distributed among the master threads of all thread teams in a league created by a
teams
construct.
omp teams distribute parallel for
Creates a league of thread teams to execute a structured block in the master thread of each team. It also specifies a loop that can be executed in parallel by multiple threads that are members of multiple teams.
omp teams distribute parallel for simd
Creates a league of thread teams to execute a structured block in the master thread of each team. It also specifies a loop that can be executed in parallel by multiple threads that are members of multiple teams. The loop will be distributed across the master threads of the teams region, which will be executed concurrently using SIMD instructions.
omp teams distribute simd
Creates a league of thread teams to execute the structured block in the master thread of each team. It also specifies a loop that will be distributed across the master threads of the teams.
omp threadprivate
Specifies a list of globally-visible variables that will be allocated private to each thread.

Pragmas Compatible with Other Compilers

The following pragmas are compatible with other compilers. For more information about these pragmas, see the documentation for the specified compiler.
Pragma
Description
include_directory
HP-compatible pragma. It appends the string argument to the list of places to search for
#include
files.
poison
GCC-compatible pragma. It labels the identifiers you want removed from your program; an error results when compiling a
"poisoned" identifier; #pragma POISON
is also supported.
options
GCC-compatible pragma; It sets the alignment of fields in structures.
weak
GCC-compatible pragma, it declares the symbol you enter to be weak.

Product and Performance Information

1

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