3.7.2 通信初始化 |
我们使用与阻塞通信一样的命名约定: 用于缓存(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 |