OpenMP构造在完成至少1个线程后立即继续执行

时间:2012-12-13 00:14:59

标签: c++ openmp

一旦其中一个线程完成执行,我就需要继续执行。并行部分内部的逻辑确保一切都已圆满完成。我有嵌套并行化,因此当数据未准备好处理时,我将一些顶级线程置于休眠状态,以免消耗计算能力。因此,当其中一个顶级线程完成时,我想继续执行而不是等待其他线程唤醒并自然返回。

我用

#pragma omp parallel for num_threads(wanted_thread_no)

1 个答案:

答案 0 :(得分:0)

你如何并行化?你使用任务,部分还是?

如果我理解正确,如果您使用任务原语,则可以在上一个任务之后使用#pragma omp parallel nowait

请参阅第13页(pdf)中的pdf。

http://openmp.org/wp/presos/omp-in-action-SC05.pdf

它明确地说:

  

默认情况下,“omp for”结尾处有一个屏障。使用   “nowait”条款关掉了障碍。   #pragma omp for nowait“nowait”在两个连续的,独立的omp for循环之间很有用。

这是你想要的吗?

同样看看这个,即使它说同样的事情。

http://openmp.org/mp-documents/omp-hands-on-SC08.pdf