【问题标题】:Fortran with MPI error带有 MPI 错误的 Fortran
【发布时间】:2015-09-09 05:04:37
【问题描述】:

我正在使用 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_INTEGER?
  • 您应该始终显示更多代码,即所有符号来自哪里以及您的语句放置在哪里。反对票可能来自未能显示所有相关细节。问题本身是合法的。

标签: fortran mpi


【解决方案1】:

你必须告诉编译器关于 MPI 的东西(主要是变量)。

现代的方式是引入

use mpi

在每个范围内。

过去也是用

include "mpif.h"

但这有几个缺点。也就是说,因为它与 FORTRAN 77 兼容,它没有为任何 MPI 子例程引入显式接口,因此错误检查不如use mpi 彻底。现代方法将帮助您更多地保持代码正确。

另一方面,如果您使用 use mpi 模块 mpi 必须使用您用于编译程序的相同编译器(有时甚至使用相同版本)进行编译。

【讨论】:

    猜你喜欢
    • 2014-02-24
    • 2016-12-30
    • 2014-08-22
    • 2012-10-09
    • 1970-01-01
    • 2015-11-04
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多