SummaryThe targetenterdata directive specifies that variables are mapped to a device data
environment. The targetenterdata directive is a stand-alone directive.
Syntax
The syntax of the targetenterdata construct is as follows:
BindingThe binding task set for a targetenterdata region is the generating task, which is the target
task generated by the targetenterdata construct. The targetenterdata region binds to the
corresponding target task region.
DescriptionWhen a targetenterdata construct is encountered, the list items are mapped to the
device data environment according to the map clause semantics.
The targetenterdata construct is a task generating construct. The generated task is a target task.
The generated task region encloses the targetenterdata region.
All clauses are evaluated when the targetenterdata construct is encountered. The data environment
of the target task is created according to the data-sharing attribute clauses on the targetenterdata
construct, per-data environment ICVs, and any default data-sharing attribute rules that apply to the
targetenterdata construct. A variable that is mapped in the targetenterdata
construct has a default data-sharing attribute of shared in the data environment of the target
task.
Assignment operations associated with mapping a variable (see Section 2.19.7.1 on page 939) occur when
the target task executes.
If the nowait clause is present, execution of the target task may be deferred. If the nowait clause is not
present, the target task is an included task.
If a depend clause is present, it is associated with the target task.
If no device clause is present, the default device is determined by the default-device-var ICV.
When an if clause is present and the if clause expression evaluates to false, the device is the
host.
Execution Model Events
Events associated with a target task are the same as for the task construct defined in Section 2.10.1 on
page 384.
The target-enter-data-begin event occurs when a thread enters a targetenterdata region.
The target-enter-data-end event occurs when a thread exits a targetenterdata region.
Tool CallbacksCallbacks associated with events for target tasks are the same as for the task construct
defined in Section 2.10.1 on page 384; (flags&ompt_task_target) always evaluates to true in the
dispatched callback.
A thread dispatches a registered ompt_callback_target callback with ompt_scope_begin as its
endpoint argument and ompt_target_enter_data as its kind argument for each occurrence of a
target-enter-data-begin event in that thread in the context of the target task on the host. Similarly, a thread
dispatches a registered ompt_callback_target callback with ompt_scope_end as its endpoint
argument and ompt_target_enter_data as its kind argument for each occurrence of a
target-enter-data-end event in that thread in the context of the target task on the host. These callbacks have
type signature ompt_callback_target_t.
Restrictions
A
program
must
not
depend
on
any
ordering
of
the
evaluations
of
the
clauses
of
the
targetenterdata
directive,
or
on
any
side
effects
of
the
evaluations
of
the
clauses.
At
least
one
map
clause
must
appear
on
the
directive.
At
most
one
device
clause
can
appear
on
the
directive.
The
device
clause
expression
must
evaluate
to
a
non-negative
integer
value
less
than
the
value
of
omp_get_num_devices()
or
to
the
value
of
omp_get_initial_device().
At
most
one
if
clause
can
appear
on
the
directive.
A
map-type
must
be
specified
in
all
map
clauses
and
must
be
either
to
or
alloc.
At
most
one
nowait
clause
can
appear
on
the
directive.
Cross References
default-device-var,
see
Section 2.5.1
on
page 172.