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