一旦其中一个线程完成执行,我就需要继续执行。并行部分内部的逻辑确保一切都已圆满完成。我有嵌套并行化,因此当数据未准备好处理时,我将一些顶级线程置于休眠状态,以免消耗计算能力。因此,当其中一个顶级线程完成时,我想继续执行而不是等待其他线程唤醒并自然返回。
我用
#pragma omp parallel for num_threads(wanted_thread_no)
答案 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循环之间很有用。
这是你想要的吗?
同样看看这个,即使它说同样的事情。