- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MPI重要概念(续) 消息缓存区:应用程序产生的消息包含的数据所处的内存空间。 标准输入:所有进程的标准输入read(*,*)均省缺为当前终端屏幕,且只能由0号进程执行该操作,其他进程需要这些输入参数,只能由0号进程执行数据广播操作。 标准输出:所有进程可以独立执行标准输出write(*,*),但其省缺为当前终端屏幕。 MPI函数格式 FORTAN语言中,最后一个参数为该函数调用是否成功的标志:0表示成功,其它表示各种可能的错误。 C语言中,该标志有函数参数返回。 C : ierr=MPI_Comm_rank(myrank) F : MPI_Comm_rank(myrank,ierr) MPI函数的使用查询 由函数名查询: man 函数名 ( MPI_Xxxx), 注意大小写,例如 man MPI_Comm_rank man MPI_Send man MPI_recv MPI函数的学习与使用 注重MPI函数的各类功能,由应用程序的通信需求出发,寻找匹配的函数类型,在查找具体函数名,采用man命令可以查询该函数的具体参数含义和使用方法。 一般的MPI程序设计流程图 程序参数说明 Call MPI_Init ( ) 进入MPI系统,通信器 MPI_COMM_WORLD形成 Call MPI_Comm_rank ( ) Call MPI_Comm_size ( ) 建立新的通信器、定义新的数据类型和进程拓扑结构 一般的MPI程序设计流程图(续) 应用程序实体: .计算控制程序体; .进程间通信; Call MPI_Finalize ( ) End 退出MPI系统 MPI并行编程环境 进程与消息传递??? MPI并行程序设计入门 初步的MPI消息传递函数 先进的MPI函数 MPI并行程序示例 面向性能的程序设计 点对点通信(point-to-point) 定义:给定属于同一通信器内的两个进程,其中一个发送消息,一个接收消息。 MPI系统定义的所有通信方式均建立在点对点通信之上。 四种模式:标准模式、缓存区模式、同步模式、就绪模式。 标准模式点对点通信 进程可以随意地发送(接收)消息,与是否存在匹配的消息接收(发送)进程无关。 发收匹配: 发收不匹配: 进程0 进程1 进程0 进程1 进程2 标准模式点对点通信的分类 阻塞式:消息发送函数返回,用户可以对消息缓存区进行处理,不会影响已发送的消息数据;接收函数返回,用户可以使用接收到的消息数据。 非阻塞式:发送和接受函数返回后,必须调用另一类函数来确保它们的正确完成。 标准模式点对点通信的分类举例 点对点通信函数举例 阻塞式标准消息发送函数 MPI_Send(buf,count,datatype,dest,tag,comm,ierr) Real*8(integer,…)buf : 消息发送缓存区起始地址 (Fortran, 用户的待发送的第一个数据) integer count :buf起始的数据单元个数 integer datatype :数据类型(基本或用户定义的) integer dest : 接收进程序号 integer tag : 消息的标号 integer comm : 通信器 integer ierr : 函数调用返回错误码 ? real *8 a(100,100) integer b(60,60) c-----发送50个双精度数“a(5,20) : a(54,20)”到2号进程 call MPI_Send( a (5,20),50,MPI_DOUBLE_PRECISION,2, 99999,MPI_COMM_WORLD,ierr ) c-----发送20个整型数“b(20,40) : b(39,40)”到5号进程 call MPI_Send( b (20,40),20,MPI_DOUBLE_PRECISION,5, 99999,MPI_COMM_WORLD,ierr ) 阻塞式标准消息发送函数举例 MPI_Recv(buf,count,datatype,dest,tag,comm,status, ierr) Real*8(integer,…)buf : 消息接收缓存区起始地址 (Fortran,
原创力文档


文档评论(0)