We have already described most of the important language features
we propose to implement. Two additional features that are quite important in
practice but have not been discussed are subranges and subgroups. A subrange is simply a range which is a regular section of
some other range, created by syntax like x [0 : 49]. Subranges
are created tacitly when a distributed array is subscripted with a
triplet, and they can also be used directly to create distributed
arrays with general HPF-like alignments. A subgroup is some
slice of a process array, formed by restricting process coordinates in
one or more dimensions to single values. Again they may be created
implicitly by section subscripting, this time using a scalar subscript.
They also formally describe the state of the active process group
inside at and over constructs.
The framework described is much more powerful than space allows us to demonstrate in this paper. This power comes in part from the flexibility to add features by extending the libraries associated with the language. We have only illustrated the simplest kinds of distribution format. But any HPF 1.0 array distribution format, plus various others, can be incorporated by extending the Range hierarchy in the run-time library. We have only illustrated shift and writeHalo operations from the communication library, but the library also includes much more powerful operations for remapping arrays and performing irregular data accesses. Our intention is to provide minimal language support for distributed arrays, just enough to facilitate further extension through construction of new libraries.
For a more complete description of a slightly earlier version of the proposed language, see [4].