MPI_Waitsome 函数

完成几个未完成的操作中的一些操作。

语法

int MPIAPI MPI_Waitsome(
        int                                         incount,
        _Inout_count_(incount) MPI_Request          array_of_requests,
  _Out_ int                                         *outcount,
        _Out_cap_post_count_(incount,*outcount) int *array_of_indices,
        _Out_cap_post_count_(incount,*outcount)     *array_of_statuses
);

参数

  • incount
    array_of_requests 参数中的条目数。

  • array_of_requests
    未完成操作 的MPI_Request 句柄数组。

  • outcount [out]
    已完成的请求数。

  • array_of_indices
    已完成的操作 array_of_requests 中的索引数组。 array_of_requests从 C 中的零索引,从 Fortran 中的 1 索引。

  • array_of_statuses
    已完成或 MPI_STATUSES_IGNORE的操作的状态对象的数组。

返回值

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

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

Fortran

    MPI_WAITSOME(INCOUNT, ARRAY_OF_REQUESTS, OUTCOUNT, ARRAY_OF_INDICES, ARRAY_OF_STATUSES, IERROR)
        INTEGER INCOUNT, ARRAY_OF_REQUESTS(*), OUTCOUNT, ARRAY_OF_INDICES(*),
        ARRAY_OF_STATUSES(MPI_STATUS_SIZE,*), IERROR

注解

对于 C,索引数组的范围是 0incount - 1,Fortran 的范围是 1incount

忽略 NULL 请求;如果所有请求均为 NULL,则例程返回 ,outcount 设置为 MPI_UNDEFINED

虽然可以在 array_of_requests中多次列出请求句柄,但此类操作被视为错误,并可能导致程序意外终止或产生不正确的结果。

MPI_Waitsome 提供的接口非常类似于 Unix 的“select”或“poll”调用,在高质量实现中,指示调用 MPI_Waitsome 时已完成的所有请求。 但是, MPI_Waitsome 仅保证至少有一个请求已完成;无法保证 返回所有 已完成的请求,也不保证 array_of_indices 中的条目将按递增顺序返回。 此外,执行 MPI_Waitsome 时完成的请求可能会返回,也可能不返回,具体取决于消息完成的时间。

要求

产品

HPC Pack 2012 MS-MPI 可再发行程序包、HPC Pack 2008 R2 MS-MPI 可再发行程序包、HPC Pack 2008 MS-MPI 可再发行程序包或 HPC Pack 2008 客户端实用工具

标头

Mpi.h;Mpif.h

Msmpi.lib

DLL

Msmpi.dll

另请参阅

MPI 点到点函数