Hello World

在开始学习使用 MPI 时,通常有三件事情很重要。首先,你必须在准备好使用它时初始化库(你还需要在完成后完成它)。其次,你需要知道通信器的大小(用于将消息发送到其他进程的事物)。第三,你会想知道你在那个沟通者中的等级(你在那个沟通者中的进程号)。

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

int main(int argc, char **argv) {
    int size, rank;
    int res;

    res = MPI_Init(&argc, &argv);
    if (res != MPI_SUCCESS)
    {
        fprintf (stderr, "MPI_Init failed\n");
        exit (0);
    }

    res = MPI_Comm_size(MPI_COMM_WORLD, &size);
    if (res != MPI_SUCCESS)
    {
        fprintf (stderr, "MPI_Comm_size failed\n");
        exit (0);
    }
    res = MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    if (res != MPI_SUCCESS)
    {
        fprintf (stderr, "MPI_Comm_rank failed\n");
        exit (0);
    }

    fprintf(stdout, "Hello World from rank %d of %d~\n", rank, size);

    res = MPI_Finalize();
    if (res != MPI_SUCCESS)
    {
        fprintf (stderr, "MPI_Finalize failed\n");
        exit (0);
    }
}

如果你像这样运行这个程序:

mpiexec -n 2 ./hello

你可能希望获得如下输出:

Hello World from rank 0 of 2!
Hello World from rank 1 of 2!

你也可以向后获取该输出(请参阅 http://stackoverflow.com/a/17571699/491687 )以获取更多有关此内容的讨论:

Hello World from rank 1 of 2!
Hello World from rank 0 of 2!