Q. Describe target processor arrangements?
Having seen how to describe one or more target processor arrangements we need to initiate mechanisms for distributing data arrays over those arrangements. The DISTRIBUTE directive is used to distribute a data object on an abstract processor array.
The syntax of a DISTRIBUTE directive is:
!HPF$ DISTRIBUTE array_lists [ONTO arrayp]
where array_list is the list of array to be distributed and arrayp is abstract processor array.
The ONTO specifier can be used to carry out a distribution across a specific processor array. If any processor array is not specified one is automatically chosen by compiler.
HPF permits arrays to be distributed over the processors directly however it is frequently more suitable to go through intermediary of an explicit template. A template can be declared in much the similar way like processor arrangement.
!HPF$ TEMPLATE T(50, 50, 50)
Declares a 50 by 50 by 50 three-dimensional template known as T. Having declared it we are able to establish a relation amid some processor arrangement and a template by employing DISTRIBUTE directive. There are 3 ways in that a template can be distributed over Processors: Block, cyclic and *.
(a) Block Distribution
Simple block distribution is specified by
!HPF$ DISTRIBUTE T1(BLOCK) ONTO P1
Where T1 is a template and P1 is a processor arrangement.
In this case every processor gets a contiguous block of template elements. All processors obtain the similar sized block. The final processor can get lesser sized block.