C++ 在MPI程序中放置数组创建方法的位置

C++ 在MPI程序中放置数组创建方法的位置,c++,concurrency,mpi,openmpi,C++,Concurrency,Mpi,Openmpi,我听说MPI程序中的所有代码都应该在MPI\u Init和MPI\u Finalize之间进行去噪。那么,以下差异对beow MPI计划有何影响 int main(int argc, char** argv) { MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); int** arr

我听说MPI程序中的所有代码都应该在
MPI\u Init
MPI\u Finalize
之间进行去噪。那么,以下差异对beow MPI计划有何影响

int main(int argc, char** argv)
{
    MPI_Init(&argc, &argv);

    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    int** array = createArray(START_VAL, ARRAY_SIZE);

    printArray(array, ARRAY_SIZE);

    MPI_Finalize();

    return 0;
}
而且

int main(int argc, char** argv)
{
    int** array = createArray(START_VAL, ARRAY_SIZE);

    MPI_Init(&argc, &argv);

    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    printArray(array, ARRAY_SIZE);

    MPI_Finalize();

    return 0;
}

两个都可以。MPI标准唯一规定的是,在调用
MPI\u INIT
之前或调用
MPI\u FINALIZE
之后,不能使用任何其他MPI函数。您可以在这些调用之前和之后执行其他操作,但不能使用MPI

在(第8.7节,较旧的HTML版本可用)中有一整节介绍这一点