next up previous
Next: Intrinsic Functions and Standard Up: High Performance Fortran Previous: Data Distribution Directives

Parallel Statements

INDEPENDENT directive asserts that the iterations in a loop may be executed in any order or concurrently. If the assertion is false, the compiler is free to take any action it deems necessary. There are no restrictions on the loop body, and no way to perform explicit synchronization.

2.0cm !HPF$ INDEPENDENT
2.0cm DO I = 1, N
2.5cm A(IX(I)) = B(I)
2.5cm C(I) = F(A(IX(I)), B(IX(I)))
2.0cm END DO

FORALL statement performs elemental array assignment using explicit array indexing. Certain types of functions which do not have any complicating side-effects (so-called PURE procedures) may be called from within a FORALL statement.

2.0cm FORALL (I=1:N, J=1:N, I ;SPMlt; J)
2.5cm B(I,J) = B(J,I)
2.5cm C(I,J) = D(I,K) * B(K,J)
2.0cm END FORALL



Geoffrey Fox, Northeast Parallel Architectures Center at Syracuse University, gcf@npac.syr.edu