1 / 6
文档名称:

多线程求pi实验报告.docx

格式:docx   大小:16KB   页数:6页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

多线程求pi实验报告.docx

上传人:kang19821012 2019/2/19 文件大小:16 KB

下载得到文件列表

多线程求pi实验报告.docx

文档介绍

文档介绍:多线程求pi实验报告 MonteCarlo方法计算Pi 一、实验要求以OpenMP实现MonteCarlo计算Pi的并行程序注意: ?制导循环编译?共享变量的处理?编译运行比较?修改测试点数,提高计算精度。?利用OpenMP实现积分法,比较。二、实验原理通过蒙特卡罗算法计算圆周率的主导思想是:统计学?,向这个正方形内随机的画点,则点落在圆内的概论为P=圆面积/正方形面积。?,在点处画一个半径为R=1的圆,以这个圆画一个外接正方形,其边长为R=1(R=1时,圆面积即Pi)。? #include#include#includeusingnamespacestd; int_tmain(intargc,_TCHAR*argv[]){ longmax=;longi,count=0; doublex,y,bulk,starttime,endtime;time_tt; cout>max; starttime=clock(); //产生以当前时间开始的随机种子srand((unsigned)time(&t));#pragmaompparallelfornum_threads(8)default(shared)private(x,y)reduction(+:count)for(i=0;i#include#include #includeusingnamespacestd; staticlongnum_steps=10;doublestep,pi; int_tmain(intargc,_TCHAR*argv[]){ inti; doublex,sum=; clock_tstart,finish; printf("请输入您要用几步来进行计算\n");cin>>num_steps; step=/(double)num_steps;start=clock(); #pragmaompparallelfornum_threads(8)default(shared)private(x)reduction(+:sum) for(i=0;i #include #include #include #include longnum_steps=10000;//每一块中的分得块数或者是每个进程中执行的步数 double*sum;//用来存储各个进程的计算结果 doublestep;//每一块的宽度大小 DWORDWINAPIfun(LPVOIDpArg)//进程中用来执行的函数{ inta1=*((int*)pArg); doublex; for(inti=a1*num_steps;i>parts; cout>num_steps; a=newint[parts]; handle=newHANDLE[parts]; sum=newdouble[parts]; step=/((double)num_steps*parts); for(i=0;i #include #include #include longnum_steps=10000;//每一块中的分得块数或者是每个进程中执行的步数 int*a;//用来存储从何处开始计算的标记 doublesum;//用来存储各个进程的计算结果 doublestep;//每一块的宽度大小