Как 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, его внутренний цикл будет выполняться последовательно в одном потоке, что очень важно).

Ответы на вопрос(3)

Ваш ответ на вопрос