gcc OpenMP实现:它如何动态设置线程数?

时间:2014-06-10 18:50:33

标签: gcc openmp

如果设置omp_set_dynamic(1),gcc如何确定最佳线程数? OpenMP让它实现了定义,但我很想知道gcc是如何实现它的。

谢谢!

1 个答案:

答案 0 :(得分:4)

GCC使用libgomp运行时库实现OpenMP。它是编译器的一部分,其源代码可以在GCC使用的相同GPL许可下免费获得。您可以下载GCC的某个点版本并检查libgomp文件夹,也可以浏览source code online。此链接适用于GCC 4.8.3的最新稳定版本。从GCC 4.9开始,libgomp实现了OpenMP 4.0功能,这使得源代码更难理解。

实现动态线程数的逻辑可以在parallel.cgomp_resolve_num_threads()中找到。基本上它只支持动态设置parallel sections组合构造的线程数,并尝试将团队中的线程数设置为等于构造内不同部分的数量。