

This section lists Fortran 90 and HPF features that are not supported in PGHPF 3.0.
Internal procedures and recursion are not supported in the Solaris/SPARC translator and HP Exemplar versions of PGHPF 3.0. In both cases, PGHPF still generates F77-style output for those platforms.
* Objects with the POINTER attribute cannot be DYNAMIC
* COMPLEX objects cannot have the TARGET attribute when compiling for the IBM RS6000/SP
* Objects with the TARGET attribute cannot have CYCLIC or CYCLIC(N) distributions. It may not be possible to detect this at compile-time in all cases, for example when a CYCLIC actual argument is passed to a dummy with the TARGET attribute
* A scalar POINTER cannot be associated with a distributed array
element. For example
integer, pointer :: p
integer,
target :: a(10),b(10)
!hpf$ distribute (block) :: a
p=> a(1) !
unsupported
p => b(1) ! supported
end
* A POINTER dummy variable cannot be used to declare other variables
such as automatic arrays using the lbound(), ubound() and
size() intrinsics. For example:
subroutine sub(p)
integer, pointer, dimensions(:,:) :: p
integer, dimension(lbound(p,1):
&
+ubound(p,1),size(p,2)) :: a ! does not work
* The DATA statement does not work with arrays of derived type. As a work-around, use entity-style initialization
* In the Solaris/SPARC translator and HP Exemplar versions of PGHPF 3.0, the following Fortran 90 intrinsic procedures do not work with variables or arrays of derived type:
CSHIFT |
PACK |
SPREAD |
UNPACK |
EOSHIFT |
RESHAPE |
TRANSFER |
|
LBOUND |
SHAPE |
TRANSPOSE |
|
MERGE |
SIZE |
UBOUND |
* In the Solaris/SPARC translator and HP Exemplar versions of PGHPF 3.0, the following HPF Library and intrinsic procedures do not work with variables or arrays of derived type:
COPY_PREFIX |
COPY_SCATTER |
HPF_ALIGNMENT |
COPY_SUFFIX |
HPF_DISTRIBUTE |
HPF_TEMPLATE |
Named multi-dimensional array constants cannot be subscripted to yield a constant value. For example, given the declaration:
INTEGER, PARAMETER, DIMENSION(2,2) ::
& X = RESHAPE((/1,2,3,4/),(/2,2/))
the following will not work:
INTEGER, PARAMETER :: Y = X(1,2) ! Will not work
Because of this restriction, named multi-dimensional array constants cannot be used in:
* Values in CASE statements
* KIND parameters in declaration statements
* KIND arguments to intrinsics
* Initial values in parameter statements or type declaration statements
The HPF_LIBRARY routines GRADE_UP, GRADE_DOWN, SORT_UP and SORT_DOWN require a DIM argument. These routines do not support cyclic distributions of the selected dimension.
The PGHPF 3.0 implementation of PURE conforms to the HPF 2.0 language specification, with the following exception: in PURE subroutines PGHPF will not generate any communication for distributed COMMON variables or distributed MODULE variables. The user is advised to pass distributed COMMON variables as arguments to a PURE subroutine, or use non-distributed COMMON variables.
An F90 optional argument cannot be used as an align-target for any variable that is not also optional. If an alignee is present, then the align-target must also be present.
The following compile-time warning message:
PGHPF-W-301 - Non-replicated mapping for character/struct/union array, char_table, ignored (file.F: lineno)
indicates that PGHPF 3.0 ignores the distribution directives applied to character arrays, arrays subject to SEQUENCE directives, and NAMELIST arrays.
At present, only INDEPENDENT loops containing FORTRAN 77 constructs can be parallelized. In particular, the presence of array assignments, WHERE statements, FORALL statements, and ALLOCATE statements will eliminate INDEPENDENT loops from consideration for parallelization.

