带有 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 必须使用您用来编译程序的同一编译器(有时甚至是同一版本)进行编译。