2
schedule
子句的OpenMP文档说,如果指定了schedule(auto)
,那么有关调度的决定将委派给编译器或运行时系统。如何在gcc中实施OpenMP“自动”计划?
编译器(E.g,gcc)如何决定调度?它是否从static, dynamic, guided
之一中选择,或者它是否有自己的选择时间表的算法?
schedule
子句的OpenMP文档说,如果指定了schedule(auto)
,那么有关调度的决定将委派给编译器或运行时系统。如何在gcc中实施OpenMP“自动”计划?
编译器(E.g,gcc)如何决定调度?它是否从static, dynamic, guided
之一中选择,或者它是否有自己的选择时间表的算法?
在libgomp中,gcc默认的OpenMP运行时库auto
只映射到static
。没有魔法。
这在代码注释为:
/* For now map to schedule(static), later on we could play with feedback
driven choice. */
这番话已经存在了10年。您可以在loop.c
和loop_ull.c
中寻找GFS_AUTO