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!