我正在使用MPI处理Fortran代码并引入以下MPI命令
call MPI_Gather(nlocal,1,MPI_INTEGER,counts,1,MPI_INTEGER,0&
&,comm_cart,ierror)
在特定subroutine
中出现以下错误:
This name does not have a type, and must have an explicit type. [MPI_INTEGER]
据我所知,编译器无法识别此代码的MPI部分。但是,除了Fortran MPI数据类型nlocal, counts and comm_cart
之外,所有其他相关变量(例如MPI_INTEGER
)都被识别。有人可以抛光,我做错了吗?
注意:编译器是Intel编译器
答案 0 :(得分:2)
您必须告诉编译器有关MPI的内容(主要是变量)。
现代的方式是介绍
use mpi
在每个范围内。
在过去,它也是使用
完成的include "mpif.h"
但这有几个缺点。也就是说,因为它与FORTRAN 77兼容,所以它不会为任何MPI子例程引入显式接口,因此错误检查不如use mpi
那么彻底。现代方法将帮助您更好地保持代码正确。
另一方面,如果使用use mpi
,则必须使用用于编译程序的相同编译器(有时甚至使用相同版本)编译模块mpi
。