C 对于一个循环后退出的循环-MPI

C 对于一个循环后退出的循环-MPI,c,loops,C,Loops,我正在处理一个发送/接收MPI程序,由于某种原因,循环只迭代一次,然后退出。有人知道为什么吗 守则: #include <mpi.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int rank; int b2, a1; MPI_Status status; MPI_Init(NULL, NULL); MPI_Co

我正在处理一个发送/接收MPI程序,由于某种原因,循环只迭代一次,然后退出。有人知道为什么吗

守则:

#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int rank;
    int b2, a1;
    MPI_Status status;
    MPI_Init(NULL, NULL);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    for (int j = 0; j < 100; j++) {
        if (rank == 0) {
            a1 = 10;
            MPI_Sendrecv(&a1, 1, MPI_INT, 1, 99,
                    &b2, 1, MPI_INT, 1, 99,
                    MPI_COMM_WORLD, MPI_STATUS_IGNORE);

        } else {
            a1 = 20;
            MPI_Sendrecv(&a1, 1, MPI_INT, 0, 99,
                    &b2, 1, MPI_INT, 0, 99,
                    MPI_COMM_WORLD, MPI_STATUS_IGNORE);
        }
    }

    printf("Process %d: received %d\n", rank, b2);
    MPI_Finalize();

}

您的
printf()
不在循环中。它只打印一次也就不足为奇了。

您的
printf()
不在循环中。毫不奇怪,它只打印了一次。

我真不敢相信我错过了。谢谢,我真不敢相信我错过了。非常感谢。
Process 1: received 10
Process 0: received 20