【发布时间】:2015-11-27 12:37:25
【问题描述】:
如何正确使用 OpenMP 中的有序子句?有这个测试代码来检查循环是否会通过增加 n 的值来执行,但并非总是如此。
我是否误解了有序子句的定义?
有序构造指定循环区域中的结构化块 这将按照循环迭代的顺序执行。这 在有序区域内对代码进行排序和排序,同时 允许区域外的代码并行运行。
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(){
int n;
omp_set_num_threads(4);
#pragma omp parallel
{
#pragma omp for ordered
for (n=0;n<10;n++)
printf("n = %d\n",n);
}
return 0;
}
编译时使用
gcc -Wall -Wextra -fopenmp test_par.c
输出是
./a.out
n = 0
n = 1
n = 2
n = 9
n = 3
n = 4
n = 5
n = 6
n = 7
n = 8
【问题讨论】:
标签: c loops for-loop parallel-processing openmp