OpenMP并行发送哪些元素

which element are sent by OpenMP parallel for?

本文关键字:元素 并行 OpenMP      更新时间:2023-10-16

我是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,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

依此类推,直到没有更多数据为止。如果您想要不同的日程安排,请查看帖子开头的链接。但请注意,其中一些可能会带来一些额外的开销。