- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MPI并行编程
6个基本函数组成的MPI子集 #include mpi.h /*MPI头函数,提供了MPI函数和数据类型的定义*/ int main( int argc, char** argv ) { int rank, size, tag=1; int senddata,recvdata; MPI_Status status; MPI_Init(argc, argv); /*MPI的初始化函数*/ MPI_Comm_rank(MPI_COMM_WORLD, rank); /*该进程的编号*/ MPI_Comm_size(MPI_COMM_WORLD, size); /*总的进程数目*/ 6个基本函数组成的MPI子集 if (rank==0){ senddata=9999; MPI_Send( senddata, 1, MPI_INT, 1, tag, MPI_COMM_WORLD); /*发送数据到进程1*/ } if (rank==1) MPI_Recv(recvdata, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, status); /*从进程0接收数据*/ MPI_Finalize(); /*MPI的结束函数*/ return (0); } MPI并行编程 例7 通信子的使用 2 MPI中的消息信封 Process 0: MPI_Send(msg1, count1, MPI_INT, 1, tag1, comm1); parallel_fft(...); Process 1: MPI_Recv(msg1, count1, MPI_INT, 0, tag1, comm1); parallel_fft(...); if (my_rank==0) MPI_Send(msg2, count1, MPI_INT,1,tag2,comm2); 含代码 含代码 他尿揖否属僧肚傣颗恳肌具光喇停身肋仆沥斤碎俘乾懊彤馈稗蔬邱莎预窜MPI并行编程MPI并行编程 存在问题: 不可能保证tag1 和tag2一定取了不同的值: 标签是由用户定义的整数值, 用户可能会出错. 即使用户不会弄错, 也难以或不可能保证tag1 和tag2有不同的值. 函数parallel_fft( )可能是由其它用户写的, 或者它是一个库例程. 这样, 用户可能不知道tag2的值. 即使用户总能知道tag2的值, 仍然可能出错. 因为MPI_Recv 例程可能决定使用一个通配的(wildcard)标签MPI_Any_tag. 解决办法: 在parallel_fft( )中的通信使用不同的通信子, 它可能包含相同的进程组(如, 进程0和1), 但每个通信子有系统指定的不同的上下文, 与comm1的不同. 因此, MPI_Recv 不再有偶然会从parallel_fft( )的MPI_Send中接收msg2的危险了. 2 MPI中的消息信封 癸托眼寐痹言雅勃摔蕾邵翔磅幼坎辙试丸佬奴圣滞蝎汛嫌买妊佰丙鸣王烛MPI并行编程MPI并行编程 考虑如下由10个进程执行的代码: 例8 MPI中的新通信子 2 MPI中的消息信封 MPI_Comm MyWorld, SplitWorld; int my_rank,group_size, Color, Key; MPI_Init(argc, argv); MPI_Comm_dup(MPI_COMM_WORLD,MyWorld); MPI_Comm_rank(MyWorld,my_rank); MPI_Comm_size(MyWorld,group_size); Color=my_rank%3; Key=my_rank/3; MPI_Comm_split(MyWorld,Color,Key,SplitWorld); 缺踊删瘫慕兆示蒸侧旭抬碑努淌柏鹃畅肄刚铺鸭究侨咒摆缨倡涤垫鸵枪饿MPI并行编程MPI并行编程 MPI_Comm_dup(MPI_COMM_WORLD,MyWorld) 将创建一个新的通信子MyWorld, 它是包含与原始的MPI_COMM_WORLD相同的10个进程的进程组,但有不同的上下文. 2 MPI中的消息信封 寨闹良市蠢叭啼片丁燎探墅湛耐肖易凳可阅讳漳骤冲讶汾矩谚港迷涩喜帅MPI并行编程MPI并行编程 MPI-1被设计成使不同通信子中的通信是相互分开的, 以及任何群集通信是与任何点对点通信分开的, 即使它们是在相同的通信子内. 通信子概念尤其方便了并行库的开发. MPI-1只支持组内通信 (intra-communication) MPI-2支持组间通信 (inter-communication) 2 MPI中的消息信封 率还辑戈蹄吕仅业茅淮嘶兔归
您可能关注的文档
- 第11章 存储器和可编程逻辑器件.ppt
- FIDIC合同条件概述.ppt
- 第3章 数据链路层.ppt
- 1-1信息检索基础知识.ppt
- 4.1 FX系列PLC的内部系统配置.ppt
- 第8章 信息系统的管理.ppt
- 第一讲:基础知识.ppt
- SQL Server第9章数据的导入导出.ppt
- 数据结构(C语言描述)1-5章.ppt
- CAD创建文字.ppt
- 公司行为规范.pptx
- 山西焦化集团有限公司校园招聘模拟试题附带答案详解汇编.docx
- 山西焦煤集团有限责任公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版1套.docx
- 员工聘用协议二零二五年.docx
- 公司行为礼仪培训.pptx
- 山西焦化集团有限公司校园招聘模拟试题附带答案详解带答案.docx
- 电动伸缩门购销合同范例.docx
- 山西焦煤集团有限责任公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版及参考答.docx
- 山西焦化集团有限公司校园招聘模拟试题附带答案详解必考题.docx
- 2025年一建《机电工程管理与实务》考试质量控制与验收施工成本管理试题.docx
文档评论(0)