1 | A=B or more interestingly |
2 | WHERE( B > 0. ) A = B |
3 | ELSEWHERE A=0. |
4 | END WHERE |
5 | can be written |
6 | DO I = n1,n2 |
7 | DO J = m1,m2 |
8 | IF(B(I,J) >0.) THEN A(I,J) = B(I,J) |
9 | ELSE A(i,J) = 0. |
10 | END IF |
11 | END DO |
12 | END DO |
13 | 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 |
14 | Note FORALL is guaranteed to be parallelizeable as by definition no side effects. |