OpenMP“自动”调度是如何在 gcc 中实现的?

Var*_*n V 4 parallel-processing gcc scheduling g++ openmp

OpenMP 文档中的 forschedule子句表示,当schedule(auto)指定时,有关调度的决策将委托给编译器或运行时系统。

编译器(例如,gcc)如何决定调度?它是从其中之一中选择static, dynamic, guided还是有自己的算法来选择时间表?

Zul*_*lan 6

在 gcc 附带的默认 OpenMP 运行时库 libgomp 中,auto简单地映射到static. 没有魔法。

这在代码中注释为:

/* For now map to schedule(static), later on we could play with feedback
 driven choice.  */
Run Code Online (Sandbox Code Playgroud)

这条评论已经存在了 10 年。GFS_AUTO您可以在loop.c和 中查找loop_ull.c