第八章 并行计算实验一:多线程计算π.docxVIP

第八章 并行计算实验一:多线程计算π.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行计算实验一:多线程计算学院计算机科学与技术专业计算机科学与技术年级2013级学号姓名2016年5月27日目录一、实验内容3二、实验原理32.1 计算原理32.2 并行思想4三、程序流程图4四、实验结果及分析64.1 实验结果数据统计64.2 加速比曲线64.3 结果分析7五、实验总结8一、实验内容(1)利用蒙特卡罗方法求圆周率PI(2)编写串行和多线程的代码分别计算并记录时间(3)统计数据并画出加速比曲线(4)对实验结果分析及感想二、实验原理2.1 计算原理在数值积分法中,我们利用求单位圆的1/4的面积来求得Pi/4从而得到Pi。单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分,只要能求出扇行面积S1在正方形面积S中占的比例K=S1/S就立即能得到S1,从而得到Pi的值。怎样求出扇形面积在正方形面积中占的比例K呢?一个办法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个点落在扇形内。将落在扇形内的点数m与所投点的总数n的比m/n作为k的近似值。怎样实现这样的随机投点呢?任何一款计算机语言都有这种功能,能够产生在区间[0,1]内均匀分布的随机数,产生两个这样的随机数x,y,则以(x,y)为坐标的点就是单位正方形内的一点P,它落在正方形内每个位置的机会均等,P落在扇形内的充要条件是x^2+y^2=1。设投入的总点数为S1 ,根据判定条件可计算出落入园内的为S2 ,则有由上式即可算出的值。2.2 并行思想在上述计算过程中唯一可以并行化的地方是随机数模拟了,假设投入的总点数为kSamplePoints,开启num_threads个线程,这样每个线程平均的去投kSamplePoints/num_threads个点,最后将所有线程的结果求和并计算概率P,这样比串行的效率高很多。三、程序流程图(1)串行流程图: 串行流程图只需要调用hits函数即可(hits函数如下图),在此不再赘述。(2)并行流程图四、实验结果及分析4.1 实验结果数据统计(1)随机点个数为107串、并行运行结果:线程数012345678910PI的值3.141133.141133.141133.141133.141133.141133.141133.141133.141133.141133.14113运行时间/微秒15394715477010755210480490905619377704648302414253952456181加速比10.9946821.4313731.4689041.6934932.4855421.9981183.1871773.7162823.8950262.740197(2)随机点个数为108串、并行运行结果:线程数012345678910PI的值3.14173.14173.14173.14173.14173.14173.14173.14173.14173.14173.1417运行时间/微秒15373611547753797449546993419115382572335235289131230452244811286534加速比10.9932861.9278492.8105683.6681134.0184884.585925.3171786.6710686.2797875.365374.2 加速比曲线柱形图:折线图:4.3 结果分析分析结果得:(1)串行比单线程运行时间短(即加速比小于1),此结果很好解释:单线程相比于串行还要花费时间创建一个线程,自然运行时间比串行慢。(2)理论上,随着线程数线性增大,运行速度应该相应的线性增大,但实际上我们通过加速比曲线可以看出,随着线程数的增大加速比大于1且总体趋势在递增,但其增幅远远小于线性,分析此结果我认为是由于一下两个方面:1)随着线程数的增大,运行时需要开辟更多的内存空间,需要额外消耗一部分时间。2)本实验中的数据规模小于108,故即使是采用int型的最大值CPU都可以在很短的时间内计算完毕,而开启线程所用的时间相对于此问题的计算时间来说不能近似忽略,故采用多线程对速度的提升并不理想。(3)对比107个随机点和108 个随机点的加速比曲线,我们发现当数据点越多时PI的计算越准确,而且由于计算时间的增大,创建线程所需的时间对总时间的影响越小,从而多线程的优势越发明显。五、实验总结通过这次实验我学会了很多内容,以前虽然学习过关于线程、进程的概念,但是并没有真正的使用线程编写代码,利用随机数生成PI的多线程思想很简单,但是从零开始的我花了好久才调通多线程的程序,当运行产生正确的输出结果时,心里十分高兴。随后让我绝望的是,随着线程数的增加,运行时间成倍的上升,这与实际矛盾,最后终于知道是由于在线程中生成随机数的原因,修改代码,并行程序快的多了。通过编写

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档