Next: HPF_TEMPLATE(ALIGNEETEMPLATE_RANK, LB,
Up: Specifications of Library
Previous: GRADE_UP(ARRAYDIM)
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)
paula@erc.msstate.edu
Thu Dec 8 16:17:11 CST 1994