- ... array1
- The distributed arrays are orthogonal
to the sequential arrays of the base language--we deliberately
keep them completely separate.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... array2
- For a sequential dimension the result of rng(r) is a member of the subclass CollapsedRange.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... as3
- The expression x[0] is ``pure syntax'' in HPJava.
There is no Java type associated with a location
and no way to store a location value in a variable. The only named
locations in HPJava are the bound locations scoped by overall
(and at--see section 7).
Besides group restrictions, expressions like x[0] can legally appear
as array section subscripts or in the header of an at construct.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... array4
- We can relax this restriction slightly by adding rules for
identifying locations in certain closely related ranges.
For example it is very natural to regard the locations in a subrange
to be a subset of the locations in the parent range.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... is5
- As a matter of definition, for a shifted location
.
The rationale is that a shifted location is supposed to find an array
element in the same process as the original location (albeit that
the element could be in a ghost region).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... loops6
- Both examples would probably lead to inefficient translated
code anyway, because various other computations associated with element
reference cannot be lifted out of loops.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... header7
- We emphasize that the problem here is not with appearance of
conditional code in general inside an overall construct--it is only
with use of conditional code to mask element references otherwise
forbidden by range-checking considerations.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...8
- Dependence of the array expression on field variables
(effectively global variables) may frustrate this analysis, if method
calls also appear inside the loops.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...apg9
- The variable apg is not a conventional Java global
variable. It is more closely akin to the this expression of
Java. It will be passed to HPJava-aware methods through a hidden
argument.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
property10
- Examples of methods that do not respect
coherence include functions like MPI_Comm_rank, which return
results intrinsically dependent on process id.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.