基于多核并行非线性方程蒙特卡洛计算方法.docVIP

基于多核并行非线性方程蒙特卡洛计算方法.doc

  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文档。上传文档
查看更多
基于多核并行非线性方程蒙特卡洛计算方法

基于多核并行非线性方程蒙特卡洛计算方法   摘要:随着社会生产生活的发展,对计算机的依赖越来越大,要解决庞大计算量的实际问题就需要高性能的计算机以及高速的计算方法。在应用蒙特卡洛方法求解非线性方程组时,利用多线程技术,串行改并行,使用WinAPI、OpenMP、MPI三种并行模式得出三种最优的并行计算方法。根据数值试验分析了各种计算模式的优缺点,发现MPI并行模式计算速度最快,最终得以结论并行计算模式可以推广到各种数值计算问题。   关键词:并行计算;多线程;WinAPI;OpenMP;MPI   中图分类号:TP301.6 文献标识码:A 文章编号:1009-3044(2014)21-5115-05   针对下面提出的山高问题,本质上就是求解非线性方程组,而对于非线性方程组数值解法发展迅速,如迭代法、Newton法、同伦算法、人工智能算法[1]等。这些算法优点突出,对于同伦算法、人工智能算法有很高的精度,计算速度非常快,看上去是完美的,但美中不足的是这些算法都为串行算法,缺少多核CPU并行手段,经过并行之后的算法求解非线性方程组能够极大地缩短计算时间,提高效率。为此专门利用三种最常用的并行模式,精心改造并挑选出三种最优的并行计算方法。   第一种并行模式:使用WinAPI[2]创建新线程即线程函数,然后通过API接口进行多线程调度完成并行;第二种并行模式:使用OpenMP[2]并行语言,通过设置参数与线程数,利用库函数循环并行化,实现算法并行计算;第三种并行模式:MPI[2] 并行是一种基于消息传递的并行语言,各进程具有独立的堆栈和代码段,多个程序独立进行,从而利用多节点或者多CPU模拟多节点实现并行计算,这也是MPI并行最快的原因。就这样我们可以串行该并行,得到优化算法,不仅解决非线性方程问题还拓展到其它数值问题。   1 问题提出   山高的估计:假如你站在山顶且身上带着一只具有跑表功能的计算器,你也许会出于好奇心想用扔下一块石头听回声的方法来估计山的高度,假定你能准确地测定时间,你又怎样来推算山崖的高度呢,请你分析这一问题[3]。   2 问题分析   除地球吸引力外,对石块下落影响最大的当属空气的阻力。根据流体力学知识,此时可设空气阻力正比于石块下落的速度,阻力系数为常数,因而,由牛顿第二定律可得[3]:   3 串行算法求解   串行算法是最基本的实现方法。其实现的核心是fun的绝对值与fun0的比较,每产生一个fun就与fun0比较,绝对值小的赋值给fun0,直到完成循环。具体的算法实现:   4 并行算法求解   4.1 WinAPI并行实现   首先利用WinAPI生成线程函数,编写线程函数完成单一工作量,主函数中调用该线程函数,根据线程数目调用相应的CPU进行计算,保证CPU运行正常,负载量均衡。最后将计算结果合并、比较得到需要的结果。   在Windows实现多线程并行计算时会产生数据竞争(Data racing),数据竞争导致计算出现错误,计算结果有时相差很大。错误的原因归结为多线程同时访问同一区域,读写操作冲突。为此采用同步技术,利用临界区与线程号分配任务解决此问题。   对于此问题,临界区作用于非线性方程组求解。临界区是一种针对多线程对同一区域访问混乱而设置的保护机制。它的作用在于当并行时,多线程访问次序因临界区而有序,互相不干扰,计算结果也就不会影响,是一个很好的屏障。   5 分析与讨论   开发验证工具:计算机Intel Core i7 八核处理器,开发工具Microsoft Visual Studio 2010,Microsoft Windows 版本[6.2.9200] 2012 Microsoft Corporation。   结果分析与比较:对串行和并行的方法进行数值实验,为了分析的方便,数值实验的计算步数为20,000,000。数值实验结果如下呈现:   四线程并行计算:   在表中,计算时间取平均值所得,以串行计算时间除以每种并行方式计算所用时间作为加速比,加速比理论值为4[4](八线程加速比为8) 。由于实际调用线程及数据规约都会有时间损耗,导致加速比小于理想值。   由上面数据可知,WinAPI与OpenMP结果差不多,这与实际相符合,OpenMP是对WinAPI多线程的封装,两者在实现理论上一致。OpenMP算法简单,使用方便,但总体来说并不稳定。   MPI是基于通信的并行实现,它以独特的实现方式在目前并行计算的发展趋势下体现出强大的生命力。当然在进行主从式、并列式以及流水线式等方式的实现时,对于大数据传输要考虑数据传输时间,合理调整程序。 另外通过试验比较,可以看出MPI计算速度最快,所用时间最少,因而加速比最接近理论值,增

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档