c++ - MPI_Wait 使简单程序崩溃

标签 c++ mpi

我用 MPI 编写了一个简单的程序,但它在调用 MPI_Wait 后崩溃了:

MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

MPI_Request request;
double test = 0;
if (rank == 0) {
    MPI_Isend(&test, 1, MPI_DOUBLE, 1, 2, MPI_COMM_WORLD, &request);
} else {
    MPI_Irecv(&test, 1, MPI_DOUBLE, 0, 2, MPI_COMM_WORLD, &request);
    MPI_Wait(&request, NULL);
}

我多次忽略了代码,但无法理解程序崩溃的原因。 我正在使用 Visual Studio 2010。

最佳答案

我认为您需要使用 MPI_STATUS_IGNORE 而不是 NULL。 免责声明:我从未使用过这个库。

https://www.mpi-forum.org/docs/mpi-2.0/mpi-20-html/node47.htm

关于c++ - MPI_Wait 使简单程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37230172/

相关文章:

c - 为什么这个数组的第一个成员被 MPI_Recv 覆盖了?

compilation - Fortran 错误 : type mismatch between two unrelated subroutine calls

c++ - QSet 中的重复项

c++ - Arduino serial.available 奇怪的错误

c++ - 基本操作数具有非指针类型..但它是一个指针?

c++ - 如何在 cuda 内核中添加 vector 元素?

c++ - 如何正确处理模块

mpi - SLURM:如何在一台 PE 崩溃时禁用自 Action 业清理

fortran - MPI_Win_create 的基本 RMA 问题,当大小非零时,参数 NULL 基指针中的空指针无效

parallel-processing - MPI_Cart_shift 中的 "source"和 "destination"参数是什么?