MPI 03 在 win10 上用 MS-MPI v10.0 搭建 MPI 集群

01 相关资料

网上关于MPI搭建集群多是linux上的。windows的基本都是mpich2的。
windows老版本可以参考如下官方文档:
http://www.mpich.org/static/tarballs/1.4.1p1/mpich2-1.4.1p1-installguide.pdf
中文的可以参考:Windows系统下搭建MPI(并行计算)环境,这个blog比较详细。
微软官方最新文档已经完全采用 高性能计算 的集群配置模式,而且越来越倾向于云部署模式。
可以参考 使用 HPC Pack IaaS 部署脚本创建 Windows 高性能计算 (HPC) 群集
使用 HPC Pack 设置 Windows RDMA 群集以运行 MPI 应用程序

02 本地手动部署MS-MPI v10.0集群

实际上我们正真使用集群的时候,基于成本考虑,一般都会选择linux上面部署。在windows上面使用最新的MS-MPI v10.0也一样可以简单的部署集群测试环境。

这里用2台win10搭建的集群。
物理机A:win10, IP:192.168.31.222
虚拟机B:win10, IP:192.168.31.53

操作步骤

02.01 安装mpi运行环境

msmpisetup.exe默认会被安装在C:\Program Files\Microsoft MPI

C:\Program Files\Microsoft MPI\Bin\mpiexec.exe
C:\Program Files\Microsoft MPI\Bin\msmpilaunchsvc.exe
C:\Program Files\Microsoft MPI\Bin\smpd.exe

其中smpd.exe是集群服务程序。

02.02 启动服务,打开防火墙服务端口

ms-mpi的集群服务程序是smpd.exe。默认使用端口号8677,在A、B上面的防火墙中打开8677 tcp端口。或者暂时关闭防火墙。

smpd.exe -help
smpd options:
 -help
 -port  or -p 
 -unicode
 -debug [flags] or -d [flags] (flags are optional)
        flags are the sum of: 1 , 2 
 -logfile 

"smpd -d" will start the smpd in debug mode.

如果防火墙对应的tcp端口没有开,运行时将无法链接smpd.exe的对应端口。
在2台集群上面启动smpd服务。
启动服务:smpd.exe -p 8677
PC A:192.168.31.222
MPI 03 在 win10 上用 MS-MPI v10.0 搭建 MPI 集群_第1张图片

PC B:192.168.31.53
MPI 03 在 win10 上用 MS-MPI v10.0 搭建 MPI 集群_第2张图片

02.03 部署运行程序镜像

使用 MPI 02 MPI实现Monte-Carlo随机积分算法估算π 中的生成的MPIMonteCarloPi.exe做测试。把MPIMonteCarloPi.exe拷贝到两台测试机器的D:\mpitest\MPIMonteCarloPi.exe
注意测试虚拟机中可能缺少一些c++的运行时。需要拷贝vc的运行时,或者安装对应版本的vc运行时。如果测试虚拟机系统的win10与开发机器更新版本不一致,可能还涉及运行时库,比如ucrtbased.dll。缺少的话手动拷贝一下放到D:\mpitest目录下即可。

MPI 03 在 win10 上用 MS-MPI v10.0 搭建 MPI 集群_第3张图片

02.04 运行测试

在PC A上面运行: mpiexec -hosts 2 192.168.31.222 192.168.31.53 d:\mpitest\MPIMonteCarloPi.exe
结果如下:
在这里插入图片描述

02.05 可能错误

如果端口配置错误,或者网络链接有问题,可能出现如下运行错误。要检查端口配置、防火墙。
相互ping对方ip或者telnet 指定端口可以检查。

mpiexec -hosts 2 192.168.31.222 192.168.31.53 d:\mpitest\MPIMonteCarloPi.exe
ERROR: Failed RpcCliCreateContext error 1722

Aborting: mpiexec on LFY_P50 is unable to connect to the smpd service on 192.168.31.222:8677
Other MPI error, error stack:
...

你可能感兴趣的:(MPI)