Dimension splitting is defined as an extension of the
array section. The extra syntax is minimal, but the effect is
useful.
So far, we have identified a specific element by giving a
global subscript in the distributed range. Alternatively,
dimension splitting supports for accessing an element using its
process coordinate and local subscript
, by allowing a
distributed dimension of an array to be temporarily treated as
two dimensions.
If a particular dimension of an array section has the symbol <>
as a subscript, the dimension of the array section is supposed to be
split. Splitting a dimension creates two dimensions, a distributed
dimension and a sequential dimension. The range of the distributed
dimension is the process dimension over which the original array
dimension was distributed. The local block of the original array is
embedded in the sequential dimension of the result array. The two new
dimensions appear consecutively in the signature of the result array,
distributed dimension first.
|
as and fs are semantically
sections of a and f, they share common
elements--they provide aliases through which the same element
variables can be accessed. So when the computation loop is complete,
the vector of forces can be accessed again through the one-dimensional
array f. This is likely to be what is needed in this case.
In Figure 3.19,