Next: Forall Statement Parallelism Up: Code Generation Previous: Array Assignment Parallelism

Where Statement Parallelism

The statement is a Fortran 90 statement that conveys parallelism in a manner similar to array assignment described in the previous section. The compiler adds a conditional statement to mask the elements of the array's index space that are assigned or not assigned a particular value. For example, given that X and Y are distributed arrays, the following WHERE statement produces code similar to the Fortran 77 output shown:


WHERE(X/=0) Y=X

The following code would be generated:


call set_bound(x_dist,1,1,16,1,llb,lub)
do i1 = llb, lub
   if (x(i1) .ne. 0) then
      y(i1) = x(i1)
   endif
enddo

The generated code is similar to the node code for an array expression, with the addition of the conditional within the DO loop.


zbozkus@
Thu Jul 6 21:09:19 EDT 1995