为什么'使用mpi'失败了mpif90

时间:2014-05-12 04:21:42

标签: fortran mpi fortran90 gfortran

为了在gfortran中编译MPI代码,我必须使用语法

include mpif.h

在我的代码中而不是

use mpi

有几个网站表示此语法适用于Fortran 77,但我使用gfortran gcc版本4.7.2(Debian 4.7.2-5)和mpfi90用于MPICH2版本1.4.1p1。

命令行

mpif90 test1.f90 -o test1.exe

产生以下错误

test1.f90:4.8: use mpi 1 Fatal Error: Parse error when checking module version for file 'mpi.mod' opened at (1)

test1.f90(来自关于HPC的Coursera课程)

program test1

use mpi !(fails to compile)
implicit none

include 'mpif.h' !(this works)

integer :: ierr, numprocs, proc_num

call mpi_init(ierr)
call mpi_comm_size(MPI_COMM_WORLD, numprocs, ierr)
call mpi_comm_rank(MPI_COMM_WORLD, proc_num, ierr)

print *, 'Hello from Process number', proc_num, &
         ' of ', numprocs, ' processes'

call mpi_finalize(ierr)

end program test1

2 个答案:

答案 0 :(得分:7)

我经常遇到的另一个选择是用于构建MPI库的Fortran编译器与您当前的Fortran编译器不兼容。然后问题是.mod文件的不兼容性。 Gfortran比英特尔Fortran更容易受到影响,因为它更频繁地改变模块格式。

答案 1 :(得分:2)

根据MPICH2的编译方式,可能还没有构建F90接口。当使用由C-heads构建的包时,这往往会令人沮丧。