Představme si situaci
INTEGER, DIMENSION (5) :: IND
REAL, DIMENSION (10) :: A
REAL, DIMENSION (5) :: B = (/ 10.0, 20.0, 30.0, 40.0, 50.0 /)
FORALL (I=1,5)
A(IND(I)) = B(I)
END FORALL
Jestliže vektor indexů IND je prostým zobrazením, bude vše v pořádku. Má-li však několik jeho prvků stejnou hodnotu, můžeme dostat různé výsledky. Mějme například
Tomuto konfliktu zabráníme přidáním direktivy
!HPF$ INDEPENDENT
bezprostředně před začátek cyklu. Ta automaticky ohlídá, že
Jestliže má být nezávislá pouze některá část zahnízděné smyčky, přidává se ještě specifikátor NEW. Všimněme si, že v
!HPF$ INDEPENDENT, NEW(I2)
DO I1=1,N1
!HPF$ INDEPENDENT, NEW(I3)
DO I2=1,N2
!HPF$ INDEPENDENT, NEW(I4)
DO I3=1,N3
DO I4=1,N4
A(I1,I2,I3) = A(I1,I2,I3) + B(I1,I2,I4) * C(I2,I3,I4)
ENDDO
ENDDO
ENDDO
ENDDO
není nejvnitřnější smyčka nezávislá, protože se přiřazení každého prvku matice A provádí několikrát (pro všechny hodnoty indexu