[ HPF Home | Versions | Compilers | Projects | Publications | Applications | Benchmarks | Events | Contact ]



Next:
HPF_TEMPLATE(ALIGNEETEMPLATE_RANK, LB, Up: Specifications of Library Previous: GRADE_UP(ARRAYDIM)

HPF_ALIGNMENT(ALIGNEE, LB, UB, STRIDE, AXIS_MAP, IDENTITY_MAP, DYNAMIC, NCOPIES)

Optional Arguments. LB, UB, STRIDE, AXIS_MAP, IDENTITY_MAP, DYNAMIC, NCOPIES
Description. Returns information regarding the correspondence of a variable and the align-target (array or template) to which it is ultimately aligned.
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 structure component. If it is a member of an aggregate variable group, then it must be an aggregate cover of the group. (See Section for the definitions of ``aggregate variable group'' and ``aggregate cover.'') 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 is a pointer, 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. If the target is (a section of) a member of an aggregate variable group, then the member must be an aggregate cover of the group. The target must not be a structure component, but the pointer may be.

LB (optional) must be of type default integer and of rank one. Its size must be at least equal to the rank of ALIGNEE. It is an INTENT (OUT) argument. The first element of the i axis of ALIGNEE is ultimately aligned to the LB(i) align-target element along the axis of the align-target associated with the i axis of ALIGNEE. If the i axis of ALIGNEE is a collapsed axis, LB(i) is implementation dependent.

UB (optional) must be of type default integer and of rank one. Its size must be at least equal to the rank of ALIGNEE. It is an INTENT (OUT) argument. The last element of the i axis of ALIGNEE is ultimately aligned to the UB(i) align-target element along the axis of the align-target associated with the i axis of ALIGNEE. If the i axis of ALIGNEE is a collapsed axis, UB(i) is implementation dependent.

STRIDE (optional) must be of type default integer and of rank one. Its size must be at least equal to the rank of ALIGNEE. It is an INTENT (OUT) argument. The i element of STRIDE is set to the stride used in aligning the elements of ALIGNEE along its i axis. If the i axis of ALIGNEE is a collapsed axis, STRIDE(i) is zero.

AXIS_MAP (optional) must be of type default integer and of rank one. Its size must be at least equal to the rank of ALIGNEE. It is an INTENT (OUT) argument. The i element of AXIS_MAP is set to the align-target axis associated with the i axis of ALIGNEE. If the i axis of ALIGNEE is a collapsed axis, AXIS_MAP(i) is 0.

IDENTITY_MAP (optional) must be scalar and of type default logical. It is an INTENT (OUT) argument. It is set to true if the ultimate align-target associated with ALIGNEE has a shape identical to ALIGNEE, the axes are mapped using the identity permutation, and the strides are all positive (and therefore equal to 1, because of the shape constraint); otherwise it is set to false. If a variable has not appeared as an alignee in an ALIGN or REALIGN directive, and does not have the INHERIT attribute, then IDENTITY_MAP must be true; it can be true in other circumstances as well.

DYNAMIC (optional) must be scalar and of type default logical. It is an INTENT (OUT) argument. It is set to true if ALIGNEE has the DYNAMIC attribute; otherwise it is set to false. If ALIGNEE has the pointer attribute, then the result applies to ALIGNEE itself rather than its target.

NCOPIES (optional) must be scalar and of type default integer. It is an INTENT (OUT) argument. It is set to the number of copies of ALIGNEE that are ultimately aligned to align-target. For a non-replicated variable, it is set to one.
Examples. If ALIGNEE is scalar, then no elements of LB, UB, STRIDE, or AXIS_MAP are set.

Given the declarations
REAL PI = 3.1415927 POINTER P_TO_A(:) DIMENSION A(10,10),B(20,30),C(20,40,10),D(40) !HPF$ DYNAMIC A !HPF$ ALIGN C(I,*,J) WITH T(J,21-I) !HPF$ PROCESSORS PROCS(4,2), SCALARPROC !HPF$ DISTRIBUTE B(CYCLIC,BLOCK) ONTO PROCS !HPF$ TEMPLATE EMMETT_KELLY(100,100) !HPF$ ALIGN BOZO(J,K) WITH EMMETT_KELLY(J,5*K) CALL HPF_ALIGNMENT(RONALD_MCDONALD, NCOPIES = NC) sets NC to 20. Now consider: LOGICAL BOZO(20,20),RONALD_MCDONALD(20) !HPF$ ALIGN RONALD_MCDONALD(I) WITH BOZO(I,*) !HPF$ ALIGN BOZO(J,*) WITH WILLIE_WHISTLE(5*J) CALL HPF_ALIGNMENT(RONALD_MCDONALD, NCOPIES = NC) sets NC to one.



Next:
HPF_TEMPLATE(ALIGNEETEMPLATE_RANK, LB, Up: Specifications of Library Previous: GRADE_UP(ARRAYDIM)



©2000-2006 Rice University [ Contact Us | HiPerSoft | Computer Science ]

paula@erc.msstate.edu
Thu Dec 8 16:17:11 CST 1994