OMP的效率测试
分享
OMP是现在比较流行的并行计算的库,现在支持c,c++和fortran, 从VS2003开始已经集成到VS中了,要是用它分两步,1,第一步,在VS的properties里面的C/C++-->Language的OpenMP Support选择Yes。2. 第二步,程序中包括omp.h.测试程序为: 计算Pi。程序如下:
<p>
</p><p>
</p>#include <boost/progress.hpp>
#include <omp.h>
using namespace std;
using namespace boost::gregorian;
const static __int64 num_steps = 10000000000;
double step,pi;
int main(int argc, char* argv[])
{
{
boost::progress_timer t;
__int64 i;
double x,sum=0.0;
step = 1.0/(double)num_steps;
#pragma omp parallel for private(x) reduction(+:sum)
for(i = 0; i < num_steps; i++)
{
x = (i+0.5)*step;
sum = sum + 4.0/(1.0+x*x);
}
pi = step*sum;
printf("Pi = %f\n",pi);
}
//system("pause");
return 0;
}串行计算的时候,也即注释掉pragma omp parallel for private(x) reduction(+:sum)的后,运行速度为
<p>
</p>
<p>
</p>
机器一共16个core,因此CPU的占有率一直是6%左右。
<p>
</p>
在并行的时候,即使用pragma omp parallel for private(x) reduction(+:sum)后,CPU使用情况以及运行速度如下,
、
上图中16个core全都用满了。
<p>
</p>
运行速度比串行的快了10倍。
<p>
</p>
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6722223
<p>
</p><p>
</p>#include <boost/progress.hpp>
#include <omp.h>
using namespace std;
using namespace boost::gregorian;
const static __int64 num_steps = 10000000000;
double step,pi;
int main(int argc, char* argv[])
{
{
boost::progress_timer t;
__int64 i;
double x,sum=0.0;
step = 1.0/(double)num_steps;
#pragma omp parallel for private(x) reduction(+:sum)
for(i = 0; i < num_steps; i++)
{
x = (i+0.5)*step;
sum = sum + 4.0/(1.0+x*x);
}
pi = step*sum;
printf("Pi = %f\n",pi);
}
//system("pause");
return 0;
}串行计算的时候,也即注释掉pragma omp parallel for private(x) reduction(+:sum)的后,运行速度为
<p>
</p>
<p>
</p>
机器一共16个core,因此CPU的占有率一直是6%左右。
<p>
</p>
在并行的时候,即使用pragma omp parallel for private(x) reduction(+:sum)后,CPU使用情况以及运行速度如下,
、
上图中16个core全都用满了。
<p>
</p>
运行速度比串行的快了10倍。
<p>
</p>
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6722223
0 个评论
推荐内容
相关问题
- 刚部署好的arcgis api4.3,测试时出现左上角的放大缩小样式出现问题?
- ArcGIS Pro和ArcMap的GP工具性能上有多大的差异?有没有简单的测试数据?
- gp工具运行效率太低如何优化
- arcgis server10.2.2发布的feature service 在query测试页找不到distance及units参数?
- 镶嵌数据集数据处理效率
- arcgis多个任务都进行叠加操作,如何最快,几十个县叠加,想过并行调用gp,arcgisserver集群等,有没有其他解决方案,arcgis效率一直是心病
- IOS中Graphic 静态模式和动态模式哪种效率更高?
- Howto: 如何提高ArcSDE/Oracle多版本视图的查询效率
- ArcEngine 大表数据更新 效率如何提高??
- ArcGIS for Server性能测试及调优相关问题
- ArcEngine 处理效率问题