next up previous contents
Next: HPF_TEMPLATE(ALIGNEETEMPLATE_RANK, LB, UB, Up: Specifications of Extended Library Previous: HPF_DISTRIBUTION(DISTRIBUTEEAXIS_TYPE,

AXIS_INFO,

HPF_DISTRIBUTION(DISTRIBUTEE, AXIS_TYPE, AXIS_INFO,
PROCESSORS_RANK, PROCESSORS_SHAPE, PLB, PUB, PSTRIDE,
LOW_SHADOW, HIGH_SHADOW)

Optional Arguments. AXIS_TYPE, AXIS_INFO, PROCESSORS_RANK,
PROCESSORS_SHAPE, PLB, PUB, PSTRIDE, LOW_SHADOW, HIGH_SHADOW.

Description. The HPF_DISTRIBUTION subroutine returns information regarding the distribution of the ultimate align-target associated with a variable.

Class. Mapping inquiry subroutine.

Arguments.

DISTRIBUTEE may be of any type. It may be scalar or array valued. It must not be sequential. It must not be a pointer that is disassociated or an allocatable array that is not allocated. It is an INTENT (IN) argument.

AXIS_TYPE (optional) must be a rank one array of type default character. It may be of any length, although it must be of length at least 9 in order to contain the complete value. Its elements are set to the values below as if by a character intrinsic assignment statement. Its size must be at least equal to the rank of the align-target to which DISTRIBUTEE is ultimately aligned; this is the value returned by HPF_TEMPLATE in TEMPLATE_RANK. It is an
INTENT (OUT) argument. Its i element contains information on the distribution of the i axis of that align-target. The following values are defined by HPF (implementations may define other values):

"0DBLOCK"0D
The axis is distributed BLOCK. The corresponding element of AXIS_INFO contains the block size.

"0DGEN_BLOCK"0D
The axis is distributed BLOCK(array). The value of the corresponding element of AXIS_INFO is implementation dependent.

"0DCOLLAPSED"0D
The axis is collapsed (distributed with the ``*'' specification). The value of the corresponding element of AXIS_INFO is implementation dependent.

"0DCYCLIC"0D
The axis is distributed CYCLIC. The corresponding element of AXIS_INFO contains the block size.

"0DINDIRECT"0D
The axis is distributed INDIRECT(map-array). The value of the corresponding element of AXIS_INFO is implementation dependent.

AXIS_INFO (optional) must be a rank one array of type default integer, and size at least equal to the rank of the align-target to which DISTRIBUTEE is ultimately aligned (which is returned by HPF_TEMPLATE in TEMPLATE_RANK). It is an INTENT (OUT) argument. The ith element of AXIS_INFO contains the block size in the block or cyclic distribution of the i axis of the ultimate align-target of DISTRIBUTEE; if that axis is a collapsed axis, then the value is implementation dependent.

PROCESSORS_RANK (optional) must be scalar and of type default integer. It is set to the rank of the processor arrangement onto which DISTRIBUTEE is distributed. It is an INTENT (OUT) argument.

PROCESSORS_SHAPE (optional) must be a rank one array of type default integer and of size at least equal to the value, m, returned in PROCESSORS_RANK. It is an INTENT (OUT) argument. Its first elements are set to the shape of the processor arrangement onto which DISTRIBUTEE is mapped. (It may be necessary to call HPF_DISTRIBUTION twice, the first time to obtain the value of PROCESSORS_RANK in order to allocate PROCESSORS_SHAPE.)

PLB (optional) must be a rank one array of type default integer and of size at least equal to the rank of the ultimate align-target of DISTRIBUTEE. It is an INTENT (OUT) argument. The ith element is set to the smallest processor index ONTO which the ith axis of the ultimate align-target of DISTRIBUTEE is mapped; if that axis is collapsed, then the corresponding element of PLB is implementation dependent. The value returned is in the range 1 to ei where ei is the extent of processor arrangement axis onto which the selected axis of the ultimate align-target of DISTRIBUTEE is mapped.

PUB (optional) must be a rank one array of type default integer and of size at least equal to the rank of the ultimate align-target of DISTRIBUTEE. It is an INTENT (OUT) argument. The ith element is set to the largest processor index ONTO which the ith axis of the ultimate align-target of DISTRIBUTEE is mapped; if that axis is collapsed, then the corresponding element of PUB is implementation dependent. The value returned is in the range 1 to ei where ei is the extent of processor arrangement axis onto which the selected axis of the ultimate align-target of DISTRIBUTEE is mapped.

PSTRIDE (optional) must be a rank one array of type default integer and of size at least equal to the rank of DISTRIBUTEE. It is an INTENT (OUT) argument. The ith element is set to the interprocessor stride in the ONTO clause with which the ith axis of DISTRIBUTEE is mapped; if that axis is collapsed, then the corresponding element of PSTRIDE is set to zero.

LOW_SHADOW (optional) must be a rank one array of type default integer, and size at least equal to the rank of the align-target to which DISTRIBUTEE is ultimately aligned (which is returned by HPF_TEMPLATE in TEMPLATE_RANK). It is an INTENT (OUT) argument. The ith element of LOW_SHADOW contains the low-side shadow width in the block or cyclic distribution of the ith axis of the ultimate align-target of DISTRIBUTEE; if that axis is a collapsed axis, then the value is implementation dependent.

HIGH_SHADOW (optional) must be a rank one array of type default integer, and size at least equal to the rank of the align-target to which DISTRIBUTEE is ultimately aligned (which is returned by HPF_TEMPLATE in TEMPLATE_RANK). It is an INTENT (OUT) argument. The ith element of HIGH_SHADOW contains the high-side shadow width in the block or cyclic distribution of the ith axis of the ultimate align-target of DISTRIBUTEE; if that axis is a collapsed axis, then the value is implementation dependent.

Example. Given the declarations in the example illustrating HPF_ALIGNMENT and assuming that the actual mappings are as the directives specify, the results of HPF_DISTRIBUTION are:

ABPI
AXIS_TYPE['BLOCK', 'BLOCK']['CYCLIC', 'BLOCK'][ ]
AXIS_INFO[10, 10][1, 15][ ]
PROCESSORS_SHAPE[4, 2][2, 2][ ]
PROCESSORS_RANK220
PLB[4, 1][2, 1][ ]
PUB[1, 2][3, 2][ ]
PSTRIDE[-1, 1][1, 1][ ]


next up previous contents
Next: HPF_TEMPLATE(ALIGNEETEMPLATE_RANK, LB, UB, Up: Specifications of Extended Library Previous: HPF_DISTRIBUTION(DISTRIBUTEEAXIS_TYPE,

AXIS_INFO,