MIMD stands for Multiple Instructions Multiple Data. The following example merely illustrates that if a PURE procedure contains an IF block then each processor could be performing a different task at the same time.
REAL FUNCTION F(x,i) ! PURE IMPLICIT NONE REAL, INTENT(IN) :: x ! element INTEGER, INTENT(IN) :: i ! index IF (x > 0.0) THEN F = x*x ELSEIF (i==1 .OR. i==n) THEN F = 0.0 ELSE F = x END IF END FUNCTION F
If desired this approach could be used as alternative to WHERE or FORALL.
Return to corresponding overview page