next up previous contents
Next: HPF_MAP_ARRAY(ARRAYTEMPLATE_DIM, MAP_ARRAY) Up: Specifications of Extended Library Previous: HPF_TEMPLATE(ALIGNEETEMPLATE_RANK, LB, UB,

HPF_TEMPLATE(ALIGNEE, TEMPLATE_RANK, LB, UB,
AXIS_TYPE, AXIS_INFO, NUMBER_ALIGNED, DYNAMIC)

Optional Arguments. LB, UB, AXIS_TYPE, AXIS_INFO, NUMBER_ALIGNED,
TEMPLATE_RANK, DYNAMIC

Description. The HPF_TEMPLATE subroutine returns information regarding the ultimate align-target associated with a variable; HPF_TEMPLATE returns information concerning the variable from the point of view of its ultimate align-target, while HPF_ALIGNMENT returns information from the variable's point of view.

Class. Mapping inquiry subroutine.

Arguments.

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

If ALIGNEE has the pointer attribute, information about the alignment of its target is returned. The target must not be an assumed-size dummy argument or a section of an assumed-size dummy argument.

TEMPLATE_RANK (optional) must be scalar and of type default integer. It is an INTENT (OUT) argument. It is set to the rank of the ultimate align-target. This can be different from the rank of the ALIGNEE, due to collapsing and replicating.

LB (optional) must be of type default integer and of rank one. Its size must be at least equal to the rank of the align-target to which ALIGNEE is ultimately aligned; this is the value returned in TEMPLATE_RANK. It is an INTENT (OUT) argument. The ith element of LB contains the declared align-target lower bound for the ith template axis.

UB (optional) must be of type default integer and of rank one. Its size must be at least equal to the rank of the align-target to which ALIGNEE is ultimately aligned; this is the value returned in TEMPLATE_RANK. It is an INTENT (OUT) argument. The ith element of UB contains the declared align-target upper bound for the ith template axis.

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 10 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 ALIGNEE is ultimately aligned; this is the value returned in TEMPLATE_RANK. It is an INTENT (OUT) argument. The ith element of AXIS_TYPE contains information about the ith axis of the align-target. The following values are defined by HPF (implementations may define other values):

"0DNORMAL"0D
The align-target axis has an axis of ALIGNEE aligned to it. For elements of AXIS_TYPE assigned this value, the corresponding element of AXIS_INFO is set to the number of the axis of ALIGNEE aligned to this align-target axis.

"0DREPLICATED"0D
ALIGNEE is replicated along this align-target axis. For elements of AXIS_TYPE assigned this value, the corresponding element of AXIS_INFO is set to the number of copies of ALIGNEE along this align-target axis.

"0DSINGLE"0D
ALIGNEE is aligned with one coordinate of the align-target axis. For elements of AXIS_TYPE assigned this value, the corresponding element of AXIS_INFO is set to the align-target coordinate to which ALIGNEE is aligned.

AXIS_INFO (optional) must be of type default integer and of rank one. Its size must be at least equal to the rank of the align-target to which ALIGNEE is ultimately aligned; this is the value returned in TEMPLATE_RANK. It is an INTENT (OUT) argument. See the description of AXIS_TYPE above.

NUMBER_ALIGNED (optional) must be scalar and of type default integer. It is an INTENT (OUT) argument. It is set to the total number of variables aligned to the ultimate align-target. This is the number of variables that are moved if the align-target is redistributed.

DYNAMIC (optional) must be scalar and of type default logical. It is an INTENT (OUT) argument. It is set to true if the align-target has the DYNAMIC attribute, and to false otherwise.

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_TEMPLATE are:

ACD
LB[1, 1][1, 1][1, 1]
UB[40, 20][40, 20][40, 20]
AXIS_TYPE['NORMAL', 'NORMAL']['NORMAL', 'NORMAL']['NORMAL', 'NORMAL']
AXIS_INFO[1, 2][3, 1][1, 4]
NUMBER_ALIGNED333
TEMPLATE_RANK222
DYNAMICfalsefalsefalse


next up previous contents
Next: HPF_MAP_ARRAY(ARRAYTEMPLATE_DIM, MAP_ARRAY) Up: Specifications of Extended Library Previous: HPF_TEMPLATE(ALIGNEETEMPLATE_RANK, LB, UB,