<< >> Title Contents Index Home Help

4 PGHPF 4.1


PGHPF 4.1 is PGI's native (HPF-to-assembly code) High Performance Fortran compiler for IA-32 processor-based systems. All features of Full HPF 1.1 and Fortran 90 are supported, with the few exceptions noted in this document. In addition, several new HPF 2.0 and HPF/JA features have been added in this release. Section 4.1 below for a list of features, which is a continuation of the 4.1 release information. If you encounter any feature that is not supported, and not listed in section 4.3, Restrictions, please consider it a bug and report it to PGI at the e-mail address trs@pgroup.com.

4.1 Summary of Changes

The following features have been added to PGHPF 4.1 for IA-32 systems:

* HPF/JA feature - support for REDUCTION type in INDEPENDENT clauses, including the new reduction operators FIRSTMAX, LASTMAX, FIRSTMIN, and LASTMIN and relaxation of the restrictions on allowable forms of references to reduction variables when the reduction type is specified.

* HPF 2.0 feature - support for the approved extension form of the ON directive, restricted to the body of an INDEPENDENT loop

* HPF 2.0 feature - the HPF library procedures SORT_UP and SORT_DOWN are now supported

* Reductions in nested INDEPENDENT loops are now supported

* Constraints on the order of HPF mapping directives have been eliminated

* Scaling analysis of HPF programs using PGPROF 4.1 - see section 3.12.1 for more information on this feature

4.2 Restrictions

This section lists Fortran 90 and HPF features that are not supported in PGHPF 4.1.

Type


Restriction


Fortran 90 Pointers


* Objects with the POINTER attribute cannot be DYNAMIC

* 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


Fortran 90 Derived Types

The DATA statement does not work with arrays of derived type. As a work-around, use entity-style initialization.


Named Constants


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


HPF Library


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.


PURE Procedures


The PGHPF 4.1 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.


Optional Arguments


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.


DISTRIBUTE and ALIGN


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 4.1 ignores the distribution directives applied to character arrays, arrays subject to SEQUENCE directives, and NAMELIST arrays.


INDEPENDENT loops


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.



<< >> Title Contents Index Home Help