在正式编写并行程序前,需要先了解一下共享任务结构。所谓共享任务结构,即将结构中所包含的代码分给线程组中各个线程去执行。第一个线程为0,也即主线程,在共享任务结构的入口没有路障,而出口(即结束处)有一个隐含的路障,只有线程0可以从头执行到尾。
OpenMP有3种典型的共享任务结构,for 语句、sections 语句和 single 语句,此外还有 parallel for 语句和 parallel sections 语句。
1. for语句
for语句的一般格式如下:([ ]表示可选可不选,| 表示或者)
#pragma omp for [schedule(static|dynamic[,CHUNKSIZE]) | ordered | private(var) | firstprivate(var) |
lastprivate(var) | shared(var) | reduction(operator:var) | nowait] newline
最后的newline指换行,具体可以看一下例子
#include<stdio.h>
#include<omp.h>
#include<time.h>
#define CHUNKSIZE 100
#define N 10000
int main(){
int i;
float a[N], b[N], c[N];
clock_t t=0;