- ...
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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.