赞
踩
我们为了加速程序,往往会选择用openmp的方法。
有几个问题,经常遇到。总结一下。
1、运算结果与预期不一致。每次运算结果都不同。
#pragma omp parallel for
for(long i = 0; i< 10000000000; i++){
sum += 1;
}
//cout << sum << endl; 每次运行结果不一样。
//解决办法:用归约(效率与正确性兼顾)
/*****************改进 *******************************/
#pragma omp parallel for reduction(+:sum)
for(long i = 0; i< 10000000000; i++){
sum += 1;
}
2、#pragma omp parallel for 的作用域
#pragma omp parallel for reduction(+:sum)
for(long i = 0; i< 10000000000; i++){
sum += 1;
}
for(long i = 0; i< 10000000000; i++){
var += 1;
}
//有俩个for,都起作用吗?
//答案:只有第一个(紧跟着pragma omp parallel for声明的)起了作用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。