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

时间:2014-03-14 20:19:06

标签: c++ concurrency mpi openmpi

我听说MPI程序中的所有代码都应在MPI_InitMPI_Finalize之间声明。那么以下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;
}

1 个答案:

答案 0 :(得分:2)

任何一个都没问题。 MPI标准规定的唯一要求是,在致电MPI_INIT或致电MPI_FINALIZE之前,您无法使用任何其他MPI功能。你可以在这些电话之前和之后做其他事情,但你不能使用MPI。

MPI Standard中有关于此内容的整个部分(第8.7节,旧的HTML版本here)。