MPI笔记_计算机软件及应用_IT计算机_专业资料.docx
《MPI笔记_计算机软件及应用_IT计算机_专业资料.docx》由会员分享,可在线阅读,更多相关《MPI笔记_计算机软件及应用_IT计算机_专业资料.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1,数据类型MPI_Status 状态类型MPLAint地址偏移类型MPI.Datatype 数据类型 MPI_Comm通信域类型 MPI_Group 组类型 MPLOp归约操作类型 MPI_Request MPI_Errhandler MPI_Copy_function MPI_Delete_function MPI_User_function2. MPI预定义的与C 一致的数据类型MPI预定义数据类型相应的cMPI CHARsigned charMPLSHORTsigned short intMPI INTsigned intMPLLONGsigned long intMPI UNSIGN
2、ED CHARunsigned charMPI UNSIGNED_SHORTunsigned short intMPLUNSIGNEDunsigned intMPI UNSIGNED-LONGunsigned long intMPLFLOATfloatMPLDOUBLEdoubleMPLLONG-DOUBLElong doubleKPLBYTE无对应类型MPI PACKED无对应类型附加的数据类型:MPLLONG.LONGNTlong long int其他:复数型(MPLCOMPLEX)、逻辑型(MPLLOGICAL)、浮点型(MPLREAL MPI_DOUBLE_PRECISION)3. M
3、PI.MAXLOC和MPI.MINLOC在C中用到的类型MP1数据类型对应的c类型MPI FLOAT INTstruct float, int |MPI LONG INTstruct long, int MPI DOUBLE INTstruct double, int MPI SHORT INTstruct short, int )MPI 2INTstruct ! inu int !MPI_LONG_DOUBLE_INTstmct long double, int;可选MPI_LONG_LONG_INTstruct long long, int:可选MPI数据类型用途MPI PACKEDFor
4、 MPI Pack and MPI UnpackMPI UBFor MPI Type struct; an upper-bound indicatorMP1_LBFor MPI Type struct; a lower-bound indicator5.通信域,在C中其类型为MPI.Comm可用的預定义通信域含义MPI_COMM_WORLD包含所有进程MP1_COMM_SELF只包含调用进程本身6 .进程组,进程组在C中是MPI_Group类型预定义进程组含义MPI_GROUP_EMPTY不包含任何成员的进程组7 .进程组比较结果比较返回的结果含义MPIJDENT完全相同MPI_CONGRUE
5、NT进程组完全相同MPI_SIM1LAR成员相同但顺序不同MPIJJNEQUAL不同8 .组调用,些组调用要进行运算操作(MPI_REDUCE , MP1.ALLREDUCE , MPI_REDUCE_SCATTER, MPI_SCAN),该操作的类型在 C 中是 MPI_Op 类型发定义也调用操作及含义MPLMAX大他MPI MIN小被MPI.SUM求和MPI-PROD求61MPLLAND逻班MPI.BAND技位与MPI_LOR選拗或MPLBOR技位或MPI_LXOR逻釈片或MPIBXOR技位异或MPLMINLOC返回最小值和位置MPLMAXLOC返回最大位和位置9 .关键字值关键字含义MP
6、I_TAG_UB最大的!ag标识数值MPIJ4OS主进程标识MPIJOI/O进程标识MPI_WTIME_IS_GLOBAL若MPI_WTIME全局同步则返回1无效对象标识含义MP1_COMM_NULL无效通信域MP1_OP_NULL无效操作MP1_GROUP_NULL无效进程组MPLDATATYPE_NULL无效数据类型MP1_REQUEST_NULL无效对象MPI_ERRHANDLER_NULL无效错误句柄11.预定义常量常量:名含义MPI_MAX_PROCESSOR_NAME机器名最大长度MP1_MAX_ERROR_STR1NG错误字符串最大长度MPI-UNDEFINED用于无定义或不知道
7、的整数值MPI_UNDEF【NED_RANK不知道的进程标识MP1_KEYVAL_INVAUD未初始化的无效关键字值mpi_bsend_6verhead缓存发送时增加的空间MP1_PROC_NULL空的进程标识MPI_ANY_SOURCE从任何源接收MPI_ANY_TAG匹配任何lag标识MP1_BOTTOM地址空冋的绝対起始地址12.拓扑类型拓扑类别台乂MP1_GRAPH通用图拓扑MPLCART笛卡儿拓扑13 . MPI状态,MPLStatus数据类型的结构,它包括三个成员状态成员含义MPI_SOURCE发送消息的进程MP1_TAG该消息的标识MPI_ERROR返回的错误代码14 .其它类型
8、与函数MPI-Aintc中的地址类型MPl_Handler functionC中处理错误的函数M PI_U ser_functionC中的用户定义函数M Pl_Copy_function属性拷贝函数MP1_NULL_COPY_FN预定义拷贝函数MPl_Delete_function删除属性函数MP1_NULL_DELETE_FN删除函数MPI_DUP_FN豆制函数mpi_errors_are_fatal强制退出的错误句柄MPI_ERRORS_RETURN返回错误代码的句柄错误代码含义MPI_SUCCESS成功MPI_ERR_BUFFER无效缓冲区指针MP1_ERR_COUNT无效记数参数MPI
9、_ERR_TYPE无效数据类型MPI_ERR_TAG无效tag标识MPI_ERR_COMM无效通信域MP1_ERR_RANK无效进程标识MPI_ERR_ROOT无效ROO!根进程MP1_ERR_GROUP传递给函数的组为空MPI_ERR_OP无效操作MP1_ERR_TOPOLOGY无效拓扑MPI_ERR_DIMS不合法的维MPI_ERR_ARG无效参数MP1_ERR_UNKNOWN未知的错误MPI_ERR_TRUNCATE接收时消息被核断MPI_ERR_OTHER用错误字符串表示的其它错误MP1_ERR_INTERN内部错误代码MPI_ERRJN_STATUS错误在status中MPI_ERR
10、_PENDING孤立挂起对象MPI_ERR_REQUEST不合法的对象句柄MPI_ERR_LASTCODE最后个错误代码16. MPI的类型匹配规则MPI_BYTE和MPI.PACKED可以和任何以字节为单位的存储相匹配,包含这些字节的类型 是任意的,MPI_TYPE用于不加修改地传送内存中的二进制值,MPLPACK用于数据的打 包和解包(MPLUNPACK)。类型匹配规则可以概括为:有类型数据的通信,发送方和接收方均使用相同的数据类型。无类型数据的通信,发送方和接收方均以MPLBYTE作为数据类型。打包数据的通信,发送方和接收方均使用MPLPACKED.发送MPLPACKED格式的数据可以用
11、任意数据类型来接收,只要它和实际接收到的消 息的数据类型相匹配;以任何类型发送的消息(包括MPLPACKED类型)都可以用 MPLPACKED类型接收。17. MPI通信域MPI通信域包括两部分:进程组和通信上下文。进程组即所有参加通信的进程的集合。通信 上下文提供个相对独立的通信区域,不同的消息在不同的上下文中进行传递,不同上下文 的消息互不干涉,通信上下文可以将不同的通信区别开来。18,安全的通信调用次序当两个进程需要相互交换数据时,个进程的发送操作在前,接收操作在后;而另一个进程 的接收操作在前,发送操作在后,前后两个发送和接收操作要相互匹配。19. MP!并行程序的两种基本模式对等模式
12、:MPI程序的各个进程的功能、地位相同或相近,MPI程序的代码也应该是相近 的,所不同的只是处理的对象和操作的数据。主从模式:MPI程序的各个进程所起的作用和地位并不相同,一个或者些进程完成一类任 务,而另外的进程完成其它的任务,这些功能或者地位不同的进程所对应的代码也有较大的 差别。20. 虚拟进程虚拟进程(MPLPROC一NULL)是不存在的假想进程,在MPI中的主要作用是充当真实进 程通信的目或源。一个真实进程向虚拟进MPI_PRC_NULL发送消息时会立即成功返回,一 个真实进程从虚拟进程MPLPROC一NULL的接收消息时也会立即成功返回,并且对接收缓 冲区没有任何改变。21. MP
13、I的四种通信模式表格6 MPI的通信模式通信模式发送接收标准通信模式MP1_SENDMP1_RECV緩存通信模式MPLBSEND同步通信模式MPI_SSEND就绪通信模式MPI_RSEND标准通信模式:是否对发送的数据进行缓存是由MPI自身决定的,而不是山并行程序员来 控制。对于非阻塞通信,发送操作虽然没有完成,但是发送调用可以正确返冋。进程1接收消息进程发送消息不依赖依赖接收埠程 接喔进程发送完成緩存消息发送完成全部接收开始接收图32标准通信模式缓存通信模式:由用户直接对通信缓冲区进行申请、使用和释放。缓存通信模式不管接收操 作是否启动,发送操作都可以执行,当缓存发送返回后,只有当缓冲区中的
14、消息发送出去后, 可以释放该缓冲区。对丁非阻塞发送,正确退出并不意味者缓冲区可以被其它的操作任意 使用。发送进程图33缓存通信模式MPLBUFFER.ATTACH将大小为size的缓冲区递交给MPLMPLBUFFER-DETACH将提交的大小为size的缓冲区buffer收回,该调用是阻塞调用,它 一直等到使用该缓存的消息发送完成后才返回。#include mpi.h#include int main (int argc, char *argv)(int id,size;MPI_Status status;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM
15、_WORLD, &id);if(id=O)int se=100;int *buffer,*dbuffer,bsize,dsize;MPI_Pack_size( 1 ,MPI_INT,MPI_COMM_WORLD,&bsize);buffer=(int *)malloc(bsize+MPI_BSEND_OVERHEAD);if(! buffer)fprintf(stderr,uCant allocate bsend buffer of size %dnM,bsize);MPI_Abort(MPI_COMM_WORLD, 1);)MPI_Buffer_attach(buffer,bsize+MPI
16、_BSEND_OVERHEAD);MPI_Bsend(&se, 1 ,MPI_INT, 1,99,MPI_COMM_WORLD);MPI_Buffer_detach(&dbuffer,&dsize);else(int re;MPI_Recv(&re, 1, MPINT, 0, 99,MPI_COMM_WORLD, &status);printf(Hid=%d received %dn”,id, re);MPI_Finalize();)同步通信模式:同步发送却必须等到相应的接收进程开始后可以正确返回。同步发送返回 后,意味着发送缓冲区中的数据已经全部被系统缓冲区缓存,因此发送缓冲区可以被释放或
17、重新使用。图34同步通信模式就绪通信模式:只有当接收进程的接收操作已经启动时,发送进程才可以肩动发送操作,发 送的正确返回则发送缓冲区可以重复使用。要求接收操作先于发送操作而被启动。对于非 阻塞发送操作的正确返回,并不意味着发送已完成。22.非阻塞通信阻塞通信:发送进程接收进程图35就绪通信模式明塞与萋阻塞调用的対比阻通信非阻通信在通信完成之前不 能做其它的事情在通信执行过程中 可以执行其操作图45阻塞消息发送和接收非阻塞通信:主要用于计算和通信的重叠,在该通信硬件完成该通信操作的同时,处理机可 以同时进行计算操作。由于当非阻塞通信调用返回时一般该通信操作还没有完成,因此对于 非阻塞的发送操作
18、,发送缓冲区必须等到发送完成后才能释放。同理对于非阻塞的接收操作, 该调用返回后并不意味着接收消息已全部到达,必须等到消息到达后可以引用接收到的消 息数据。表格7非阻塞MPI通信模式通信模式发送接收标准通信模式MP1JSENDMPI_IRECV缓存通信模式MPIJBSEND同步通信模式MPLISSEND就绪通信模式MP1JRSEND重复非阻塞通信标准通信模式MPI_SENDJNITMP1_RECVJNIT缓存通信模式MPLBSENDJNIT同步通信模式MP1_SSEND_INIT就绪通信模式MPI RSENDJN1T表格8非阻塞通信的完成与检测非阻塞通信的数量检测完成个非阻塞通信MP1_TES
19、TMP1_WAIT任意个非阻塞通信MP1_TESTANYMPI_WAITANY一到多个非阻塞通信MP1_TESTSOMEMPI_WAITSOME所有非阻塞通信MPI_TESTALLMPI_WAITALL阻塞发送非阻塞发送标准通信模式 缓存通信模式 同步通信模式 就绪通信模式 标准通信模式 缓存通信模式 同步通信模式 就绪通信模式图48不同类型的发送与接收的匹配非阻塞标准通信:MPIJSEND:调用返回立即返回,并不意味着消息已经成功发送它只表示该消息可被发送。 MPIJRECV:调用的返回并不意味着已经接收到了相应的消息,它只表示符合要求的消息 可以被接收。非阻塞同步通信:MPIJSSEND,
20、返回只是意味着相应的接收操作已经启动,并不表示消息 发送的完成。非阻塞缓存通信:需要程序员主动为该发送操作提供发送缓冲区。非阻塞就绪通信:MPIJRSEND,当调用启动之前相应的接收操作必须已经启动。23 .非阻塞通信的MPI_ WAIT与MPI.TEST单个非阻塞通信:MPLWAIT:等到非阻塞通信完成后返回,同时释放该阻塞通信对象。MPLTEST:若该非阻塞通信已经结束,则它和MPLWAIT的效果完全相同,完成标志 flag=true!若非阻塞通信还没有完成,不必等待该非阻塞通信的完成而是可以直接返回,但 是完成标志flag=false,同时也不释放相应的非阻塞通信对象。 多个非阻塞通信:
21、MPLWAITANY:等待非阻塞通信对象表中任何一个非阻塞通信对象i的完成,释放已完成 的非阻塞通信对象然后返回,index=i,即完成的是非阻塞通信对象表中的第i个对象对应的 非阻塞通信。MPLWAITALL:必须等到非阻塞通信对象表中所有的非阻塞通信对象相应的非阻塞操作都 完成后返回。MPLWAITSOME:只要有一个或多个非阻塞通信完成,则该调用就返回。MPLTESTANY:测试非阻塞通信对象表中是否有任何个对象已经完成,如真则令 flag=ture,否则为 falseMPLTESTALL:当所有的非阻塞通信对象都完成时,使得。ag=true返回,并且释放所有 的查询对象:只要有任何个没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MPI 笔记 计算机软件 应用 _IT 计算机 专业 资料
限制150内