0

我有一个问题,我不知道它是什么。我有一个带有 MPI_INIT 和 MPI_FINALIZE 的测试程序。我有一个包含 5 个子例程的模块:3 个子例程是依赖的,并且独立于其他 2 个子例程。我想把测试程序中的MPI代码放到这个模块中。我将 MPI_INIT 放在声明变量的模块中和子例程之前。我收到了一系列带有相同错误消息的错误:

This statement must not appear in the specification part of a module

“MPI_INIT 和 MPI_FINALIZE 只应调用一次”如何影响 Fortran 程序、模块和子例程?如果有多个独立程序,每个程序都多次调用此模块的子例程,我应该将 MPI 函数和变量放在哪里?

4

1 回答 1

1

您需要在模块的子程序部分调用 MPI 子程序。

通常我定义一个 init_mpi 子程序,它调用 MPI_INIT 并最终调用 MPI_COMM_RANK 和 MPI_COMM_SIZE。您还可以在此 init_mpi 子例程中使用 MPI_INITIALIZED 以避免多次初始化。

于 2012-11-25T10:43:25.890 回答