【问题标题】:Error in building MPI program构建 MPI 程序时出错
【发布时间】:2013-11-04 01:07:19
【问题描述】:

我是 MPI 的新手。我正在尝试编写一个使用 MPI 和 FORTRAN 计算 PI 的程序。但是当我尝试构建程序时,我收到以下消息。

make all
 gfortran -O2 -g \
    -o bin/MpiTest.exe \
    src/MpiTest.f -fno-range-check
C:/Program Files/MicrosoftMPI/Inc/mpif.h:344.38:
    Included at src/MpiTest.f:11:

       PARAMETER (MPI_AINT=z'4c00043b')                                 
                                      1
Error: PARAMETER attribute of 'mpi_aint' conflicts with PARAMETER attribute at (1)
C:/Program Files/MicrosoftMPI/Inc/mpif.h:359.35:
    Included at src/MpiTest.f:11:

       PARAMETER (MPI_ADDRESS_KIND=INT_PTR_KIND())                      
                                   1
Error: Function 'int_ptr_kind' in initialization expression at (1) must be an intrinsic function
make: *** [all] Error 1

有人可以帮我吗?

附注:

PROGRAM CalculatePI
        include "C:/Program Files/MicrosoftMPI/Inc/mpif.h"

            INTEGER :: i = 0, nThrows = 0, nSuccess = 0, ierror =0, numOfProcessors=0,myID=0
            REAL :: x = 0, y = 0, results = 0

            INTEGER :: Counter = 0

            call mpi_init(ierror)
            call mpi_comm_rank(MPI_COMM_WORLD, myID, ierror)
            call mpi_comm_size(MPI_COMM_WORLD, numOfProcessors, ierror)
            ....

【问题讨论】:

  • 可以给我们看一下对应的代码吗?
  • 第 11 行是包含行。谢谢。
  • 如果include 行是第 11 行,则您发布的代码不是您要编译的代码。您发布的代码在第 2 行有 include。
  • 之前的行用于 cmets。我已经输入了“对应的”代码 sn-p。谢谢。
  • 我会安装 OpenMPI(为 gfortran 编译它)并使用它。

标签: fortran mpi


【解决方案1】:

INT_PTR_KIND 是 Intel Fortran 编译器扩展函数;也就是说,它不是 Fortran 内在函数。您报告的第二条错误消息表明gfortran 在编译包含对它找不到的函数的引用的代码时犹豫不决。我猜第一个错误是由同一个问题引起的,你正在尝试使用“错误”的编译器进行编译。

正如 Alexander Vogt 所建议的,您可能会使用诸如 mpif90 之类的编译器包装器取得更好的进展,但它必须是正确的包装器,即调用 gfortran 并与 MS MPI 库链接的包装器。该包装是否存在我不知道,但在C:/Program Files/MicrosoftMPI/ 下查找。

但是,由于这些错误源自您已包含的 mpif.h 文件,您还必须找到相应的包含文件以使用 gfortran 进行编译。我不使用 MS MPI,但如果您发现它仅提供工具、库和包含文件以使用英特尔 Fortran 进行编译,我不会感到惊讶。

【讨论】:

    【解决方案2】:

    您不应单独使用gfortran 编译您的MPI 代码。相反,请使用 MPI 库提供的包装器。通常称为mpif90。

    感谢 High Performance Mark 的澄清。

    【讨论】:

    • 嗯。我认为我的答案更好,但我会,不是吗。
    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2012-04-22
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多