当未指定schedule子句时,使用什么调度算法?即:

#pragma omp parallel for
for (int i = 0; i < n; ++i)
    Foo(i);

最佳答案

从已链接的documentation开始。 部分2.7.1.1确定工作共享循环的时间表读取:

如果循环指令没有调度子句,则def-sched-var ICV的当前值确定调度。

引号前的句子引用第2.3.1节,内容为:


  • def-sched-var-控制实现定义的循环区域默认调度。每个设备有一份此ICV的副本。


  • 2.3.2节ICV初始化节中的表指出,def-sched-var的初始值是实现定义的,并且没有影响该值的环境变量。因此,默认的循环时间表是由实现定义的。 Q.E.D.

    07-24 22:18