A=B or more interestingly |
WHERE( B > 0. ) A = B |
ELSEWHERE A=0. |
END WHERE |
can be written |
DO I = n1,n2 |
DO J = m1,m2 |
IF(B(I,J) >0.) THEN A(I,J) = B(I,J) |
ELSE A(i,J) = 0. |
END IF |
END DO |
END DO |
Now a good HPF compiler will recognize the DO loops can be parallelized and give the same answer for Fortran90 and Fortran77 forms but often the detection of parallelism is not clear |
Note FORALL is guaranteed to be parallelizeable as by definition no side effects. |