Ron*_*Ron 4 fortran mpi gfortran fortran90
为了在gfortran中编译MPI代码,我必须使用语法
include mpif.h
Run Code Online (Sandbox Code Playgroud)
在我的代码而不是
use mpi
Run Code Online (Sandbox Code Playgroud)
有几个网站表明这个语法适用于Fortran 77,但我使用gfortran gcc版本4.7.2(Debian 4.7.2-5)和mpfi90用于MPICH2版本1.4.1p1.
命令行
mpif90 test1.f90 -o test1.exe
Run Code Online (Sandbox Code Playgroud)
产生以下错误
test1.f90:4.8: use mpi 1 Fatal Error: Parse error when checking module version for file 'mpi.mod' opened at (1)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我经常遇到的另一个选择是用于构建MPI库的Fortran编译器与您当前的Fortran编译器不兼容.然后问题是.mod
文件的不兼容性.Gfortran比英特尔Fortran更容易受到影响,因为它更频繁地改变了模块格式.