MS-MPI好像是windows现在用的最多的MPI并行程序,很多文章都搭配VS软件建立,个人不太喜欢用VS软件,所以直接在命令行使用
1、安装MS-MPI
下载:到官网下载
点击MS-MPI V10.1.3,然后download,两个都要选上
下载后两个全部双击,直接安装
然后要设置环境变量:
有些文章说要命令行直接输入:set MSMPI,会有
MSMPI_BIN=C:\Program Files\Microsoft MPI\Bin\
MSMPI_INC=C:\Program Files (x86)\Microsoft SDKs\MPI\Include\
MSMPI_LIB32=C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x86\
MSMPI_LIB64=C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64\
但我的并没有反映,也可以手动打开环境变量,输入这几个即可:
简单测试一下:在命令行输入:mpiexec,若出现以下内容,说明安装成功
2、安装MingW
进入官方下载地址,下拉找到:
解压缩之后有:
将bin文件夹的路径添加环境变量的path中,保存退出
打开一个新的终端,输入gendef,若出现,证明成功
3、库文件建立
在程序开始前,需要建立一个库文件
复制msmpi库目录下的mpi.f90文件(路径:"C:\Program Files (x86)\Microsoft SDKs\MPI\Include\mpi.f90")到存放源代码的当前目录下改名为mpi.F90,复制库目录下x86目录的mpifptr.h(路径:"C:\Program Files (x86)\Microsoft SDKs\MPI\Include\x86\mpifptr.h")到当前目录下,进入命令行,采用如下命令编译:
gfortran -c -D INT_PTR_KIND=8 -fno-range-check mpi.F90
可以得到use mpi程序需要的mpi.mod文件等。
复制系统32位库目录下的msmpi.dll到当前目录下,利用gendef工具(mingw套件里面有提供),得到其中的函数信息:
gendef msmpi.dll
得到msmpi.def,接着利用dlltool工具生成一个libmsmpi.a的链接库,dlltool工具mingw套件里面有提供,命令为:
dlltool -d msmpi.def -l libmsmpi.a -D msmpi.dll
得到libmsmpi.a文件。
4、fortran90程序编译与使用
我在windows上用的vim编辑器,你也可以用不同的编辑器打开你的代码编辑器,只要你愿意,记事本也行。打开程序文件:
vim parallel_hello.f90
输入以下helloworld的程序后保存退出:
program hello_parallel
use mpi
!implicit none
!include 'mpif.h'
integer::procs,rank,ierr
character(MPI_MAX_PROCESSOR_NAME)::host
integer::hostlen
call MPI_INIT(ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD,procs,ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)
call MPI_GET_PROCESSOR_NAME(host,hostlen,ierr)
print '(a,i3,a,i4,a,a)','hello world mpi&fortran from rank',rank,' of ',procs,' processes on ',trim(host)
call MPI_FINALIZE(ierr)
end program
命令行输入以下语令进行编译:
gfortran -o parallel_hello.exe parallel_hello.f90 libmsmpi.a -D INT_PTR_KIND=8 -fno-range-check
得到parallel_hello.exe文件,执行:
mpiexec -n 3 parallel_hello.exe
得到一个简单的并行程序就这样运行完毕!!!
参考资料:
https://blog.csdn.net/wavehaha/article/details/123314904