【发布时间】:2011-12-25 06:43:18
【问题描述】:
我有一个关于并行循环中的局部值和更新全局变量的问题。
例如,在伪代码中:我在一个很长的向量中搜索一个最大值。我可以像这样循环执行它:
int max;
for(i ...) {
if (max < vector[i]) max = vector[i];
}
我可以轻松地将其与 OpenMP 并行化:
int max;
#pragma omp parallel
{
int local_max;
#pragma omp parallel for
for(i ...) {
if (local_max < vector[i]) local_max = vector[i];
}
#pragma omp critical
{
// choose the best solution from all
if (max < local_max) max = local_max; local_max
}
}
如何在 TBB parallel_for 中做同样的事情?我不要求确切的代码,我只想知道如何在循环结束时更新全局结果,而不是在每次迭代时...
(我是TBB的新手)
【问题讨论】: