1. for指令用途
for指令指定紧随其后的循环迭代由一组线程并行执行。
2. for指令语法格式
当for指令在并行区域内部时,其语法为
#pragma omp for [clause ...] newline
schedule (type [,chunk])
ordered
private (list)
firstprivate (list)
lastprivate (list)
shared (list)
reduction (operator: list)
nowait
for_loop
也可将for指令与并行区域指令合并为一条,其语法为
#pragma omp parallel for ......
2.1 schedule子句
schedule子句描述如何将循环迭代划分给一组线程。包含以下几种方式(type字段)
- 静态(static)
循环迭代被分成多个块(每块大小由chunk变量指定,最后一个块可能没有chunk大小),然后线程的顺序静态地分配给各线程。如果未指定块大小,则循环迭代将在线程之间均匀地(如果可能的话)连续地划分。
下面的代码示例
int i;
int chunk = 3;
#pragma omp parallel shared(chunk) private(i)
{
#pragma omp for schedule(static, chunk) nowait
for (i=0; i < 20; i++)