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 FORALLJestliž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$ INDEPENDENTbezprostř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 ENDDOnení 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