W jaki sposób OpenMP obsługuje zagnieżdżone pętle?
Czy poniższy kod po prostu paraliżuje pierwsze (zewnętrzne) pętle, czy też paralelizuje całe zagnieżdżone pętle?
#pragma omp parallel for
for (int i=0;i<N;i++)
{
for (int j=0;j<M;j++)
{
//do task(i,j)//
}
}
Chcę tylko upewnić się, czy powyższy kod zrównoważy całą zagnieżdżoną pętlę for-loops (a więc jedno zadanie bezpośrednio powiązane z wątkiem (i, j)), czy tylko równoległe zewnętrzne pętle for (co zapewnia, że dla każdego równoległego wątek z indeksem pętli i, jego wewnętrzna pętla zostanie wykonana sekwencyjnie w jednym wątku, co jest bardzo ważne).