我听说MPI程序中的所有代码都应在MPI_Init
和MPI_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;
}
答案 0 :(得分:2)
任何一个都没问题。 MPI标准规定的唯一要求是,在致电MPI_INIT
或致电MPI_FINALIZE
之前,您无法使用任何其他MPI功能。你可以在这些电话之前和之后做其他事情,但你不能使用MPI。
MPI Standard中有关于此内容的整个部分(第8.7节,旧的HTML版本here)。