带有 MPI 错误的 Fortran
Fortran with MPI error
我正在使用 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 数据类型 MPI_INTEGER
之外,所有其他相关变量(例如 nlocal, counts and comm_cart
)都可以识别。有人可以在我做错的地方扔灯吗?
注:编译器为Intel编译器
你必须告诉编译器 MPI 的东西(主要是变量)。
现代方式正在介绍
use mpi
在每个范围内。
以前也是用
include "mpif.h"
但这有几个缺点。也就是说,因为它与 FORTRAN 77 兼容,它不会为任何 MPI 子程序引入显式接口,因此错误检查不如 use mpi
彻底。现代方法将帮助您更好地保持代码正确。
另一方面,如果您使用 use mpi
,模块 mpi
必须使用您用来编译程序的同一编译器(有时甚至是同一版本)进行编译。
我正在使用 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 数据类型 MPI_INTEGER
之外,所有其他相关变量(例如 nlocal, counts and comm_cart
)都可以识别。有人可以在我做错的地方扔灯吗?
注:编译器为Intel编译器
你必须告诉编译器 MPI 的东西(主要是变量)。
现代方式正在介绍
use mpi
在每个范围内。
以前也是用
include "mpif.h"
但这有几个缺点。也就是说,因为它与 FORTRAN 77 兼容,它不会为任何 MPI 子程序引入显式接口,因此错误检查不如 use mpi
彻底。现代方法将帮助您更好地保持代码正确。
另一方面,如果您使用 use mpi
,模块 mpi
必须使用您用来编译程序的同一编译器(有时甚至是同一版本)进行编译。