... SPMD1
Single Program, Multiple Data
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... separate2
The run-time representation of our multi-dimensional arrays includes extra descriptor information that would simply encumber the large class ``non-scientific'' Java applications.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... though3
For example, c allows section subscripting, whereas d does not.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... entities4
Unless a section appears as an actual argument to a procedure, in which case the dummy argument names that section, or it is the target of a pointer assignment.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... group5
There is no cooperation between the two constructor calls for p and q, so an individual physical process might occur in both groups or in neither. As an option not illustrated here, vectors of ids can be passed to the Procs constructors to specify exactly which processes are included in a particular group.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... group6
The on clause can be omitted in some circumstances--see section 5.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... operation7
In fact it is neccessary to use a shift and copy operation because the source and destination arguments of shift must be distinct arrays. In the comment explaining the inner block matrix multiplication, by the way, the symbol b' means the original unshifted value of the array b.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... dimension8
Other higher-level ranges include CyclicRange, which produces the equivalent of CYCLIC distribution formation in HPF.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... subscript9
But the effect of such subscripting is only well-defined inside an over construct parametrised by the index in question.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... communications10
Laplace's equation with cyclic boundary conditions is not particularly useful, but it illustrates the language features. More interesting boundary conditions can easily be incorporated later. Incidentally, this is a suitable place to mention that the array arguments of shift must be aligned arrays--they must have identical distributed ranges.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... arrays11
Incidentally, subranges, and particularly strided subranges, introduce an ambiguity in the definition of the shift operators + and - on locations. Is the numeric shift measured terms of subscript relative to the subrange or of the parent range? As a matter of definition, the shift is always in terms of subscript in the template range--the ultimate parent from which a subrange is derived (by zero or more stages of triplet subscripting).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.