我有问题,我不知道它是什么。我有一个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函数和变量放在哪里?
答案 0 :(得分:1)
您需要在模块的子程序部分调用MPI子程序。
通常我定义一个init_mpi子例程,它调用MPI_INIT并最终调用MPI_COMM_RANK和MPI_COMM_SIZE。您还可以在此init_mpi子例程中使用MPI_INITIALIZED以避免多次初始化。