部署 Matlab MDCE 计算集群

安装 Matlab 2017

首先需要在每台机器上安装 Matlab,如果集群使用 NFS 的话,则只需要在 NFS 上装 Matlab 即可。我将 Matlab 安装在 /opt/matlab,以下命令都需要按照自己的环境修改路径。

将 dvd1.iso 挂载到系统中:

1
2
mkdir /matlab
mount -t auto -o loop ~/Matlab\ R2017a\ linux_x64/R2017a_glnxa64_dvd1.iso /matlab

服务器上没有图形界面,所以需要以 silent 模式进行安装,需要配置 installer_input.txtactivate.ini 这两个文件。默认这两个文件都在挂载后的主目录中,即 /matlab/installer_input.txt/matlab/activate.ini

iso 以光盘模式在挂载时是只读的,因此把这两个文件拷出来,分别修改对应的内容。其中比较重要的是,在集群机器非常多的时候,激活要用 network 模式(非 standalone),并且需要安装 License Manager 对集群的 client 进行认证。

修改 activate.ini,内容如下:

1
2
3
4
isSilent=true
activateCommand=activateOffline
licenseFile=/root/crack/license_server.lic # 破解文件夹里的 license_server.lic 路径
activationKey=31095-30030-55416-47440-21946-54205 # 破解文件夹里 readme.txt 里 network 激活方式的 key

修改 installer_input.txt,内容如下:

1
2
3
4
5
6
7
8
destinationFolder=/opt/matlab # 安装目录
fileInstallationKey=31095-30030-55416-47440-21946-54205 # 激活 key
agreeToLicense=yes
mode=silent
activationPropertiesFile=/root/activate.ini # 上面创建的 activate.ini 的路径
licensePath=/root/crack/license_server.lic # license 路径
lmgrFiles=true # 安装 License Manager
lmgrService=true

确认两个文件的信息内容无误后,就可以进行安装了:

1
/matlab/install -inputFile /root/installer_input.txt

安装会持续一段时间,其中当 DVD1 的内容安装完毕后,会提醒插入 DVD2,这时直接把 dvd2.iso 挂载到同一个目录就行:

1
mount -t auto -o loop ~/Matlab\ R2017a\ linux_x64/R2017a_glnxa64_dvd2.iso /matlab

再等待一段时间,安装就完成了,安装完毕后配置环境变量,把 /opt/matlab/bin (你的 Matlab 安装目录的 bin 路径)加入到 PATH 里就行了。

在使用之前,需要替换 Matlab 的 libmwservices.so 进行破解:

1
cp /root/crack/R2017a/bin/glnxa64/libmwservices.so /opt/matlab/bin/R2017a/bin/glnxa64/libmwservices.so

直接覆盖即可,覆盖完毕后,键入 matlab,显示以下内容就表示安装成功。

1
2
3
4
5
6
7
8
9
10
11
12
MATLAB is selecting SOFTWARE OPENGL rendering.
< M A T L A B (R) >
Copyright 1984-2017 The MathWorks, Inc.
R2017a (9.2.0.538062) 64-bit (glnxa64)
February 23, 2017
To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
>>

部署 MDCE

MDCE 是 Matlab 的分布式计算引擎,默认已经安装,如果没有安装则需要进到 toolbox 中手动安装:

1
2
cd /opt/matlab/toolbox/distcomp/bin
./mdce install

然后启动 MDCE 即可:

1
./mdce start

启动 Job Manager 和 Worker

在集群中所有的提交的Job都是通过Job Manager分配和管理的,所有的work node都是注册在Job Manager这台机器上,需要固定这台Job Manager主机。client端编写完任务就可以向这台Job Manager这台主机提交。MDCE支持当前所有主流的作业调度程序如LSF, CCS, PBS Pro等。

启动 Job Manager 的命令参数解释如下:

flag 解释
-name <job_manager_name> 指定 Job Manager 的名称
-remotehost <hostname> Job Manager 所在主机的 hostname
-clean 删除 Job Manager 机器上的检查点信息
-multicast 多播
-baseport <port> 指定运行的端口,默认为 27350
-v 显示 Verbose 信息

启动 Job Manager

startjobmanager -name jmname -remotehost jmip

启动 Worker 的命令参数解释如下:

flag 解释
-name <worker_name> 指定 Worker 名称
-remotehost <hostname> Worker 所在主机的 hostname
jobmanager <job_manager_name> 指定 Worker 接受任务的 Job Manager 的名称
-jobmanagerhost <hostname> 指定 Worker 接受任务的 Job Manager 所在主机的 hostname
-multicast 多播
-baseport <port> 指定运行的端口,默认为 mdce 占用的端口
-v 显示 Verbose 信息

启动 Worker:

1
startworker -jobmanagerhost jmip -jobmanager jmname -name worker_name -remotehost localip

同样依次在其他所有的计算节点上,启动 mdce 并启动 worker 即可。最后在管理节点上使用nodestatus 就可以看到这个 Matlab 集群的状况了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Job manager lookup processes:
Status Running
Job manager:
Name cluster
Running on host xxx
Number of workers 16
Supported releases R2017a
Summary:
The mdce service on xxx manages the following processes:
Job manager lookup processes 1
Job managers 1
Workers 0

参考链接