In a programming language, array elements are corresponding to an integer sequence, for example in Java, we have
int a = new int;
then, when accessing the array, we use an index in the sequence,
for (int i=0; i<a.length; i++) ...a[i]...
In fact, we have two concepts here, an index i and a range where the index can be chosen from, specified by length. They are both of type int.
When describing an array with position information, we need two new build-in classes in HPJava to represent those two concepts,
Range x = new BlockRange(100, p.dim(0)) ; Range y = new CyclicRange(200, p.dim(1)) ;
will create two ranges on the different process dimensions of Group p, one is block distributed, the other is cyclic distributed. We will further explain the function dim and the meaning of block and cyclic range in section 2.1.4.
We can get 100 different items as Location references mapped by the range x from integers, for example, the first one is,
Location i = x|0;
here ``|'' is an operator defined on Rang and int.
When mapping a location reference from a range by an integer, its order or rank in the range is used. We can also get this integer value from an inquiry function in Range class.
int order = x.id(i);
will assign variable order to 0.