- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[MPI并行程序设计
MPI并行程序设计 MPI是目前最重要的并行编程工具,它具有移植性好、功能强大、效率高等多种优点,而且有多种不同免费、高效、实用的实现版本,几乎所有的并行计算机厂商都提供对它的支持,这是其他的并行编程环境所无法比拟的。 什么是MPI? MPI(Message Passing Interface ) MPI是一个库,而不是一门语言; MPI是一种标准或规范的代表,而不特指某一个对它的具体实现; MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准; 消息传递模型 假设底层的消息传递模型是一组处理器,每一个处理器有自己的本地内存,并且通过互连网络实现与其他处理器的消息传递 MPI并行程序设计 MPI历史 机房集群环境 六个接口构成的MPI子集 MPI并行程序的两种基本模式 MPI并行程序的通信模式 MPI的历史 MPI初稿:美国并行计算中心工作会议(92年4月) MPI-1公布:第一届MPI大会(93年2月) MPI标准正式发布:1994年5月 MPI-1.1发布:1995年6月 MPI-2发布:(以前的版本统称MPI-1) 1997年7月 MPI的实现 MPICH:最重要的MPI实现 与MPI-1规范同步发展的版本 支持部分MPI-2的特征(如动态生成进程等) LAM(Local Area Multicomputer) Ohio State University开发 它主要用于异构的计算机网络计算系统 下载地址 MPICH2(最新版本1.0.3 ) /mpi/mpich/ LAM-MPI(最新版本7.1.2) http:// /download/ 机房环境 软件部分 操作系统:Windows Server 2003 MPI实现:MPICH-1.2.5 硬件部分 集群系统有4个刀片(每片主要参数): 2CPU (Xeon3.2GHZ),2GB RAM,2(4)个千兆网卡,2个SCSI硬盘 机房集群环境 一个主节点(一个刀片) 启用双网卡,设置内/外网IP地址,用于用户登陆、提交调试程序、管理员管理集群等。主节点开启SSH、Ftp等服务。 三个从节点 用于从主节点接受计算任务并执行计算(返回结果)。从节点开启SSH服务。 节点之间的通信通过SSH协议来实现 六个接口构成的MPI子集 在MPI-1中,共有128个调用接口,在MPI-2中有287个,应该说MPI是比较庞大的。但是从理论上说,MPI所有的通信功能可以用它的6个基本的调用来实现,掌握了这6个调用,就可以实现所有的消息传递并行程序的功能。 所有的MPI标识符,都以MPI前缀开头,后面紧跟一个大写字母和一系列小写字母以及下划线。 MPI调用的参数说明 IN: 调用部分传递给MPI的参数,MPI除了使用该参数外不允许对这一参数做任何修改 OUT: MPI返回给调用部分的结果参数,该参数的初始值对MPI没有任何意义 INOUT:调用部分首先将该参数传递给MPI,MPI对这一参数引用、修改后,将结果返回给外部调用,该参数的初始值和返回结果都有意义 1、MPI初始化:MPI_Init函数 用法:MPI_Init(argc , argv) 每一个MPI进程调用的第一个MPI函数都是MPI_Init。该函数指示系统完成所有的初始化工作,以备对后续MPI库的调用进行处理。 2、 MPI结束:MPI_Finalize函数 用法:MPI_Finalize() 在一个进程执行完其全部MPI库函数调用后,将调用函数 MPI_Finalize,从而让系统释放分配给MPI的资源。它是MPI程序的最后一条可执行语句,否则程序的运行结果是不可预知的。 3、确定进程的标识符 用法:MPI_Comm_rank( MPI_COMM_WORLD ,id) 当MPI初始化后,每一个活动进程变成了一个叫做MPI_COMM_WORLD的通信域中的成员。通信域是一个不透明的对象,提供了在进程之间传递消息的环境。 在一个通信域内的进程是有序的。在一个有p个进程的通信域中,每一个进程有一个唯一的序号(ID号),取值为0~p-1。 进程可以通过调用函数MPI_Comm_rank来确定它在通信域中的序号。 4、确定进程数量 用法:MPI_Comm_size( MPI_COMM_WORLD ,p) 进程通过调用函数MPI_Comm_size来确定一个通信域中 的进程总数。 5、消息发送函数 MPI_SEND(buf,count,datatype,dest,tag,comm) 参数说明: IN buf:发送缓冲区的起始地址 IN count:
文档评论(0)