MPI_Iscatterv函数
语法
int MPIAPI MPI_Iscatterv(
_In_opt_ const void *sendbuf,
_In_opt_ const int sendcounts[],
_In_opt_ const int displs[],
_In_ MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_ int recvcount,
_In_ MPI_Datatype recvtype,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
参数
sendbuf [in, optional]
指向缓冲区的指针,该缓冲区包含根进程要发送的数据。对于所有非根进程,将忽略此参数。
如果 comm 参数引用内部通信器,则可以通过在根进程中指定 MPI_IN_PLACE 来指定就地选项。 将忽略 recvcount 和 recvtype 参数。 散点向量仍被视为包含 n 段,其中 n 是组大小;与根进程对应的段不会移动。
sendcounts[] [in, optional]
要发送到每个进程的元素数。 如果 sendcounts[i] 为零,则该过程的消息的数据部分为空。对于所有非根进程,将忽略此参数。
displs[] [in, optional]
要发送到每个通信器进程的数据的位置。 数组中的每个位置都相对于 sendbuf 数组的相应元素。在 sendbuf、 sendcounts 和 displs 参数数组中,每个数组的第 n个元素引用要发送到 第 n个通信器进程的数据。
此参数仅在根进程中有效。
sendtype [in]
缓冲区中每个元素的数据类型。对于所有非根进程,将忽略此参数。
recvbuf [out, optional]
指向缓冲区的指针,该缓冲区包含在每个进程上接收的数据。 缓冲区中元素的数目和数据类型在 recvcount 和 recvtype 参数中指定。recvcount [in]
接收缓冲区中的元素数。 如果计数为零,则消息的数据部分为空。recvtype [in]
接收缓冲区中元素的数据类型。root [in]
指定通信器内发送进程中的排名。comm [in]
MPI_Comm通信器句柄。request [out]
表示通信操作 的MPI_Request 句柄。
返回值
返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。
在 Fortran 中,返回值存储在 IERROR 参数中。
Fortran
MPI_ISCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNTS(*), DISPLS(*), SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR
注解
非阻塞调用将启动集体缩减操作,该操作必须在单独的完成调用中完成。 启动后,操作可以独立于参与进程中的任何计算或其他通信进行。 通过这种方式,非阻塞性缩减操作可以通过在“后台”中运行缩减操作来缓解可能的同步影响。
(所有完成调用(例如 ,MPI_Wait) )都支持非阻塞性缩减操作。
要求
产品 |
Microsoft MPI v7 |
标头 |
Mpi.h;Mpif.h |
库 |
Msmpi.lib |
DLL |
Msmpi.dll |