【发布时间】:2018-04-21 20:38:54
【问题描述】:
有 8 个城市。我们对每个城市的不同统计数据进行计算。
我需要知道在 for 循环结束时是否存在障碍,以便在完成所有其他之前城市的统计数据后开始下一组计算。
一定是这样,因为每次计算都依赖于前一次计算。
#pragma omp for
for (int i = 0; i < count; ++i)
{
// calculate stats about population
}
// is there a barrier in here?
// Or do I need an explicit barrier
// #pragma omp barrier
#pragma omp for
for (int i = 0; i < count; ++i)
{
// calculate stats about cars
}
// is there a barrier in here?
#pragma omp for
for (int i = 0; i < count; ++i)
{
// calculate stats about weather
}
// ...same idea
【问题讨论】:
-
假设你的意思是
#pragma omp parallel for,是的,在循环结束时有一个隐含的障碍来等待所有线程完成。只有一个线程会继续执行流程,直到下一个#pragma ...。 -
所以我不需要在每个 for 循环之后设置一个明确的屏障?好的。您应该将其发布为答案。