在Linux或Windows环境下配置OpenMP开发运行环境,并利用蒙特卡罗算法计算半径为 1 单元的球体体积_第1页
在Linux或Windows环境下配置OpenMP开发运行环境,并利用蒙特卡罗算法计算半径为 1 单元的球体体积_第2页
在Linux或Windows环境下配置OpenMP开发运行环境,并利用蒙特卡罗算法计算半径为 1 单元的球体体积_第3页
在Linux或Windows环境下配置OpenMP开发运行环境,并利用蒙特卡罗算法计算半径为 1 单元的球体体积_第4页
在Linux或Windows环境下配置OpenMP开发运行环境,并利用蒙特卡罗算法计算半径为 1 单元的球体体积_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机科学与技术系课程名称.并行计算及编程实验项目:专业班级:姓名:学号:实验时间:批阅时间:指导教师:成绩:7兰州交通大学《并行计算及编程》课程实验报告实验名称:课内综合实验1一、实验目的在Linux或Windows环境下配置OpenMP开发运行环境,并利用蒙特卡罗算法计算半径为1单元的球体体积。、实验内容.验证所配置OpenMP并行环境的正确性;.分别用串行程序和并行程序实现以上问题的求解;.比较并行和串行程序的执行时间,并行计算加速比;.提交电子版详细实验报告。三、实验环境Windows10,下载VisualStudio2019四、实验过程(包括程序设计说明,实验步骤,经调试后正确的源程序,程序运行结果)①实验步骤:下载VisualStudio2019图1用helloworld程序验证在SolutionExplorer(解决方案资源管理器)中对项目名右键,选择属性,更改/型目品性军双高级说试VC+4EMJ/型目品性军双高级说试VC+4EMJC/C++胃现说出预处理器匕玛生成h由白预专浮头造出文件浏览拮总高苑断有选回畲令行>血室L清单工艮r浏揖晅息P生成李件F自定义生筋鬻b甘迎ArfV正爱(Q二jgStXDebug)M•用囱古扩展符合眼式杵W匚Mjt现为内直类型过制For也如足■!!中的岂那住榔会引用的代码和款昌强到类型转换期则后围国Mii找汜后M否餐!(/ptirmi*汨•・]是(/Zc;wchar_t)是(/Zc:forScjope)是(/Zciiinline)[口附附P支持是(/openmipjJ+语音屣启用匚+十摸嘏关窗与装用语高犷展取消独白用盾音丁员.g"平台伊):iSSt](Wln32)配餐后理尧鞋定取消图2进行配置用MkrosoFtViswolStudio加1*,fOLId:fiotnthiGad=O^lldlarld!freonthread=3JclldTflrld;freonthread=l-Je:laWorld!frcaithread=2Hello而rid:fromthread=11HelloWorld!frccuthread=5■11。World!fronithread=8加LidWorld!frocathread=7^L.oWarId!fictnthread=10JelloWorld!franthread=4^ellafforld!franthr&ad=9■Je:laTarld:frccnthread=6":\LserZ^tt3t\aQLirce\rBpM\Prciject1\DdMig\Praject1exeLilt"34Z助已退即.代理为Q.要花调试传上时自承美用控制台・清启用“工2->*舐项”->“调试”->“调试件止时H动美团挣刷价捺任意德美闭此窗U,.图3配置成功后输出答案②环境配置好后,利用蒙特卡罗算法计算半径为1单元的球体体积。/用串行程序实现:经过调试后的正确程序:#include<iostream>#include<stdlib.h>#include<time.h>usingnamespacestd;intmain(){longintmax=10000000;longinti,count=0;doublex,y,z,bulk,start_time,end_time;starttime=clock();

time_tt;srand((unsigned)time(&t));/用数产生一个以当前时间开始的随机种子for(i=0;i<max;i++){x=rand();〃生成0~RAND_MAX之间的一个随机数,其中RAND_MAX是stdlib.h中定义的一个整数,它与系统有关。/*RAND_MAX是VC中stdlib.h中宏定义的一个字符常量:#defineRAND_MAX0x7FFF其值最小为32767,最大为2147483647通常在产生随机小数时可以使用RAND_MAX。*/x=x/32767;y=rand();y=y/32767;z=rand();z=z/32767;if((x*x+y*y+z*z)<=1)count++;}bulk=8*(double(count)/max);end_time=clock();cout<<"球体的体积为"<<bulk<<endl;cout<<"运算时间为"<<(end_time-start_time)<<endl;return0;}工■了,dU小Jt」/1口胃2盟丸也小中;工力冲辖段.;后曜,*R^I'.HU^VCil'iEnJlItL比定区的I中宇的第Rix:谢第:ruddJEx:谢第:rudd球俄的体积为运算时间为209C:\C3€H3Um班\3outc€\reg3TPrcject2\Debug\PH0ject£€Ke(进程16796)己退出.代出为0.要在调成停止时自动.矢田控制台.请启用“工」0‘选项"7皿调诚”->“调就停止时自动美用控制台",接任意镇美间此囱11一..图4串行方法的结果结果:球体的体积为4.18782;运算时间为2209ms/用并行程序实现程序设计说明:需要建立:#pragmaompparallel语句告诉编译器下面的语句块是一个并行块,需要并行执行(同样语句会执行多次)。用循环分割:利用for语句和归并语句对程序进行并行化。#include<stdlib.h>#include<time.h>#include<stdio.h>intmain(){longlongmax=10000000;longlongi,count=0;doublex,y,z,bulk,start_time,end_time;start_time=clock();time_tt;srand((unsigned)time(&t));//函数产生一个以当前时间开始的随机种子#pragmaompparallelforprivate(x,y,z)reduction(+:count)for(i=0;i<max;i++){x=rand();x=x/32767;y=rand();y=y/32767;z=rand();z=z/32767;if((x*x+y*y+z*z)<=1)count++;}bulk=8*((double)(count)/max);end_time=clock();printf("球体的体积为%0.8f\n",bulk);printf("运算时间为%0母s\n",(end_time-start_time)/1000);return0;}

球体的体枳为4一1的12。皿运球体的体枳为4一1的12。皿运葬时制为a1a9Moms要在调试停11:时自动美用挣制行,清木用“「JT-》“选哑R-》“调试”->“调成停止时自动关闭控制台“.接任点揖美用此窗11"皿用加#rf”juiiii外;“/萱平牛.一个Li讦*的herrfAl'ALlfrlFdE■Luluit'-iiie.h--IMh)«-«DIUMIm.==bHHWHLac|Im.drc-suit-Q;£■yZ|LfjLL±ruI.L^taiKiiid_LL*.fiiri.TUK-■ElMiO:iuk1(HM/32JUT:itndQ.y,3:所.X-EriWt-b,3SW:if(f3+r■ECUTtf皿”-3*>:(k<^L«>levui:>怪iJm■(LKkO;酊J1T「自律算障记.的1r图5并行方法的结果球体的体积为4.18812000运算时间为2.16900000s=2169ms③并行计算加速比加速比的含义对科学研究者和工程实用者可能有所不同。研究者们使用绝对加速比的定义:对于给定的问题,加速比等于最佳串行算法所用的时间除以同一问题的并行算法所用的时间。而工程中使用相对加速比的定义对于给定的问题,加速比等于同一个算法在单处理器上运行的时间除以在多处理器上的运行时间。S=2209ms/2169ms=1.0184416五、出现的问题及解决方法VS与VC的区别:VS(virtualstudio)是微软开发的一个集成工具,可以开发C++、C#、HTML、VB等。VC(virtualc++)是专门开发C++的工具。当你进去VS的时候,会提示你选择开发环境,如果你选择C++,选择的就是VC编程平台。我之前使用的是vc6.0版本较老,这两个可以同时使用,只需所在目录不同就好。OpenMP编程实例(蒙特卡罗算法)用了clock()函数。clock()函数在头文件#inc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论