OpenMP并行发送哪些元素?

时间:2018-08-06 06:24:14

标签: c++ for-loop parallel-processing openmp parallel-for

我是OpenMP的新程序员。我想并行处理数据,并且使用OpenMP。与OpenMP parallel for一起使用时,如何获取在for循环中处理过的元素?例如:

#pragma omp parallel for
for(int i = 0; i < 10; i++){
    myFunc(i);
}

我不想一起发送1、3、6或一起发送2 4 7。我可以管理一起发送哪些号码吗?

1 个答案:

答案 0 :(得分:1)

您应该阅读有关块大小的信息,因为它可能会帮助您Scheduling examples

例如,如果您擅长服用1,2和3,4和5,6,以此类推,您可以通过以下代码简单地做到这一点:

#pragma omp parallel for schedule(static, 2) 
for(int i = 0; i < 10; i++){
    myFunc(i);
}

schedule(static, 2)意味着每个线程将采用2个这样的连续数字:

  • 线程1:1,2,
  • 线程2:3,4
  • 线程3:5,6

依次类推,直到没有更多数据为止。如果您想要不同的计划,请查看文章开头的链接。但是请注意,其中一些可能会带来一些额外的开销。