GRAPES四维变分同化系统MPI与OpenMP混合算法研究.docVIP

GRAPES四维变分同化系统MPI与OpenMP混合算法研究.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文档。上传文档
查看更多
GRAPES四维变分同化系统MPI与OpenMP混合算法研究

GRAPES四维变分同化系统MPI与OpenMP混合算法研究   摘要:本文阐述了MPI和OpenMP的编程模式,并在此基础上利用MPI和OpenMP混合并行的方式,即:在节点内应用OpenMP共享存储、在节点间应用MPI进行消息传递的模式,对我国自行研发的数值天气预报系统GRAPES(Global/Regional Assimilation and Prediction Syste)进行测试,。结果表明,混合并行算法比原来的单纯的MPI模式有更加理想的并行效率和加速比。   关键词:混合编程;MPI+OpenMP   中图分类号:TP301.6 文献标识码:A 文章编号:1007-9599 (2012) 19-0000-02   1 引言   在高性能计算技术研究领域,机群系统具有良好的可扩展性与高性价比,受到越来越多的大学及科研机构的青睐。随着多核技术以及现代网络技术的发展,越来越多的集群采用多核处理器作为核心部件,基于多核技术的集群已经成为高性能计算领域的主流平台,集群下最常用的并行编程模式的消息传递接口MPI(Message Passing Interface)被广泛应用与分布式以及共享内存系统,成为目前并行编程的标准。但在很多情况下,采用单纯MPI消息传递编程模式并不能取得理想的性能。针对多核机群系统既有分布式存储又有共享存储的特点,MPI+OpenMP混合模式更贴近于多核机群的体系结构,结合消息传递与共享存储两种编程模式的优点,优化节点内部通信,在节点间应用MPI消息传递、节点内部应用OpenMP共享存储则能取得更理想的结果。   2 MPI和OpenMP编程模式   2.1 MPI编程模式   MPI不是一种编程语言,而是一个消息传递的接口,它以实际可用的、可移植的、高效的和灵活的特点被广泛用于消息传递的并行程序。MPI是一个接口库,它支持C语言和FORTRAN语言。   MPI适用于共享和分布式存储的并行计算环境,它的显式并行有着很好的性能和可移植性,通常用在聚集通信的优化实例中。然而它也存在着不足:应用的开发、分解、调试都很困难,有时候还要对代码作大量的修改。为了减少通信开销和延迟,通常使用粗粒度模型。   在MPI的整个传递过程中,需要指定数据的传递类型,再数据到达传到目的进程后还需要对数据进行转换和匹配。消息传递的整个过程如下图所示:   2.2 OpenMP编程模式   OpenMP是作为共享存储标准出现的,是为共享存储环境编写并行程序而设计的一个应用接口。   OpenMP的工作模式采用的是“Fork/Join”模式。其并行执行示意图如下:   程序开始的主线程是串行,当在需要并行的时候(这时候程序中应该有相应的OpenMP指令语句),多个线程开始一起工作。若当前的并行块结束(仍旧由相应的OpenMP指令语句来控制)时,又重新回到单一的主线程。这就是共享存储标准的并行模式—Fork/Join式并行模式。   2.3 混合编程模式   MPI和OpenMP编程模式的相结合充分利用了共享存储编程模型和消息传递编程模式的优点,提供节点内和节点间的两级并行,很好的映射多处理器计算机组成的集群体系结构。   使用混合编程模式的结构如上图所示,MPI位于顶层而OpenMP位于底层。每个MPI进程都可以在#gragma omp parallel编译制导的区域内产生多线程的并行,而在区域外仍是单线程。首先对问题进行MPI分解,每个MPI进程被分配到一个节点上,进程间使用消息传递交换信息;然后在每个MPI进程中,使用OpenMP制导指令创建一组线程,并分配到不同处理器上并行执行。   同单纯的MPI模型相比,MPI和OpenMP混合模型使用快速的共享内存访问代替节点间的消息传递模式,不仅解决了处理器间的粗粒度通信,还解决了各个处理器内部的交互,有效的降低通信的开销。此外,一般情况下随着MPI进程个数增加,并行性能会下降。而混合模式由于MPI进程数等于节点个数而不是MPI模型中的处理器的个数,这样在保证解决问题的处理器数量不变的情况下大大减少了进程数。因此混合模式有更强的可扩展性。   3 混合并行的实现   混合并行是实现时需要注意的:   3.1 对OpenMP中私有变量private和共享变量shared的设定。共享变量所有线程都能访问,而私有变量是只有拥有该线程的变量才能访问。为了提高catch性能,同时避免假共享问题,在实验中应尽可能采用私有变量。   3.2 在线程执行中使用!$OMP BARRIER制导语句来控制线程的行为。防止由于负载不均衡导致线程步调不一致出现错误结果。   实验测试的实例为我国自主研发的新一代数值天气预报系统GRAPES的有限区域切线模式

文档评论(0)

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

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

1亿VIP精品文档

相关文档