版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22MPI点到点通信2 2版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22 MPI的消息传递过程三个阶段:(1)消息装配(2)消息传递(3)消息拆卸3版权所有 计算机协会 2006,By CSKIT Education & Training编写一个简单的实现发送和接收功能的程序
2、#include “mpi.h”main(int argc, int *argv )char message20;int myrank;MPI_Init( &argc, &argv );/* MPI程序的初始化*/ MPI_Comm_rank( MPI_COMM_WORLD, &myrank );/* 得到当前进程的标识*/if (myrank = 0) /* 若是 0 进程*/strcpy(message,Hello, process 1);MPI_Send(message, strlen(message), MPI_CHAR, 1,99,MPI_COMM_WORLD
3、);else if(myrank=1) /* 若是进程 1 */MPI_Recv(message, 20, MPI_CHAR, 0, 99, MPI_COMM_WORLD, &status);printf(received :%s:, message);MPI_Finalize();/* MPI程序结束*/ 4 4版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22MPI消息的组成 MPI消息包括信封和数据两个部分,信封指出了发送或接收消息的对象及相关信息,而
4、数据是本消息将要传递的内容。信封和数据又分别包括三个部分。可以用一个三元组来表示。信封:数据:5 5版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22 MPI_SEND 语句的消息信封和消息数据语句的消息信封和消息数据6 6版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22 MPI_RECV语句的消息信封和消息数据语句的消息信封和消息数据
5、7 7版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22MPI消息(数据类型) MPI的消息类型分为两种:预定义类型和派生数据类型的消息类型分为两种:预定义类型和派生数据类型(Derived Data Type) 预定义数据类型预定义数据类型:MPI支持异构计算支持异构计算(Heterogeneous Computing),它指在不同计算机系统上运行程序,每台,它指在不同计算机系统上运行程序,每台计算可能有不同生产厂商,不同操作系统。计算可能有不同生产厂商,不同操作
6、系统。 MPI通过提供预定义数据类型来解决异构计算中的互操作性问题,建立它通过提供预定义数据类型来解决异构计算中的互操作性问题,建立它与具体语言的对应关系。与具体语言的对应关系。 派生数据类型:派生数据类型:MPI引入派生数据类型来定义由数据类型引入派生数据类型来定义由数据类型不同且地址空间不连续的数据项组成的消息。不同且地址空间不连续的数据项组成的消息。 8 8版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22表 2.1 MPI 中预定义的数据类型 MPI(C 语
7、语言言绑绑定定) C C MPI(Fortran 语语言言绑绑定定) Fortran MPI_BYTE MPI_ BYTE MPI_CHAR signed char MPI_CHARACTER CHARACTER MPI_COMPLEX COMPLEX MPI_DOUBLE double MPI_DOUBLE_PRECISION DOUBLE_PRECISION MPI_FLOAT float MPI_REAL REAL MPI_INT int MPI_INTEGER INTEGER MPI_LOGICAL LOGICAL MPI_LONG long MPI_LONG_DOUBLE long
8、double MPI_PACKED MPI_PACKED MPI_SHORT short MPI_UNSIGNED_CHAR unsigned char MPI_UNSIGNED unsigned int MPI_UNSIGNED_LONG unsigned long MPI_UNSIGNED_SHORT unsigned short 9 9版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22MPI消息消息(数据类型数据类型) MPI提供了两个附加类型:MPI_BYT
9、E和MPI_PACKED 。 MPI_BYTE表示一个字节,所有的计算系统中一个字节都代表8个二进制位。 MPI_PACKED预定义数据类型被用来实现传输地址空间不连续的数据项 。1010版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22消息标签为什么需要消息标签?为什么需要消息标签?当发送者连续发送两个相同类型消息给同一个接收者,如果没有消息当发送者连续发送两个相同类型消息给同一个接收者,如果没有消息标签,接收者将无法区分这两个消息标签,接收者将无法区分这两个消息
10、 这段代码打算传送这段代码打算传送A的前的前32个字节进入个字节进入X,传送,传送B的前的前16个字节进入个字节进入Y。但是,尽管消息但是,尽管消息B后发送,但可能先到达进程后发送,但可能先到达进程Q,就会被第一个接收,就会被第一个接收函数接收在函数接收在X中。使用标签可以避免这个错误中。使用标签可以避免这个错误Process P:Send(A, 32, Q)Send(B, 16, Q)Process Q:recv (X, 32, P)recv (Y, 16, P)Process P:send(A, 32, Q, tag1)send(B, 16, Q, tag2)Process Q:recv
11、(X, 32, P, tag1)recv (Y, 16, P, tag2)1111版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22消息标签添加标签使得服务添加标签使得服务进程可以对两个不进程可以对两个不同的用户进程分别同的用户进程分别处理,提高灵活性处理,提高灵活性P r o c e ss P : se n d (r e q u e st1 ,3 2 , Q ) P r o c e ss R : se n d (r e q u e st2 , 3 2 , Q )
12、P r o c e ss Q : w h ile (tr u e ) r e c v (r e c e iv e d _ r e q u e st, 3 2 , A n y _ P r o c e ss); p r o c e ss r e c e iv e d _ r e q u e st; Process P: send(request1, 32, Q, tag1) Process R: send(request2, 32, Q, tag2) Process Q: while (true) recv(received_request, 32, Any_Process, Any_Tag, S
13、tatus); if (Status.Tag=tag1) process received_request in one way; if (Status.Tag=tag2) process received_request in another way; 1212版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22通信域 通信域(Communicator)包括进程组进程组(Process Group)和通信上下文通信上下文(Communication Context)
14、等内容,用于描述通信进程间的通信关系。 通信域分为组内通信域和组间通信域,分别用来实现MPI的组内通信(Intra-communication)和组间通信(Inter-communication)。1313版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22通信域进程组是进程的有限、有序集。进程组是进程的有限、有序集。 有限意味着,在一个进程组中,进程的个数有限意味着,在一个进程组中,进程的个数n是有限的,这里的是有限的,这里的n称称为进程组大小为进程组大小(Grou
15、p Size)。 有序意味着,进程的编号是按有序意味着,进程的编号是按0,1,n-1排列的排列的一个进程用它在一个通信域一个进程用它在一个通信域(组组)中的编号进行标识。组的大小和进程编中的编号进行标识。组的大小和进程编号可以通过调用以下的号可以通过调用以下的MPI函数获得:函数获得: MPI_Comm_size(communicator, &group_size) MPI_Comm_rank(communicator, &my_rank) 1414版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Educatio
16、n & Training2022-4-22通信域 通信上下文:安全的区别不同的通信以通信上下文:安全的区别不同的通信以免相互干扰免相互干扰 通信上下文不是显式的对象,只是作为通信域的一通信上下文不是显式的对象,只是作为通信域的一部分出现部分出现 进程组和通信上下文结合形成了通信域进程组和通信上下文结合形成了通信域 MPI_COMM_WORLD是所有进程的集合是所有进程的集合 1515版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22通信域 MPI提供丰富的函
17、数用于管理通信域提供丰富的函数用于管理通信域 函数名函数名含义含义MPI_Comm_size获取指定通信域中进程的个数获取指定通信域中进程的个数MPI_Comm_rank获取当前进程在指定通信域中的编号获取当前进程在指定通信域中的编号MPI_Comm_compare 对给定的两个通信域进行比较对给定的两个通信域进行比较MPI_Comm_dup复制一个已有的通信域生成一个新的通信域,两者除复制一个已有的通信域生成一个新的通信域,两者除通信上下文不同外,其它都一样。通信上下文不同外,其它都一样。MPI_Comm_create根据给定的进程组创建一个新的通信域根据给定的进程组创建一个新的通信域MPI
18、_Comm_split从一个指定通信域分裂出多个子通信域,每个子通信从一个指定通信域分裂出多个子通信域,每个子通信域中的进程都是原通信域中的进程。域中的进程都是原通信域中的进程。MPI_Comm_free释放一个通信域释放一个通信域1616版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22消息状态 消息状态(MPI_Status类型)存放接收消息的状态信息,包括消息的源进程标识、消息标签、包含的数据项个数等。 它是消息接收函数MPI_Recv的最后一个参数 当一个接
19、收者从不同进程接收不同大小和不同标签的消息时,消息的状态信息非常有用。 1717版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22消息状态 假设多个客户进程发送消息给服务进程请求服务,通假设多个客户进程发送消息给服务进程请求服务,通过消息标签来标识客户进程,从而服务进程采取不同过消息标签来标识客户进程,从而服务进程采取不同的服务的服务while (true)MPI_Recv(received_request,100,MPI_BYTE,MPI_Any_source,M
20、PI_Any_tag,comm,&Status);switch (Status.MPI_Tag) case tag_0: perform service type0;case tag_1: perform service type1;case tag_2: perform service type2;1818版权所有 计算机协会 2006,By CSKNeusoft Institute of InformationIT Education & Training2022-4-22点到点通信 MPI的点对点通信的点对点通信(Point-to-Point Communication )同时提供了阻塞和非阻同时提供了阻塞和非阻塞两种通信机制塞两种通信机制 。 同时也支持多种通信模式。同时也支持多种通信模式。 不同通信模式和不同通信机制的结合,便不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国广告标识行业市场深度调研及发展趋势和投资前景预测研究报告
- 2025-2030中国广告品牌营销策划行业市场供需分析及投资规划发展咨询服务报告
- 文艺复古鞋帽转让协议书
- TCP协议书栈芯片选型
- 心脏介入治疗技术与进展
- 医疗大数据与医疗保险结合
- 钒铁沉淀工安全实操知识考核试卷含答案
- 酒精发酵工安全强化知识考核试卷含答案
- 医疗政策法规培训解析
- 新教科版三年级上册科学 13《水结冰了》 标准教案
- DB37-T 3080-2022特种设备作业人员配备要求
- DL∕T 1878-2018 燃煤电厂储煤场盘点导则
- 科学精神与科学研究方法智慧树知到期末考试答案2024年
- JB-T 14509-2023 反渗透海水淡化设备技术规范
- 种猪场人工授精技术推广与应用样本
- 景观模型设计与制作课件
- 工伤认定申请表
- 信息化建设情况调查表
- 静脉导管常见并发症临床护理实践指南1
- 《两次鸦片战争》同步练习
- YS/T 767-2012锑精矿单位产品能源消耗限额
评论
0/150
提交评论