OpenMP* 循环调度

面向英特尔® MIC 架构的编译器方法

OpenMP 循环调度

使用以下通用形式的并行结构调度 OpenMP 循环:

示例

#pragma omp parallel for schedule(kind [, chunk size])

如下表所示,可为 OpenMP 提供四种不同的循环调度类型(类别)。可选参数(块)(指定的)必须是一个正整数。

类别

描述

静态

将循环划分为大小相等的块,若循环迭代次数不能被块大小乘得的线程数所整除,则将循环划分为大小尽可能相等的块。默认情况下,块大小等于循环数除以线程数。

将块大小设置为 1,以实现交错迭代。

动态

使用内部工作队列按块大小为每个线程分配循环迭代块。完成一个线程后,它将从工作队列的顶部开始检索下一个循环迭代块。

在默认情况下,块大小为 1。由于此调度类型需要额外的开销,使用时需谨慎。

引导

引导调度与动态调度类似,但它首先获取较大的块,然后逐步缩减块大小,以更好地处理迭代之间的负载不均衡。可选块参数指定使用的块大小最低值。

默认情况下,块大小约为循环数除以线程数。

自动

指定调度(自动)后,关于调度的决定由编译器来负责。编程人员使编译器能够自由选择迭代到线程的映射。

运行时

通过 OMP_SCHEDULE 环境变量来指定使用上述三种循环调度中的哪一类。

OMP_SCHEDULE 是一个字符串,其格式与并行结构中将显示的格式完全相同。

更多信息,请参阅Compiler XE 用户与参考指南(使用 OpenMP 实现工作分享

 

下一步

要在英特尔® 至强融核协处理器上成功调试您的应用,请务必通读此指南,并点击文中的超链接查看相关内容。本指南提供了实现最佳应用性能所要执行的步骤。

返回高效并行化章节

 

Contrassegni:
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione