本文主要介绍如何在Linux环境下安装MATLAB分布式计算引擎。
现 代计算机仿真技术对计算机硬件的需求和实际上已经停滞不前的CPU主频之间的矛盾日渐突出。相应推出的硬件解决方案无外乎多核、多处理器技术以及GPU技 术。我们将在以后的文章中讨论如何进行多核和多处理,或者GPU的程序设计。当单机的仿真模式也不能满足我们的计算需求的时候,我们只能求助于 MATLAB分布式计算。所谓的MATLAB分布式计算指的是利用客户端服务器模型,客户端提交计算需求,服务器负责调度、分配任务、控制计算过程以及回 收和合并计算结果的计算模式。MDCS和MATLAB客户端的关系如下图所示:
不 同于一般单机版本的MATLAB,分布式计算的MATLAB是有一个调度节点和很多计算节点组成的。每个节点都需要通过某种方式去获取相应的 license,MATLAB的MDCS(MATLAB Distributed Computing Server)采用了license manager的方式管理各个节点的license授权。每个MATLAB worker启动之前也需要去license manager处获取相应的分布式计算的license。
这里我们需要区分4种MDCS相关的概念:
- 客户端 (client):指的是操作MATLAB的桌面计算机或者笔记本电脑,这个机器上需要安装各自的单机或者concurrent的license,每个MATLAB只配备已经购买的toolbox。
- 调度节点(scheduler): 指的是负责管理所有计算节点的计算机,是客户端接入的接口,可以参与计算,也可以不参与,但是一定需要安装MDCS。
- 计算节点(worker): 负责计算的节点,需要安装MDCS。
- license manager: 这个可以是管理license的节点,可以和其他计算节点重合,也可以独立于计算节点。只需要安装license manager。
本文假设了两个环境变量:
- $MATLABROOT: MATLAB的安装目录
- $LICENSEROOT: License Manager 的安装路径
本文介绍的是让license manager独立于MATLAB其他节点的安装。如果你想简单一点,可以把license manager和某个节点直接安装到一起,参考下面内容自己发挥:)
1. 系统安装要求
切记,MATLAB的运行依赖于glibc的版本为2.7版本,如果你的操作系统比较老,安装前请提前升级。当然也不是没有办法绕过去,但是不能保证在运算的过程中不出错。具体方法请上google查询 libc 2.7 相关内容。
另外,license manager需要依赖于一些基础的linux包,在ubuntu或者debian中叫 lsb-base (Linux Standard Base),请提前安装。
2. License Manager的安装方法
- 从MathWorks服务器上获取对应服务器MAC地址的license文件
- 运行MATLAB安装程序
- 选择 install without using the Internet
- 输入FIK安装序列号
- 选择安装license manger
- 指定license 文件的位置
- 安装完成! 恭喜走到了第一步!
- 提前打击一下,这是所有安装过程中最简单的一步,也是最不容易出错误的一步,嘿嘿……
3. License manager的配置
到目前为止,我们只是完成了基本的安装过程, 还需要对license manager进行进一步的配置,使计算机重启的时候能够自动运行相应的license manger,不需要每次手工启动license manager。
- 启动license manager daemon
1>> $LICENSEROOT
/etc/lmstart
如果你使用的是64 bits 的debian/ubuntu操作系统,可能会出现找不到 /lib64/libc.so.6的错误,这是不同的linux发行版本决定的,其实ubuntu并不是MathWorks的官方支持的linux发行版 本。可以使用符号链接来解决这个问题:
1>>
sudo
ln
–s
/lib/x86-64-linux-gnu/libc
.so.6
/lib64/libc
.so.6
-
当系统重启时,需要手动启动license manager。接下来的符号链接目的是让系统启动的时候,自动启动license manager。
建立符号链接 (需要root权限)12>>
sudo
ln
-s $LICENSEROOT
/etc/lmboot
/etc/lmboot_TMW
# 启动
>>
sudo
ln
-s $LICENSEROOT
/etc/lmdown
/etc/lmdown_TMW
# 停止
- 加入自动启动队列 (需要root权限)
For Debian or SUSE:
1>>
sudo
cp
$MATLABROOT
/etc/flexnet
.boot.linux
/etc/init
.d
/flexnet
For Redhat or Fedora Core:
1>>
sudo
cp
$MATLABROOT
/etc/flexnet
.boot.linux
/etc/rc
.d
/init
.d
/flexnet
- 编辑/etc/init.d/flexnet 或者 /etc/rc.d/init.d/flexnet,替换文件里的 CHANGE_USER_NAME 为一个非 root用户名(自己建一个用户名),这是因为MATLAB不允许以 root 权限运行license manager。
- 创建符号链接,让license manager 在系统启动的时候自动启动:
For debian:
12>>
cd
/etc/rc5
.d
>>
sudo
ln
-s ..
/init
.d
/flexnet
S90flexnet
For Redhat or Fedora Core:
12>>
cd
/etc/rc
.d
/rc5
.d
>>
sudo
ln
–s ..
/init
.d
/flexnet
S90flexnet
For SUSE:
12>>
cd
/etc/init
.d
/rc5
.d
>>
sudo
ln
–s ..
/flexnet
S90flexnet
-
1
配置完成! 恭喜你,第二步也成功搞定:)
4. 计算节点的安装
运算节点的安装和单机或者concurrent的MATLAB的安装方法类似,需要注意一下几点:
- 需要在每一个需要运行MATLAB的计算节点上安装MATLAB。务必选择“install without using the Internet”选项,参考license 安装部分。
- 需要选择除了license manager之外的全部工具箱,这是因为MDCS可以支持不同的客户端的工具箱配置。
- 序列号FIK和您安装license manager所使用的FIK相同,包含全部的工具箱。
- license文件可以选择license manager自动生成的license文件或者自己手动编辑一个,格式如下:
12SERVER <HOST ID> <HOST MAC ADDRESS> 27000
USE_SERVER
- 安装完成的MATLAB是无法启动图形界面的,可以使用一下方法测试是否成功安装计算节点的MATLAB。
1>> $MATLABROOT
/bin/matlab
-dmlworker -nodisplay -r
exit
如果显示如下信息,表示安装已经成功。
5. 常见错误
MATLAB分布式计算引擎的安装一般都是源自于网络的配置问题。在分布式引擎被调用的时候,客户端节点会和引擎所在的调度节点进行通信,并通过机 器名字来判断具体的IP地址。所以,DNS能够正确解析客户端和服务器端的机器名字非常重要,尤其是客户端是windows,cluster是linux 的时候,这个问题发生的概率更高。请大家在安装配置的时候一定要提前测试网络的互通性。有问题可以联系MathWorks的技术支持。
6. TODO
我们的基本安装到此为止算是完成了,后续的问题就是涉及到如何配置MDCS和管理节点。我将会在后续的文章中给大家讲解。
MATLAB的分布式计算有几种可能的配置方法,一般需要根据自己的需要来选择其中一种,可支持的类型如下:
- Job Manager
- HPC Server
- 第三方的调度器通用调度器
- PBS Pro
- Platform LSF
- TORQUE
其中,Job Manager是MDCS自带的调度器,如果你的cluster中没有其他的分布式计算任务,而是专门用来进行MATLAB分布式计算的,建议选择Job Manager来管理你的计算任务。我会优先介绍Job Manager的配置和管理。如果你的MDCS是和其他分布式程序共同运行在一个cluster中,而且自己已经有了调度程序,比如TORQUE,可以选 择第三方的调度器的配置方法。不管选取那种调度方法,安装的部分都是相同的,就是本文涉及的内容。
如果你的cluster平台是windows那就更简单了,自己参考安装手册吧
原文点击这里