VS2103+Intel2013+MSMPI运行Fortran并行程序
MSMPI安装
我这里采用的是Microsoft MPI v9.0.1,可以点此下载。下载完成后同时安装msmpisdk.msi、msmpisetup.exe两个文件,安装位置默认即可。
其中msmpisdk.msi的默认安装路径在C:\Program Files (x86)\Microsoft SDKs\MPI,该文件包含了mpi环境所需要的include 和library。 msmpisetup.exe 默认安装路径为C:\Program Files\Microsoft MPI,其中.\bin下的mpiexec将用于并行程序的执行。1
安装是否成功可以在终端cmd输入set MSMPI
进行验证。
新建Fortran90项目
- 在VS2013新建Fortran项目
- 设置项目的链接库,关键是能让项目找到MPI安装在哪个地方。
(1)调试——属性——Fortran——General——Additional Inclue Directories中添加include目录:C:\Program Files (x86)\Microsoft SDKs\MPI\Include\和C:\Program Files (x86)\Microsoft SDKs\MPI\Include\x86,两个之间用英文分号隔开。
(2)调试——属性——Linker——General——Additional Library Directories 中添加:C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x86\和C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\,同样两个之间用英文逗号隔开。
(3) 调试——属性——Linker——Input——Additional Dependencies处添加msmpi.lib msmpifec.lib (中间用空格区分)
(4)调试——属性——Linker——Input——Ignore Specific Library处添加libcmt.lib,这个是要看有没有运行报错,之前笔者就是因为这个原因在这里花了很多时间,就是如果类似下面第二个图的报错出现的话,这一步很必要!即只要在Ignore Specific Library处添加报错的lib文件名即可。
编写Fortran并行程序
这里用了这一篇博客的程序,点击这里可跳转。
注意其中的include "mpi.f90"
一定能缺少,引用的博客里的程序缺少导致编译错误,找不到mpi这个module
。
include "mpi.f90"!一定不能缺少这个
program hello_world
use mpi
integer ierr, num_procs, my_id
call MPI_INIT ( ierr )
! find out my process ID, and how many processes were started.
call MPI_COMM_RANK (MPI_COMM_WORLD, my_id, ierr)
call MPI_COMM_SIZE (MPI_COMM_WORLD, num_procs, ierr)
print *, "Hello world! I'm process ", my_id, " out of ", num_procs, " processes."
call MPI_FINALIZE ( ierr )
stop
end program hello_world
在cmd运行编译完成的执行文件
打开cmd,进入到项目所在的文件夹内,即有执行文件xxx.exe
的文件夹(xxx为项目名)。在cmd终端输入下面的命令
mpiexec –n 4 xxx.exe
即可成功执行!
另外这篇博客也参照了“基于MS VS2017的Intel Fortran 使用MPI”,点此可以跳转。这里一并感谢前人的分享!