The fundamental model for allocation of data to abstract processors still remains a two-level mapping as described in
Section 3. However, it is extended to allow the dynamic remapping of the data objects as illustrated by the following diagram:
Thus, objects can be remapped at execution time using the executable directives REALIGN and REDISTRIBUTE. Any object that is the root of an alignment tree (i.e., is not explicitly aligned to another object) can be explicitly redistributed. Redistributing such an object causes all objects ultimately aligned with it also to be redistributed so as to maintain the alignment relationships.
Any object that is not a root of an alignment tree can be explicitly realigned but not explicitly redistributed. Such a realignment does not change the mapping of any other object. Note that such remapping of data may require communication among the processors.
By analogy with the Fortran ALLOCATABLE attribute, HPF includes the DYNAMIC attribute. It is not permitted to REALIGN an array that has not been declared DYNAMIC. Similarly, it is not permitted to REDISTRIBUTE an array or template that has not been declared DYNAMIC.
Saved local variables, variables in common, and variables accessed by use association must not be implicitly remapped (e.g., by having variable distribution formats or being aligned with entities having variable distribution formats). Of these three categories of variables, only variables accessed by use association may have the DYNAMIC attribute.
As in Section 3.1, an object is considered to be explicitly mapped if it appears in an HPF mapping directive within the scoping unit in which it is declared; otherwise it is implicitly mapped. The definition of a mapping directive in Section 3.1 is extended as follows: A mapping
directive is an ALIGN, DISTRIBUTE, INHERIT, DYNAMIC, RANGE, or SHADOW directive, or any directive that confers an alignment, a distribution, or the INHERIT, DYNAMIC, RANGE, or SHADOW attributes.