安装了MPI,可是Fortran仍然不能识别use mpi

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装了MPI,可是Fortran仍然不能识别use mpi相关的知识,希望对你有一定的参考价值。

也不能识别inlcude 'mpif.h',说找不到这些文件。
我先装了Visual Fortran 6.6,后装了mpich2-1.1.1p1-win-ia32.msi。
我仅仅是按书上源码写了这样的程序,不知何故。
program main
include "mpif.h"
character * (MPI_MAX_PROCESSOR_NAME) processor_name
integer myid,numprocs,namelen,rc,ierr

call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)
calL MPI_GET_PROCESSOR_NAME(processor_name,namelen,ierr)
write(*,10) myid,numprocs,professor_name
10 Format ('Hello World! Process ',I2,' of ',I1, 'on ',20A)
call MPI_FINALIZE(rc)
end
===================================
中文空格去掉后编译,目前全是unresolved external symbol _MPI_GET_PROCESSOR_NAME@16这样的错误了……
我写的是call,当时测试大小写写了calL,那个不是下划线。

我在网上搜的时候,据说6.6是最新的版本……不知道还有没有别的新的、容易设置的版本?

个人经验啊,你要确定一下你的编译器的设置是否包含mpi的头文件目录,
options/directories 有没有你安装的mpi目录
.../mpich/sdk/include

.../mpich/sdk/lib
而且在你的工程里面要有
ws2_32.lib和mpich.lib这两个库

我没用过windows下的mpi啊,个人觉得还是在linux下比较好。
参考技术A VF的 Tools - options - Directories 下面
Include files 和 Library files 中,添加MPICH2目录下相应的路径

===============================

换一个非中文目录,而且不带空格的目录名,再试试

VF/DF不支持全路径中包含字母数字之外的符号,比如中文

====================================================

那个难道不是 MPI_GET_PROCESSOR_NAME ?
为什么要用 _MPI_GET_PROCESSOR_NAME ?

==================================

我只能建议暂时试着去掉Include files 和 Library files 中和IMSL有关的部分,再编译看看。

.本回答被提问者采纳
参考技术B 这和是不是在Linux下面工作有毛关系?
PGI、Intel编译器都有 for windows的,
在Windows下面用起来还不是一样的方便?
和在Linux下有什么本质区别?

导致楼主折腾半天的原因是CVF6.6太古老了,而不是因为windows
参考技术C 你要是Unix/Linux下做这些工作的话会变得异常简单和直观!

以上是关于安装了MPI,可是Fortran仍然不能识别use mpi的主要内容,如果未能解决你的问题,请参考以下文章

单台 PC 上的 MPI Fortran 代码错误

将 mpi 消息从 c++ 代码发送到 fortran 90 代码

Fortran 和 MPI 的良好分析器

OpenACC + MPI Fortran 程序入门

Fortran 90 和 MPI 错误

通过 mpi_f08 模块和 gfortran 支持 MPI Fortran