Visible to Intel only — GUID: GUID-B62C8973-43E4-436C-A867-6EC31BA9573C
Visible to Intel only — GUID: GUID-B62C8973-43E4-436C-A867-6EC31BA9573C
Clauses Used in Multiple OpenMP* Fortran Directives
This topic summarizes clauses that are used in more than one OpenMP* Fortran directive.
Other clauses (or keywords) are available for some OpenMP* Fortran directives. For more information, see each directive description.
Some of the OpenMP* Fortran directives have clauses (or options) you can specify to control the scope attributes of variables for the duration of the directive.
Name |
Description |
---|---|
Lets you specify a scope for all variables in the lexical extent of a parallel region. |
|
Provides a superset of the functionality provided by the PRIVATE clause. It declares one or more variables to be private to each thread in a team, and initializes each of them with the value of the corresponding original variable. |
|
Specifies that a task participates in a reduction. |
|
Provides a superset of the functionality provided by the PRIVATE clause. It declares one or more variables to be private to an implicit task, and causes the corresponding original variable to be updated after the end of the region. |
|
Specifies that all variables in a list are private to a SIMD task and that they have a linear relationship within the iteration space of a loop. |
|
Declares one or more variables to be private to each thread in a team. |
|
Specifies variables that will be shared by all the threads in a team. |
The data copying clauses let you copy data values from private or threadprivate variables in one implicit task or thread to the corresponding variables in other implicit tasks or threads in the team.
Name |
Description |
---|---|
Specifies that the data in the primary thread of the team is to be copied to the thread private copies of the common block at the beginning of the parallel region. |
|
Uses a private variable to broadcast a value, or a pointer to a shared object, from one member of a team to the other members. The COPYPRIVATE clause can only appear in the END SINGLE directive. |
The data motion clause MAP is used in OpenMP* Fortran TARGET directives. This data motion clause does not modify the values of any of the internal control variables (ICVs).
List items that appear in this data motion clause may have corresponding new list items created in the device data environment that is associated with the construct. If a new list item is created, a new list item of the same type, kind, and rank is allocated. The initial value of the new list item is undefined.
The original list items and new list items may share storage. This means that data races can occur. Data races are caused by unintended sharing of data; for example, when WRITEs to either item by one task or device are followed by a READ of the other item by another task or device without intervening synchronization.
Name |
Description |
---|---|
ALLOCATE (ifx only) |
Specifies the memory allocator to be used for one or more private variables or common blocks of a construct. This feature is only available for ifx. |
Maps a variable from the data environment of the current task to the data environment of the device associated with the construct. |
The following are other clauses that can be used in more than one OpenMP* Fortran directive.
Name |
Description |
---|---|
Specifies that all variables in a list are aligned. |
|
Specifies how many loops are associated with the loop construct. |
|
Enforces additional constraints on the scheduling of a task by enabling dependences between sibling tasks in the task region. |
|
Specifies the target device for certain TARGET directives. |
|
DEVICE_TYPE (ifx only) |
Specifies whether a version of a procedure or a copy of a data entity is to be available on a HOST device, a non-HOST device, or both. This feature is only available for ifx. |
Specifies that the generated task will be a final task. |
|
Specifies synchronization hints about a region to aid optimization. |
|
Specifies a conditional expression. If the expression evaluates to .FALSE., the construct is not executed. |
|
Specifies that the implementation may generate a merged task. |
|
Specifies that threads may resume execution before the execution of the region completes. |
|
ORDER (ifx only) |
Indicates that the iterations of the loop may execute in any order or simultaneously. For more information, see DO Directive, DISTRIBUTE, LOOP, and SIMD. This feature is only available for ifx. |
Specifies that the generated tasks have the indicated priority for execution. |
|
Performs a reduction operation on the specified variables. |
|
SUBDEVICE (ifx only) |
Specifies which tiles or compute slices (c-slices) of the offload device the offloaded code will run on. This feature is only available for ifx. |
THREAD_LIMIT (ifx only) |
Limits the number of threads that can participate in a construct. This feature is only available for ifx. |
Specifies that the task is never tied to the thread that started its execution. |