A.1 Executing a Simple Loopin Parallel(并行执行简单循环)
指令为parallelfor,下面的for回圈将会被并行执行
#ifdef _OPENMP
#include <omp.h>
#endif
#include<stdio.h>
int main(){
inta[3] = {1,1,1}, b[3] = {0,0,0}, i, n = 3;
#pragma omp parallel for
for (i=1; i<n; i++)
b[i] = (a[i] + a[i-1]) /2.0;
for (i= 0; i < n; i++) {
printf("%d", b[i]);
}
printf("\n");
return0;
}
A.2 Specifying ConditionalCompilation(指定条件编译)
只有在编译时定义了OpenMP,语句才会输出
#include<stdio.h>
#ifdef _OPENMP
#include <omp.h>
#endif
int main(){
# ifdef _OPENMP
printf("Compiled by an OpenMP-compliantimplementation.\n");
# endif
printf("\n");
return0;
}
A.3 Using Parallel Regions(使用并行区域)
指令parallel表示这段代码将会被并行执行,子句shared指定一个或多个变量为多个线程间的共享变量,private指定一个或多个变量在每个线程中都有它自己的私有副本
#include<stdio.h>
#ifdef _OPENMP
#include <omp.h>
#endif
int main(){
intiam, np, ipoints, x = 1, npoints = 4;
#pragma omp parallel shared(x, npoints)private(iam, np, ipoints)
{
iam = omp_get_thread_num();
np = omp_get_num_threads();
ipoints = npoints / np;
subdomain(x, iam, ipoints);
}
printf("\n");
return0;
}
int subdomain(int x, int iam, int ipoints) {
printf("%d%d %d\n", x, iam, ipoints);
}