我应该将MPI_INIT放在Fortran模块中的哪个位置?

时间:2012-11-25 05:56:47

标签: fortran mpi modulo subroutine

我有问题,我不知道它是什么。我有一个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函数和变量放在哪里?

1 个答案:

答案 0 :(得分:1)

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

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