OMP的效率测试

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

 OMP的效率测试_第1张图片


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


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

OMP的效率测试_第2张图片

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

 OMP的效率测试_第3张图片

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





   

你可能感兴趣的:(c,timer,properties,测试,fortran,parallel)