使用OMP单个内部omp并行循环

时间:2018-04-03 02:39:43

标签: openmp

我有一个for循环,我使用OMP并行进行并行化。现在在我的main for循环中,我有另一个for循环,它包含一段代码,我希望每次迭代嵌套for循环只需要一个线程执行。这意味着Function1()应该被调用100次,而Function2每次迭代外部for循环应被调用400次,前提是线程数为4.

#pragma omp parallel for schedule (auto)
for (i=0; i<nrows; i++) {

      int tid = omp_get_thread_num();  // thread ID
      startarray[tid] = 0;

      for (int partition = 0; partition < 100 ; partition++)
      {
          #pragma omp single
          {  
              qqyy = Function1();
          }
          Function2();

          //some work
      }
}

现在我的代码发出以下警告:

  

错误:工作共享区域可能没有紧密嵌套在工作共享,关键,有序,主要或显式任务区域内

这样做的正确方法是什么?

0 个答案:

没有答案