MPI_Iscatter 函数

以非阻塞方式将来自一个成员的数据分散到组的所有成员中。 此函数执行 由 MPI_Igather函数执行的运算的反函数。

语法

int MPIAPI MPI_Iscatter(
  _In_opt_  const void         *sendbuf,
  _In_             int         sendcount,
  _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, 可选]
    指向缓冲区的指针,该缓冲区包含要发送到根进程的数据。

    对于所有非根进程,将忽略此参数。

    如果 comm 参数引用内部通信器,可以通过在根进程中指定 MPI_IN_PLACE 来指定就地选项。 将忽略 recvcountrecvtype 参数。 散点向量仍被视为包含 n 段,其中 n 是组大小;与根进程对应的段不会移动。

  • sendcount [in]
    发送缓冲区中的元素数。 如果 sendcount 为零,则消息的数据部分为空。

    对于所有非根进程,将忽略此参数。

  • sendtype [in]
    缓冲区中每个元素的数据类型。

    对于所有非根进程,将忽略此参数。

  • recvbuf [out, 可选]
    缓冲区的句柄,该缓冲区包含在每个进程中接收的数据。 缓冲区中元素的数量和数据类型在 recvcountrecvtype 参数中指定。

  • recvcount [in]
    接收缓冲区中的元素数。 如果计数为零,则消息的数据部分为空。

  • recvtype [in]
    接收缓冲区中元素的 MPI 数据类型。

  • root [in]
    指定通信器内接收进程的排名。

  • comm [in]
    MPI_Comm通信器句柄。

  • request [out]
    表示通信操作 的MPI_Request 句柄。

返回值

返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。

在 Fortran 中,返回值存储在 IERROR 参数中。

Fortran

    MPI_ISCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR

注解

非阻塞调用会启动集体缩减操作,必须在单独的完成调用中完成此操作。 启动后,操作可以独立于参与进程中的任何计算或其他通信进行。 通过这种方式,非阻塞化简操作可以通过在“后台”中运行缩减操作来缓解可能的同步影响。

非阻塞化缩减操作支持所有完成调用 (例如 MPI_Wait)

要求

产品

Microsoft MPI v7

标头

Mpi.h;Mpif.h

Msmpi.lib

DLL

Msmpi.dll

另请参阅

MPI 集合函数

MPI_Datatype

MPI_Scatter

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome