现在最新版的C、C++、Fortran编译器基本上都内置OpenMP支持。
比如gcc、g++、gfortran(GCC套件4.2版之后开始支持)
Intel C++ compiler、Intel Fortran compiler
Microsoft visual C++ (版本8.0或者叫2005之后开始支持)
由支持OpenMP的编译器编译出来的可执行文件可以独立运行,
不再需要额外的什么支持,它会根据源代码里面指定的线程数生成相应线程,
在SMP主机上分布在多个CPU或者多核心上执行陪握橡,单CPU单核则分时多线程执行。
第一步,登录天河超级计算机。第二步,创建一个文件夹,用于装测试程序,mkdir test_openmp
第基旅三步,创建一个openmp并行程序hello.c,编写如下代搏友凳码:
#include<stdio.h>
int main(int argc, char** argv){
int i
int max = 0
#pragma omp parallel for private(i) reduction(max:max)
for(i=0i<=10000i++){
if(i>max)max=i
}
printf("%d\n",max)
}
第四步,编译:
gcc -o hello hello.c -fopenmp
登录告悄后复制
第五步,调整控制线程数的环境变量OMP_NUM_THREADS,如果不调整按照最大支持线程数,也就是cpu核数,这里将并行线程数调为2:
export OMP_NUM_THREADS=2
登录后复制
第六步:运行:
./hello
登录后复制
输出结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)