Directives take effect at allocation, for example,
REAL, ALLOCATABLE, DIMENSION(:,:) :: A
INTEGER :: ierr
!HPF$ PROCESSORS, DIMENSION(10,10) :: P
!HPF$ DISTRIBUTE (BLOCK,CYCLIC) :: A
...
ALLOCATE(A(100,20),stat=ierr)
!---> A automatically distributed here
! block size in dim=1 is 10 elements
! ...
DEALLOCATE(A)
END
The blocksize is determined immediately after allocation.
Once allocated, these arrays behave in the same way as regular arrays.
For more information, click here