设置线程的3种方法
1. 在子语句 data clause 中设置 :
num_threads( )
#pragma omp parallel for default(none) shared(x) private (i) num_threads(3)
for(i=0; i<10; i++){
x[i]=i;
}
2. 在 run time 函数库中设置 :
omp_set_num_threads( )
omp_set_num_threads(2)
#pragma omp parallel for default(none) shared(x) private (i)
for(i=0; i<10; i++){
x[i]=i;
}
3. 在环境变量中设置environment variables
在命令窗口中配置 : export OMP_NUM_THREADS = 3
module load intel //call intel module
icc -0 -qopenmp myOMP.c -o myOMP.exe //compile
export OMP_NUM_THREADS=3 ./myOMP.exe //run
Summary:
1、2、3 优先级依次降低的,也就是前面的设置可以覆盖后面的设置,当然也是相对而言,num_threads子句只会影响当前的并行区域,而omp_set_num_threads对OMP_NUM_THREADS环境变量的覆盖是在整个程序运行期间全局的。