我如何完成所有进程,然后使用 MPI 在 C 中进行串行工作?

How do I do finish all processes and then do serial work in C using MPI?

我已经使用 MPI 编写了一个多线程 C 程序来查找二维字符数组中的回文。我启动了 4 个线程。现在所有线程都完成后,我想杀死线程并继续串行工作?我如何实现这一目标?代码看起来像这样:

int main(int argc, char *argv[]) {
    // define some varibles
    int foo;

    // Kick off parallel work
    MPI_Init (&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &size); 
    MPI_Comm_rank(MPI_COMM_WORLD, &rank); 

    if (rank == 0) {
        // some work ...
    }
    if (rank == 1) {
        // some work ...
    }
    if (rank == 2) {
        // some work ...
    }
    if (rank == 3) {
        // some work ...
    }

    MPI_Finalize();

    // Here I want to print some results AFTER all threads are finished. E.g deallocate memory etc
    printf("Found: %d", foo);

    return 0;
}

您对 MPI 的工作原理感到困惑。 MPI 不使用线程,它使用独立的进程。每个进程执行整个主程序。*因此,如果您只希望一个进程执行工作,则可以在该代码周围设置条件 if (i_am_working_process)

*footnote: 该标准实际上允许不同的模型,但实际上这是真的。