- Level:
A non-negative integer, characteristic of any range.
- Primitive range:
The range of a process dimension. The global subscripts are
simply the coordinates of the process dimension.
A primitive range has level 0.
- Subrange:
A range defined as a (strided) subinterval of some parent range.
A subrange retains an alignment relation to the
parent range--the mapping of a subrange element to the process
dimension is the same as that of the corresponding element of the
parent range. Subranges can be used to implement the general
alignment options of HPF.
The level of a subrange is the same as the level of the parent range.
- Template range:
A range that is not a subrange of any range except itself.
Template ranges thus include primitive ranges, block-distributed ranges
with (in HPF terms) identity alignment, and cyclic-distributed ranges
with identity alignment.
Template ranges can be used to represent the dimensions of an HPF
template.
- Parent template range:
Any range is a subrange of its unique parent template.
- Kernel range: Any range of level higher than 0 is distributed
over some kernel range.
The level of a range's kernel one less than range's own level. For
example, the kernel of a range with HPF-like block distribution or
simple cyclic distribution is a primitive range--a process-dimension
range. The kernel of a range with HPF-like block-cyclic distribution,
on the other hand, is a range with simple cyclic distribution.
- Global subscript: The primary subscript associated with a range.
A value from the interval
size() - 1. Sometimes just
called the subscript.
- Template subscript: For any element of a range, the associated
global subscript in the parent template range.
- Kernel subscript: For any element of a range, the associated
global subscript in the kernel range (for level 1 ranges this is the
process coordinate).
- Block: The section of a range associated with a particular fixed
value of the kernel subscript (for level 1 ranges, the section of the
range mapped to a particular process coordinate). Any
element of the range lies in a particular block. Note that elements of
a block need not have contiguous global subscripts--in cyclic
distribution format, adjacent elements of the block have template
subscript differing by the extent of the kernel.
- Shell subscript: For any element of a range, a subscript
identifying the position of the element within its own block.
In general there is a one-to-one mapping between between
legal kernel-subscript/shell-subscript pairs and legal template
subscripts.