windows11 安装使用MPI与fortran90简单案例

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

MinGW-w64 离线包安装方法_mingw离线安装包-CSDN博客

windows下利用Mingw和msmpi编译运行mpi并行程序_msmpi.dll-CSDN博客

  • 26
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
此文档描述了Fortran上mpi使用。 Fortran語言 1 MPI 平行計算程式設計 1 第一章 前言 5 1.1 MPI 平行計算軟體 6 1.2 國家高速網路與計算中心的平行計算環境 7 1.3 在IBM 電腦系統上如何使用MPI 8 1.3.1 IBM 電腦系統的MPI Fortran程式編譯指令 8 1.3.2 IBM 電腦系統的 Job command file 8 1.3.3 IBM 電腦系統的平行程式的執行指令 11 1.4 在PC Cluster上如何使用MPI 13 1.4.1 PC Cluster上的MPI Fortran程式編譯指令 13 1.4.2 PC Cluster 上的 Job command file 14 1.4.3 PC Cluster 上的平行程式執行指令 15 第二章 無邊界資料交換的平行程式 16 2.1 MPI 基本指令 17 2.1.1 mpif.h include file 17 2.1.2 MPI_INIT, MPI_FINALIZE 17 2.1.3 MPI_COMM_SIZE, MPI_COMM_RANK 18 2.1.4 MPI_SEND, MPI_RECV 19 2.2 無邊界資料交換的循序程式 T2SEQ 21 2.3 資料不切割的平行程式 T2CP 23 2.4 MPI_SCATTER,MPI_GATHER,MPI_REDUCE 28 2.4.1 MPI_SCATTER,MPI_GATHER 28 2.4.2 MPI_REDUCE, MPI_ALLREDUCE 30 2.5 資料切割的平行程式 T2DCP 32 第三章 需要邊界資料交換的平行程式 36 3.1 MPI_SENDRECV, MPI_BCAST 37 3.1.1 MPI_SENDRECV 37 3.1.2 MPI_BCAST 37 3.2 邊界資料交換的循序程式 T3SEQ 39 3.3 資料不切割的邊界資料交換平行程式 T3CP 40 3.4 資料切割的邊界資料交換平行程式(一) T3DCP_1 47 3.5 資料切割的邊界資料交換平行程式 (二) T3DCP_2 52 第四章 格點數不能整除的平行程式 57 4.1 格點數不能整除的循序程式 T4SEQ 58 4.2. MPI_SCATTERV、MPI_GATHERV 60 4.3 MPI_PACK、UNPACK、BARRIER、WTIME 62 4.3.1 MPI_PACK、MPI_UNPACK 62 4.3.2 MPI_BARRIER、MPI_WTIME 65 4.4 資料切割的平行程式 T4DCP 67 第五章 多維陣列的平行程式 72 5.1 多維陣列的循序程式 T5SEQ 73 5.2 多維陣列資料不切割的平行程式 T5CP 76 5.3 多維陣列末維資料切割的平行程式 T5DCP 85 5.4 與二維切割有關的 MPI 副程式 92 5.4.1 垂直座標圖示法則 (Cartesian Topology) 92 5.4.2 界定二維切割的 MPI 副程式MPI_CART_CREATE、 93 MPI_CART_COORDS、MPI_CART_SHIFT 93 5.4.3 定義固定間隔資料的 MPI 副程式 96 MPI_TYPE_VECTOR、MPI_TYPE_COMMIT 96 5.5 多維陣列末二維切割的平行程式 T5_2D 98 第六章 MPI程式的效率提昇 112 6.1 Nonblocking資料傳送 113 6.2 資料傳送的合併 122 6.3 以邊界資料計算取代邊界資料交換 126 6.4 輸出入資料的安排 128 6.4.1 事先切割輸入資料 128 6.4.2 事後收集切割過的輸出資料 131 第七章 導出的資料類別 133 7.1 導出的資料類別 134 7.2 陣列的轉換 139 7.3 兩方迴歸與管線法 149 第八章 多方依賴及SOR解法 155 8.1 四方依賴及SOR解法 156 8.2 黑白點間隔 SOR 解法 159 8.3 斑馬線 SOR 解法 168 8.4 八方依賴與四色點間隔SOR解法 175 第九章 有限元素法程式 183 9.1 有限元素法的循序程式 184 9.2 有限元素法的平行程式 187 附錄一 撰寫C語言的MPI程式 197 參考書目 200 Parallel Processing without Partition of 1-D Arrays 201 Parallel Processing with Partition of 1-D Arrays 202 Parallel on the 2nd Dimension of 2-D Arrays without Partition 203 Parallel on the 2nd Dimension of 2-D Arrays with Partition 204 Partition on the 3rd dimension of 3-D Arrays 205

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值