为了在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
答案 0 :(得分:7)
我经常遇到的另一个选择是用于构建MPI库的Fortran编译器与您当前的Fortran编译器不兼容。然后问题是.mod
文件的不兼容性。 Gfortran比英特尔Fortran更容易受到影响,因为它更频繁地改变模块格式。
答案 1 :(得分:2)
根据MPICH2的编译方式,可能还没有构建F90接口。当使用由C-heads构建的包时,这往往会令人沮丧。