Как OpenMP обрабатывает вложенные циклы?
Следующий код просто распараллеливает первый (внешний) цикл или распараллеливает все вложенные циклы?
#pragma omp parallel for
for (int i=0;i<N;i++)
{
for (int j=0;j<M;j++)
{
//do task(i,j)//
}
}
Я просто хочу убедиться, что приведенный выше код будет распараллеливать все вложенные циклы for (таким образом, одна задача, непосредственно связанная с потоком (i, j)), или он будет распараллеливать только внешний цикл for (таким образом, он гарантирует, что для каждой параллельной задачи поток с индексом цикла i, его внутренний цикл будет выполняться последовательно в одном потоке, что очень важно).