next up previous contents
Next: Solution Up: Extrinsics and HPF Library Previous: Solution

 

Extrinsic simulates an INDEPENDENT Loop

Consider the following code fragment / loop:

      INTEGER                           :: i, n
      REAL, DIMENSION(:,:), ALLOCATABLE :: A, B, C
!HPF$ PROCESSORS, DIMENSION(10,10)      :: P
!HPF$ ALIGN (:,:) WITH A(:,:)           :: B, C
!HPF$ DISTRIBUTE (CYCLIC,CYCLIC) ONTO P :: A
!
! ... C, B, A and N set up somehow
!
 !HPF$ INDEPENDENT, NEW(i)
 DO j = LBOUND(A,1),UBOUND(A,1),1
  DO i = LBOUND(A,2),UBOUND(A,2),1
   IF (ABS(A(i,j)) .GE. 0.01) THEN
    A(i,j) = (B(i,j)*C(i,j)*n)/A(i,j)
   ENDIF
  END DO
 END DO

Since INDEPENDENT is rarely implemented, recode the loop as a call to a Fortran 90 extrinsic procedure (F90_LOCAL) in order to exploit parallelism.

State the interface as it would appear in the HPF calling program.




next up previous contents
Next: Solution Up: Extrinsics and HPF Library Previous: Solution

Adam Marshall ©University of Liverpool, 1996
Fri Dec 6 14:10:26 GMT 1996