3.7.2 通信初始化 BACKWARDFORWARD


我们使用与阻塞通信一样的命名约定: 用于缓存(buffered)、同步(synchronous)、或准备好(ready)模式的一个前缀B, S, 或R。此外,前缀I(immediate)表示这个调用是非阻塞的。

MPI_ISEND(buf, count, datatype, dest, tag, comm, request)
 IN buf 发送缓存的起始地址(选择类型)
 IN count 发送缓存中元素的个数(整型)
 IN datatype 每个发送缓存元素的数据类型(句柄)
 IN dest 目的进程号(整型)
 IN tag 消息标志(整型)
 IN comm 通信子(句柄)
 OUT request 通信请求(句柄)

int MPI_Isend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

MPI_ISEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
 <type>BUF(*)
 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR

开始一个标准模式的非阻塞发送。

MPI_IBSEND(buf, count, datatype, dest, tag, comm, request)
 IN buf 发送缓存的起始地址(选择类型)
 IN count 发送缓存中元素的个数(整型)
 IN datatype 每个发送缓存元素的数据类型(句柄)
 IN dest 目的进程号(整型)
 IN tag 消息标志(整型)
 IN comm 通信子(句柄)
 OUT request 通信请求(句柄)

int MPI_Ibsend(void* buf, int count, MPI_Datatype, datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

MPI_IBSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
 <type>BUF(*)
 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)

开始一个缓存模式的非阻塞发送。

MPI_ISSEND(buf, count, datatype, dest, tag, comm, request)
 IN buf 发送缓存的起始地址(选择类型)
 IN count 发送缓存中元素的个数(整型)
 IN datatype 每个发送缓存元素的数据类型(句柄)
 IN dest 目的进程号(整型)
 IN tag 消息标志(整型)
 IN comm 通信子(句柄)
 OUT request 通信请求(句柄)

int MPI_Issend(void* buf, int count, MPI_Datatype, datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

MPI_ISSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
 <type>BUF(*)
 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR

开始一个同步模式的非阻塞发送。

MPI_IRSEND(buf, count, datatype, dest, tag, comm, request)
 IN buf 发送缓存的起始地址(选择类型)
 IN count 发送缓存中元素的个数(整型)
 IN datatype 每个发送缓存元素的数据类型(句柄)
 IN dest 目的进程号(整型)
 IN tag 消息标志(整型)
 IN comm 通信子(句柄)
 OUT request 通信请求(句柄)

int MPI_Irsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)

MPI_IRSEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR)
 <type>BUF(*)
 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR

开始一个准备好模式非阻塞发送。

MPI_IRECV(buf, count, datatype, source, tag, comm, request)
 OUT buf 接收缓存的起始地址(选择类型)
 IN count 接收缓存中元素的个数(整型)
 IN datatype 每个接收缓存元素的数据类型(句柄)
 IN source 源进程号(整型)
 IN tag 消息标志(整型)
 IN comm 通信子(句柄)
 OUT request 通信请求(句柄)

int MPI_Irecv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request)

MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR)
 <type>BUF(*)
 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR

开始一个非阻塞接收。   

这些调用分配一个通信请求对象,把它和请求句柄(参数request)连接。之后,这个请求能被用于查寻这个通讯的状态或等待它的完成。   

一个非阻塞发送调用表示系统可以开始从发送缓存拷贝数据。在一个非阻塞发送操作被调用之后,到发送完成时,发送者才能存取这个发送缓存的任何部分。   

一个非阻塞接收调用表示系统可以开始把数据写入接收缓存。在一个非阻塞接收操作被调用以前,到接收完成时,这个接收者才能存取这个接收缓存的任何部分。   


Copyright: NPACT
BACKWARDFORWARD