OMP的效率测试

本文详细介绍了如何利用OMP库优化并行计算效率,通过实例展示了从串行到并行的转换过程及性能提升,特别关注于代码实现、核心参数设置以及并行计算对CPU资源的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OMP是现在比较流行的并行计算的库,现在支持c,c++和fortran, 从VS2003开始已经集成到VS中了,要是用它分两步,1,第一步,在VS的properties里面的C/C++-->Language的OpenMP Support选择Yes。2.  第二步,程序中包括omp.h.测试程序为: 计算Pi。程序如下:

#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)的后,运行速度为

 


机器一共16个core,因此CPU的占有率一直是6%左右。


在并行的时候,即使用pragma omp parallel for private(x) reduction(+:sum)后,CPU使用情况以及运行速度如下,

上图中16个core全都用满了。

 

运行速度比串行的快了10倍。






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值