假设您已经设计了一个带有嵌套for循环的顺序程序,并希望将其转换为与OpenMP并行,并在各个部分进行调试,以便进行调试...最好先处理最外层循环按照你的方式工作,或从最里面的循环开始?我知道崩溃函数,但并非所有嵌套循环都是可折叠的。
答案 0 :(得分:0)
最内层循环中绝对且绝对 不 。这是因为启动线程通常很昂贵。
另一方面,如果最里面的循环比启动一个线程需要更多的资源来执行,那么它并没有产生任何影响。但除此之外,最外层的循环始终是最佳选择。
当然,对于你的广泛问题,这是一个非常广泛的答案。每种不同的特殊情况总会有不同的答案。
另一方面,如果您遇到如此复杂的问题,我建议您使用低级std::thread
并手动控制线程。这需要更多的工作,但你有更多的控制和最好的结果。然后,您可以使用线程池并获得最有效的解决方案。