252
M. Sato et al.
users to write easily the multi-tasking execution for clusters by only using language
constructs.
3.2 A Proposal for Global Task Parallel Programming
In order to support multi-tasking execution for distributed memory parallel systems,
we need to perform point-to-point communication within tasks in local task
dependency graphs. While XMP provides some directives for communication, many
of these are performed collectively, and cause an implicit synchronization among
execution nodes. This causes a performance degradation, because tasks participating
in communications, such as broadcast, wait for synchronization until all tasks
are completed. For XMP 2.0, we propose two directives, tasklet gmove and
tasklet reflect, as shown in Fig. 5, to describe interactions between nodes
in tasks by point-to-point communication, for inter-node data dependency. These
communications are only synchronized between the sender and receiver of the
communication in each task.
These details are as follow:
tasklet gmove directive: Although this copies the variable from the righthand side (RHS) into the left-hand side (LHS) of the associated assignment
statement for local or distributed data like the gmove directive, it is executed in
tasks. The copy operation is basically performed on all execution nodes. However, if
the distributed array is specified at the associated assignment statement, only nodes
with the distributed array execute the operation in the task. The execution nodes can
also be determined by the on clause. When the in, out, or inout clause is present
on the tasklet gmove directive, the generated task has the corresponding data
dependency in a node, similar to the tasklet directive.
tasklet reflect directive: Although this updates halo regions of the array
specified to array-name as in the reflect directive, it is executed in tasks.
For example, when updating one side of a halo region for a one-dimensional
distributed array on two nodes, these communications are separated into four tasks:
the sender of the upper element on node 1, the receiver of the upper halo region
on node 1, the sender of the lower element on node 2, and the receiver of the
lower halo region on node 2. In this directive, data dependency is automatically
added to these generated tasks based on the communication data, because the
boundary index of the distributed array is dynamically determined by the XMP
Fig. 5 Syntax of the
tasklet gmove and
tasklet reflect
directives in XMP
Précédent

- 255/265

Suivant