假设我有一个索引为0..n-1的数组。有没有办法选择每个线程将处理哪些单元格?例如线程0将处理单元格0和5,线程1将处理单元格1和6,依此类推。

最佳答案

您甚至可以更加明确:

#pragma omp parallel
{
   int nth = omp_get_num_threads();
   int ith = omp_get_thread_num();
   for (int i=ith; i<n; i+=nth)
   {
      // handle cell i.
   }
}


这应该完全满足您的要求:线程ith处理单元ith,ith + nth,ith + 2 * nth,ith + 3 * nth等。

关于c - OpenMP-用于循环线程分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13663750/

10-11 22:58