... group2.1
Called a rank in MPI. Following Fortran, we will reserve ``rank'' for the dimensionality of arrays or process arrays.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... array2.2
Their parent arrays must be described by the same object, not merely be structurally similar.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... array3.1
The process arrays must be described by the same object, not merely structurally similar process arrays.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... dimension3.2
This is different to a null range.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... memory4.1
There is a caveat--although all functions in the library will operate correctly regardless of majority, many of them are optimized to perform best on the assumption of first dimension most rapidly varying--the Fortran convention.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... memory4.2
To implement an array with last dimension most-rapidly varying one would simply reverse the order of construction of the dimension maps.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... objects4.3
An outer test may be needed, to see if the local process is a member of p (ie, of a_frm.grp())
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... array4.4
The offset pointer value is only valid on processes that hold part of the section, but it does no harm to do the addition on other processes. The value b_dat should never be used on processes where it is not valid--ie on processes outside the group p / i.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... equivalent4.5
A special feature is that alignment equivalence of ranges does not imply that the ranges must have the same layout options. So, for example, two arrays may be aligned even if one has ghost extensions and the other doesn't.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... 905.1
An exception is the MultiShift schedule, which was actually introduced to support the array syntax of C*.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... wraparound5.2
This option may lead to odd effects if the source array is actually a section with a triplet subscript. The updated cells, past the ends of the section, may actually reside in the physical segment of the parent array.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... array5.3
The communication pattern encoded in the constructed schedule depends on the detailed values of the subscript and mask arrays, whearas it does not depend the actual values in the source and destination arrays. This is why the element pointers for the subscripts and mask are passed to the constructor, whereas those for source and destination are not. Note that the constructed schedule holds an internally processed version of the subscript and mask information--it does not retain any pointers the input element arrays.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... range7.1
Here ``first element'' simply means first in the enumeration. It does not necessarily mean the local element with the smallest global subscript.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.