我正在使用 openmp 静态负载平衡运行 for 循环。我想打印每个线程处理的第一个和最后一个迭代(也就是每个线程的 i
的第一个和最后一个值)。
循环看起来像这样:
#pragma omp parallel for schedule(static) private(i)
for(i=0;i<n;i++){
//loop code
}
我很清楚 OpenMP 文档指定了在静态计划中平均分配的迭代范围,尽管我想打印迭代值。
最佳答案
只需记住初始化为标记值 (-1) 的私有(private)变量中的索引:
#pragma omp parallel
{
int index = -1;
#pragma omp for schedule(static)
for(int i=0; i<n; i++){
//loop code
if (index == -1) {
printf("%d: start %d\n", omp_get_thread_num(), i);
}
index = i;
}
printf("%d: last %d\n", omp_get_thread_num(), index);
}
关于c - OpenMP 线程处理的迭代索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43998178/