本篇的内容可能过时啦
虽然我很久不用MATLAB处理日常工作,但是实验室主流依然是MATLAB(用Python的就那么几个T_T)。以前小伙伴们跑程序都是拷贝程序和数据到实验室的计算服务器上,手工开N个MATLAB窗口做运算。现在实验室规模扩大,这种手工的方式越来越繁琐。我从前用MATLAB时就想试试集群计算,奈何当时实验室没啥硬件条件,正好现在有机会,我干脆搭了个MATLAB集群供小伙伴使用。
软硬件
硬件方面:
- 4核心, 16GB内存, 百兆网卡普通台式机(manage节点)
- 40核心, 128GB内存, 千兆网卡计算服务器(compute1节点)
- 346TB存储, 千兆网卡存储服务器(storage节点)
软件方面:
- Windows10专业版系统
- centos7
- matlab2017b
网络环境:
- 192.168.130.12(matlab-manage.xxx.org) – manage节点
- 192.168.130.11(matlab-compute1.xxx.org) – compute1节点
- 192.168.130.10 – storage节点
MATLAB的帮助文档中提出,想要使用集群计算服务应该满足以下条件:
- 推荐一个CPU核心最多创建一个worker
- 推荐每个worker最少可以使用2GB内存
- 最少5GB的硬盘空间容纳暂时性的数据文件
- 计算集群之间应当使用同构的计算架构(要求计算节点的硬件配置、系统和软件配置一致)
集群安装配置
ip域名设置
修改compute节点和manage节点的计算机名、ip地址以及DNS域名解析,例如compute1节点的计算机名为matlab-compute1.xxx.org(xxx.org为后缀域名),DNS域名也应该为matlab-compute1.xxx.org,ip地址为192.168.130.11。
MATLAB分布式计算服务似乎要求计算机名要添加后缀域名(xxx.org),否则在集群测试时会有解析不匹配的警告,Windows专业版可在这台电脑-属性-更改设置-更改-其他中添加主DNS后缀。
manage节点
在manage节点安装matlab2017b,manage节点在安装过程中应该勾选MATLAB License Server和MATLAB Distributed Computing Server工具箱,前者为集群提供license认证服务,后者是分布式计算的核心服务组件。对于破解版的MATLAB,应该输入floating license的key而不是standalone的key,才能安装MATLAB License Server。安装完毕(并破解)后,在Windows服务选项卡中启动MATLAB License Server服务。
同时修改C:\Program Files\MATLAB\R2017b\licenses\network.lic为如下内容
SERVER this_host ANY |
修改C:\Program Files\MATLAB\R2017b\toolbox\distcomp\bin\mdce_def.bat其中的security level为2
set SECURITY_LEVEL=2 |
设置security level为2的效果是要求用户在使用分布式计算服务时输入用户名,从而可以监控集群使用情况。
启动MATLAB,切换到C:\Program Files\MATLAB\R2017b\toolbox\distcomp\bin目录下,在MATLAB命令行窗口输入如下命令安装并启动mdce服务
!mdce install |
最好在MATLAB命令行窗口内启动mdce服务,如果在Windows服务选项卡中启动服务,会出现权限问题导致集群worker无法连接。
启动mdce服务后最好双击运行C:\Program Files\MATLAB\R2017b\toolbox\distcomp\bin\addMatlabToWindowsFirewall.bat文件(我的做法是直接关闭Windows防火墙避免多余的问题)
compute节点
compute节点的安装配置同manage节点,仅以下内容不同
- 安装matlab时无需勾选MATLAB License Server工具箱
- 修改C:\Program Files\MATLAB\R2017b\licenses\network.lic为如下内容
SERVER matlab-manage.xxx.org ANY |
此外为了跟storage节点连接,compute节点需要安装NFS服务,在程序和功能-启用或关闭Windows功能中勾选NFS服务
storage节点
storage节点设置NFS服务,NFS服务端安装和配置网上都有,我就不写了。
添加集群节点
在manage节点运行C:\Program Files\MATLAB\R2017b\toolbox\distcomp\bin\admincenter.bat,启动管理面板,点击Add or Find,添加manage节点和compute1节点,添加完毕后,点击Test Connectivity,测试通过如下图
在MATLAB Job Scheduler面板点击start启动scheduler,输入名称,选择scheduler的节点为matlab-manage.xxx.org,因为security level为2,还需要设置管理员的密码。
设置好scheduler后,右键scheduler点击Start Workers,勾选compute1节点,设置启动的worker数量(我只有40个核心,所以启动40个worker)。
客户端配置和使用
MATLAB集群计算要求客户端的matlab版本和服务端一致,因为我服务端安装的是2017b,客户端也应该是matlab2017b。客户端可以选择standalone安装方式,也需要安装mdce服务添加防火墙配置并启动。
如果客户端想直接使用NFS服务,也需要在程序和功能-启用或关闭Windows功能中勾选NFS服务。
安装完毕后,在MATLAB主页中的Parallel选项选择Discover Cluster,勾选On your network,点击Next等待发现集群mjs40_2,选择集群,点击Next,Finish,就可以使用集群了,集群的使用情况可以在Parallel选项里Monitor Jobs查看。
这里提供两个matlab并行计算脚本检测集群配置是否正确
%This demo shows how to use distributed computing server |
%This demo shows how to load data from nfs server, target_folder is nfs server ip address |