第六讲消息传递编程接口MPI.ppt
《第六讲消息传递编程接口MPI.ppt》由会员分享,可在线阅读,更多相关《第六讲消息传递编程接口MPI.ppt(59页珍藏版)》请在三一文库上搜索。
1、1,第六讲 消息传递编程接口 MPI,二、 MPI 消息传递,2,MPI 消息传递,MPI 点对点通信类型,阻塞型和非阻塞型,MPI 消息发送模式,标准模式、缓冲模式、同步模式、就绪模式,MPI 聚合通信,多个进程间的通信,3,阻塞型和非阻塞型通信,阻塞型 (blocking) 和非阻塞型 (non blocking) 通信,阻塞型通信函数需要等待指定的操作实际完成,或所涉及 的数据被 MPI 系统安全备份后才返回,非阻塞型通信函数总是立即返回,实际操作由 MPI 后台 进行,需要调用其它函数来查询通信是否完成,阻塞型通信是非局部操作,它的完成可能涉及其它进程 MPI_SEND 和 MPI_R
2、ECV 都是阻塞型的,非阻塞型通信是局部操作 在实际操作完成之前对相关数据区域的操作是不安全的 在有些并行系统上,使用非阻塞型函数可以实现计算与 通信的重叠进行 常用的非阻塞型通信函数为 MPI_ISEND 和 MPI_IRECV,4,非阻塞型发送函数,MPI_ISEND(buf,count,datatype,dest,tag,comm,request),其中 request 是输出参数,为请求句柄,以备将来查询, 其它参数含义与 MPI_SEND 相同 在 C 中 request 的数据类型是 MPI_Request; 在 FORTRAN 中 request 为整型,5,非阻塞型接收函数,M
3、PI_IRECV(buf,count,datatype,source,tag,comm,request),阻塞型/非阻塞型通信函数使用时要保持一致性!,参数中没有 status,消息的查询使用 request,6,非阻塞型通信检测,MPI_WAIT(request, status),该函数是阻塞型的,它必须等待指定的通信请求完成后才能返回,与之相应的非阻塞型函数是 MPI_TEST。成功返回时,status 中包含关于所完成的通信的消息,相应的通信请求被释放,即 request 被置成 MPI_REQUEST_NULL,7,非阻塞型通信检测,MPI_TEST(request, flag, st
4、atus),非阻塞型通信检测函数,不论通信是否完成都立刻返回, 功能同 MPI_WAIT,8,MPI_WAITANY,MPI_WAITANY(count, array_of_requests, index, status),所有请求句柄中至少有一个已经完成才返回,阻塞型函数 若有多个请求句柄已完成,则随机选择其中一个并立即返回,9,MPI_TESTANY,MPI_TESTANY(count,array_of_requests,index,flag,status),功能同 MPI_WAITANY,非阻塞型函数,10,MPI_WAITALL,MPI_WAITALL(count,array_of_r
5、equests,array_of_statuses),当所有的通信操作全部完成后才返回,否则将一直等待 阻塞型函数,11,MPI_TESTALL,MPI_TESTALL(count,array_of_requests,flag,array_of_statuses),非阻塞型,无论所有的通信操作是否全部完成都将立即返回 若有一个通信操作没有完成,则 flag 为 0/假,12,MPI_WAITSOME,MPI_WAITSOME(incount, array_of_requests, outcount, array_of_indices, array_of_statuses),阻塞型,至少有一个通
6、信操作完成才返回,13,MPI_TESTSOME,MPI_TESTSOME(incount, array_of_requests, outcount, array_of_indices, array_of_statuses),非阻塞型,若一个通信操作都没完成,则 outcount=0,14,MPI 消息检测函数,MPI_PROBE(source,tag,comm,status),该函数用于检测一个符合条件的消息是否到达。它是阻塞型函数, 必须等到一个符合条件的消息到达后才返回 参数的含义与 MPI_RECV 相同,MPI_IPROBE(source,tag,comm,flag,status),
7、非阻塞型消息检测函数 flag 在 C 中为整型,在 FORTRAN 中为逻辑型 如果符合条件的消息已到达,则 flag 为非零值/真,否则为 0/假,这两个函数中的参数 source 可以是 MPI_ANY_SOURCE,tag 也可以是 MPI_ANY_TAG,但必须指定通信器。,15,MPI_PROBE/IPROBE,16,MPI 释放通信请求函数,MPI_REQUEST_FREE(request),释放指定的通信请求(及所占用的内存资源) 若该通信请求相关联的通信操作尚未完成,则等待通信的完成, 因此通信请求的释放并不影响该通信的完成 该函数成功返回后 request 被置为 MPI_
8、REQUEST_NULL 一旦执行了释放操作,该通信请求就无法再通过其它任何的调用访问,17,MPI 取消通信函数,MPI_CANCEL(request),非阻塞型,用于取消一个尚未完成的通信请求 它在 MPI 系统中设置一个取消该通信请求的标志后立即返回, 具体的取消操作由 MPI 系统在后台完成。 MPI_CANCEL 允许取消已调用的通信请求,但并不意味着相应的 通信一定会被取消:若相应的通信请求已经开始,则它会正常完成, 不受取消操作的影响;若相应的通信请求还没开始,则可以释放通信 占用的资源。 调用 MPI_CANCEL 后,仍需用 MPI_WAIT,MPI_TEST 或 MPI_R
9、EQUEST_FREE 来释放该通信请求,MPI_TEST_CANCELLED(status,flag),检测通信请求是否被取消,18,MPI 消息发送模式,标准模式 ( standard mode ) 缓冲模式 ( buffered mode ) 同步模式 ( synchronous mode ) 就绪模式 ( ready mode ),MPI 提供四种点对点消息发送模式,每种发送模式都有相应的阻塞型和非阻塞型函数,19,MPI 消息发送模式,标准模式 ( standard mode ),由系统决定是先将数据复制到一个缓存区,然后返回; 还是等待数据发送出去后才返回,通常 MPI 系统会预留
10、一定大小的缓存区 标准模式阻塞型/非阻塞型函数: MPI_SEND/MPI_ISEND,缓冲模式 (buffered mode ),将数据复制到一个用户指定的缓存区,然后立即返回 消息的发送由 MPI 系统后台进行 用户必须保证提供的缓存区足以保存所需发送的数据 缓冲模式阻塞型/非阻塞型函数: MPI_BSEND/MPI_IBSEND,20,MPI 消息发送模式,同步模式 ( synchronous mode ),在标准模式的基础上要求确认接收方开始接收数据后才返回 同步模式阻塞型/非阻塞型函数: MPI_SSEND/MPI_ISSEND,就绪模式 ( ready mode ),发送时假设接收
11、方已经处于就绪状态,否则产生一个错误 缓冲模式阻塞型/非阻塞型函数: MPI_RSEND/MPI_IRSEND,MPI_BSEND、MPI_SSEND、MPI_RSEND 的用法同 MPI_SEND MPI_IBSEND、MPI_ISSEND、MPI_IRSEND 的用法同 MPI_ISEND,21,点对点通信函数小结,22,持久通信请求,持久通信请求用于以完全相同的方式重复收发的消息。 目的是减少处理消息时的开销,并简化 MPI 程序,持久通信请求收发步骤:先创建一个请求,然后进行收发,持久通信请求的创建(非阻塞型持久通信请求),MPI_SEND_INIT(buf,count,datatyp
12、e,dest,tag,comm,request) MPI_RECV_INIT(buf,count,datatype,source,tag,comm,request),持久通信请求的收发,MPI_START(request) MPI_STARTALL(count, array_of_requests),持久通信请求的完成与释放:持久通信请求可反复调用 MPI_START 或 MPI_START_ALL 来进行多次通信,23,持久通信请求的创建,参数含义与 MPI_ISEND 相同 该函数并不开始消息的实际发送,而只是创建一个请求句柄, 通过参数 request 返回给用户程序,留待以后实际发送时
13、用 MPI_SEND_INIT 对应标准的非阻塞型消息发送,相应地有 MPI_BSEND_INIT,MPI_SSEND_INIT 和 MPI_RSEND_INIT, 分别对应于缓冲、同步和就绪模式的非阻塞型消息发送,MPI_SEND_INIT(buf,count,datatype,dest, tag,comm,request),MPI_RECV_INIT(buf,count,datatype,source, tag,comm,request),24,聚合通信,聚合通信 (collective communication) 是指多个进程之间的通信,根据数据的流向,聚合通信可分为三种类型: 一对多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 消息 传递 编程 接口 MPI
链接地址:https://www.31doc.com/p-2572198.html