嵌套非阻塞集合体是有效的 MPI-3 吗?

计算科学 C mpi
2021-12-07 08:48:34

以下是符合标准的 MPI-3 C 程序吗?

#include <mpi.h>
int main(int argc, char** argv)
{
  int dlocalouter=1, dglobalouter=0, dlocalinner=1, dglobalinner=0;
  MPI_Request router, rinner;
  MPI_Init(&argc,&argv);
  MPI_Iallreduce(&dlocalouter,&dglobalouter,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD,&router);
  MPI_Iallreduce(&dlocalinner,&dglobalinner,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD,&rinner);
  MPI_Wait(&rinner,MPI_STATUS_IGNORE);
  MPI_Wait(&router,MPI_STATUS_IGNORE);
  MPI_Finalize();
  return 0;
}
1个回答

是的。

我问的原因是,对于特定的实现(cray-mpich 7.0.4),在特定系统的特定环境中,第二次MPI_Wait调用不会返回。这可能是由于 MPI 库或相关通信库中的某个错误,并通过升级到 MPI 实现的更新版本 (cray-mpich 7.1.1) 进行了补救。