Intel® Fortran Compiler XE 13.1 User and Reference Guides
OFFLOAD Compiler Directive: Specifies a wait for a previously initiated asynchronous activity. This directive only applies to Intel® MIC Architecture.
!DIR$ OFFLOAD_WAIT specifier[[,] specifier...]
specifier |
Can be any of the following:
|
The following arguments are used in the above specifier items:
target-name |
Is an identifier that represents the target. The only allowable target name is MIC. |
||||
target-number |
Is an integer expression whose value is interpreted as follows:
If you don't specify this argument, the runtime system chooses whether to execute the code on the CPU or the coprocessor, and if multiple coprocessors are available, on which coprocessor. For example, in a system with 4 coprocessors:
|
||||
if-specifier |
Is a Boolean expression. If the expression evaluates to true, then execution waits for the completion of a previously initiated asynchronous data transfer or asynchronous computation. If the specified target coprocessor is absent from the system or not available at that time because it is fully loaded, then no action is taken. If the expression evaluates to false, then no action is taken and none of the other offload clauses have any effect. |
||||
tag |
Is a scalar integer variable. It cannot have the ALLOCATABLE or the POINTER attribute. When used with WAIT, tag is a memory reference; it is associated with a previously initiated asynchronous computation or asynchronous data transfer. Use the tag that you specified to start the asynchronous computation or data transfer with the OFFLOAD or OFFLOAD_TRANSFER directive. |
The OFFLOAD_WAIT directive specifies a wait for the completion of a previously initiated asynchronous data transfer done by the OFFLOAD_TRANSFER directive, or an asynchronous computation and return data transfer, if any, done by the OFFLOAD directive.
The WAIT clause refers to a specific target device, so you must specify target-number in the TARGET clause. If you query a signal before the signal has been initiated, it results in undefined behavior and a runtime abort of the application. For example, if you query a signal (SIG1) on target device 0 that was initiated for target device 1, it results in a runtime abort of the application. This is because the signal (SIG1) was initiated for target device 1, so there is no signal (SIG1) associated with target device 0.
See the example in OFFLOAD.