我知道启用嵌套并行性将允许嵌套 omp 并行 for 循环也被并行化。但我在嵌套的 for 循环(for 内部)中使用塌陷(2)。
有区别吗?为什么或者为什么不?假设最好的情况:循环索引之间没有依赖性并且其他条件相同。
是的,有很大的区别 - 使用collapse
(not collapsed
)。不要使用嵌套并行性。
嵌套并行意味着有独立的线程团队在不同级别的工作共享上工作。您可能会遇到各种麻烦,要么过度订阅太多线程的 CPU 核心,要么不利用 CPU 核心,因为某些线程位于错误的团队中,目前没有工作。从嵌套并行性中获得良好的性能是相当困难的。这就是为什么您通常需要显式启用它。
另一方面,折叠循环意味着不同的循环在工作共享级别上是联合的。这使得一组线程(通常具有与可用 CPU 内核一样多的线程)能够有效地执行循环的不同迭代。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)