MPI消息检测函数 MPI PROBE(source,tag,comm,status) ●该函数用于检测一个符合条件的消息是否到达。它是阻塞型函数, 必须等到一个符合条件的消息到达后才返回 ●参数的含义与MPI RECV相同 MPI IPROBE(source,tag,comm,flag,status) ·非阻塞型消息检测函数 ●fag在C中为整型,在FORTRAN中为逻辑型 ●如果符合条件的消息已到达,则flag为非零值/真,否则为0/假 t这两个函数中的参数source可以是MPI ANY_SOURCE,tag也可以是 MPI ANY TAG,但必须指定通信器。 http://math.ecnu.edu.cn/-jypan 16
http://math.ecnu.edu.cn/~jypan 16 MPI 消息检测函数 MPI_PROBE(source,tag,comm,status) 该函数用于检测一个符合条件的消息是否到达。它是阻塞型函数, 必须等到一个符合条件的消息到达后才返回 参数的含义与 MPI_RECV 相同 MPI_IPROBE(source,tag,comm,flag,status) 非阻塞型消息检测函数 flag 在 C 中为整型,在 FORTRAN 中为逻辑型 如果符合条件的消息已到达,则 flag 为非零值/真,否则为 0/假 † 这两个函数中的参数 source 可以是 MPI_ANY_SOURCE,tag 也可以是 MPI_ANY_TAG,但必须指定通信器
MPI PROBE/IPROBE int MPI_Probe(int source,int tag, MPI_Comm comm,MPI_Status status) MPI_PROBE(SOURCE,TAG,COMM,STATUS,IERR) F77 INTEGER SOURCE,TAG,COMM,IERR, STATUS(MPI_STATUS_SIZE) int MPI_IProbe(int source,int tag, int *flag,MPI_Comm comm, MPI_Status status) MPI_IPROBE(SOURCE,TAG,COMM,FLAG,STATUS,IERR) F77 LOGICAL FLAG INTEGER SOURCE,TAG,COMM,IERR, STATUS(MPI_STATUS_SIZE) http://math.ecnu.edu.cn/-jypan 17
http://math.ecnu.edu.cn/~jypan 17 MPI_PROBE/IPROBE C int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status * status) F77 MPI_PROBE(SOURCE, TAG, COMM, STATUS, IERR) INTEGER SOURCE, TAG, COMM, IERR, STATUS(MPI_STATUS_SIZE) C int MPI_IProbe(int source, int tag, int *flag, MPI_Comm comm, MPI_Status * status) F77 MPI_IPROBE(SOURCE, TAG, COMM, FLAG, STATUS, IERR) LOGICAL FLAG INTEGER SOURCE, TAG, COMM, IERR, STATUS(MPI_STATUS_SIZE)
MPI释放通信请求函数 MPI REQUEST FREE(request) ●释放指定的通信请求(及所占用的内存资源) ●若该通信请求相关联的通信操作尚未完成,则等待通信的完成, 因此通信请求的释放并不影响该通信的完成 ●该函数成功返回后request被置为MPI_REQUEST_NULL ●一旦执行了释放操作,该通信请求就无法再通过其它任何的调用访问 http://math.ecnu.edu.cn/-jypan 18
http://math.ecnu.edu.cn/~jypan 18 MPI 释放通信请求函数 MPI_REQUEST_FREE(request) 释放指定的通信请求(及所占用的内存资源) 若该通信请求相关联的通信操作尚未完成,则等待通信的完成, 因此通信请求的释放并不影响该通信的完成 该函数成功返回后 request 被置为 MPI_REQUEST_NULL 一旦执行了释放操作,该通信请求就无法再通过其它任何的调用访问
MPI取消通信函数 MPI CANCEL(request) ●非阻塞型,用于取消一个尚未完成的通信请求 ●它在MPI系统中设置一个取消该通信请求的标志后立即返回, 具体的取消操作由MPI系统在后台完成。 ●MPI CANCEL允许取消已调用的通信请求,但并不意味着相应的 通信一定会被取消:若相应的通信请求已经开始,则它会正常完成, 不受取消操作的影响;若相应的通信请求还没开始,则可以释放通信 占用的资源。 ●调用MPI CANCEL后,仍需用MPI WAIT,MPI TEST或 MPI REQUEST FREE来释放该通信请求 MPI TEST CANCELLED(status,flag) ●检测通信请求是否被取消 http://math.ecnu.edu.cn/-jypan 19
http://math.ecnu.edu.cn/~jypan 19 MPI 取消通信函数 MPI_CANCEL(request) 非阻塞型,用于取消一个尚未完成的通信请求 它在 MPI 系统中设置一个取消该通信请求的标志后立即返回, 具体的取消操作由 MPI 系统在后台完成。 MPI_CANCEL 允许取消已调用的通信请求,但并不意味着相应的 通信一定会被取消:若相应的通信请求已经开始,则它会正常完成, 不受取消操作的影响;若相应的通信请求还没开始,则可以释放通信 占用的资源。 调用 MPI_CANCEL 后,仍需用 MPI_WAIT,MPI_TEST 或 MPI_REQUEST_FREE 来释放该通信请求 MPI_TEST_CANCELLED(status,flag) 检测通信请求是否被取消
华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents MPI消息发送模式 ◆ 标准模式(standard mode) 点对点通信 缓冲模式(buffered mode) 2 消息发送模式 同步模式(synchronous mode) 3 聚合通信 就绪模式(ready mode) http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 点对点通信 2 MPI 消息发送模式 3 消息发送模式 聚合通信 标准模式 ( standard mode ) 缓冲模式 ( buffered mode ) 同步模式 ( synchronous mode ) 就绪模式 ( ready mode )