It will be possible to distribute objects onto subsets of processors and to specify that a particular assignment is executed on a particular processor.
Allows the compiler to be informed of the best location to perform a computation, in effect, the ON directive allows the ``owner-computes rule'' to be overridden. The ON directive may specify a single processor or a subset of processors (which introduces the concept of ``active processor set'') and may also include a HOME expression to denote that the processor(s) which owns a particular element (or set of elements) should perform the calculation.
The RESIDENT clause can be used in conjunction with the ON directive and identifies variables that are resident on the current active processor set. In other words, all the objects listed in the RESIDENT clause are local to the processor subset specified by the surrounding ON directive; processors absent from this subset will not have to partake in any communication required by the calculations in the ON block -- they can perform an entirely separate task.
The provision of TASK_REGION blocks allows parallel sections (two disjoint subsets of processors performing different tasks at the same time), nested parallelism (nested TASK_REGION s can further subdivide an active processor set to form a tree of independent tasks) and data parallel pipelines (the results from one processor subset can be piped into a different disjoint set thus forming a pipeline).
SORT_UP and SORT_DOWN procedures are added to the library. Some procedures have been slightly modified.
A generalised (ie, multi-dimensional) TRANSPOSE has been introduced which accepts an input array and a 1-D vector that specifies the axis permutation.
In order that the active processor set can be determined during execution, two new intrinsics, ACTIVE_NUM_PROCS and ACTIVE_PROCS_SHAPE\ have been added. Additions to the existing mapping inquiry procedures have also been made to take account of the new distribution methods.
Allow I/O to be performed whilst the program is executing. An extension to the OPEN statement configures a particular unit for asynchronous transfer and a new command, WAIT, forces execution to suspend until the previously invoked I/O has terminated.
Return to corresponding overview page