首页 matlab 集群搭建及使用

matlab 集群搭建及使用

举报
开通vip

matlab 集群搭建及使用 Matlab 集群搭建及使用指南 出自 Bio-Computing Research Center 跳转到: 导航, 搜索 目录 [隐藏]  1 分布式计算环境介绍 o 1.1 并行计算工具箱(Parallel Computing Toolbox) o 1.2 分布式计算引擎(服务器)(MDCE) o 1.3 集群架构  2 集群搭建 o 2.1 License Manager 安装 o 2.2 分布式计算引擎(MDCE)安装 o 2.3 调度程序(Job Manage...

matlab 集群搭建及使用
Matlab 集群搭建及使用指南 出自 Bio-Computing Research Center 跳转到: 导航, 搜索 目录 [隐藏]  1 分布式计算环境介绍 o 1.1 并行计算工具箱(Parallel Computing Toolbox) o 1.2 分布式计算引擎(服务器)(MDCE) o 1.3 集群架构  2 集群搭建 o 2.1 License Manager 安装 o 2.2 分布式计算引擎(MDCE)安装 o 2.3 调度程序(Job Manager)和 work node 启动配置 o 2.4 文件共享设置  3 编写并行应用程序 o 3.1 任务级并行 o 3.2 代码级并行  4 存在问题及扩展  5 Matlab资源  6 外部链接 分布式计算环境介绍 并行计算工具箱(Parallel Computing Toolbox) 并行计算工具箱(Parallel Computing Toolbox)可以在多处理器计算环境中使 用 MATLAB 和 Simulink 解决计算、数据密集型问题。使用工具箱可以解决通过 装配多个处理器包含几个单独工作单位或单个大型计算的问题。这些处理器可以 驻留在一个多处理器计算机上,当工具箱配合 MATLAB 分布式计算引擎(MATLAB Distributed Computing Engine(Server),简称 MDCE)时,实现分布式并行计 算。 利用并行计算工具箱(Parallel Computing Toolbox),可在多核和多处理器计 算机上使用 MATLAB 和 Simulink 来解决计算问题和数据密集型问题。并行处理 结构包括并行 for 循环和代码块、分布式数组、并行数值算法,以及消息传递 函数等,并以较高的级别在 MATLAB 中执行任务及数据并行算法,而无需为特定 的硬件和网络架构编写程序。这样,将串行 MATLAB 应用程序转换为 并行 MATLAB 应用程序,便几乎不需要修改代码,且不需要使用低级语言编写程序。 用户可以使用工具箱在单个多核或多处理器桌面上执行应用程序。无需更改代码, 即可在计算机集群上运行同一个应用程序(使用 MATLAB Distributed Computing Server)。并行的 MATLAB 应用程序可以作为可执行程序或共享库(用 MATLAB Compiler 构建)分发,这些可执行程序或共享库可以访问 MATLAB Distributed Computing Server。 分布式计算引擎(服务器)(MDCE) MATLAB Distributed Computing Engine 可以使并行计算工具箱应用程序得到扩 展,从而可以使用运行在任意数量计算机上的任意数量的 worker。MDCE 是以服 务的形式运行在所有 worker node节点上,接受来自调度程序的作业,在节点上 建立进程,解释执行 Matlab代码,将结果返回给调度程序。  调度程序(Job Scheduler) MATLAB Distributed Computing Engine支持多个调度程序:MathWorks 作业管 理器(Job Manager)(随产品提供)或任何其他第三方调度程序,例如 Platform LSF、Microsoft Windows Compute Cluster Server(CCS)、Altair PBS Pro, 以及 TORQUE。  许可证策略(License Policy) MATLAB Distributed Computing Engine 会在应用程序运行时在基于用户配置文 件的集群上动态启用所需的许可证。这样,管理员便只需在集群上管理一个服务 器许可证,而无需针对每位集群用户在集群上管理单独的工具箱和模块集许可证。  Matlab作业任务会话定义 作业(Job)是在 MATLAB 中大量的操作运算。一个作业可以分解不同的部分称为 任务(Task),客户可以决定如何更好的划分任务,各任务可以相同也可以不同。 MALAB中定义并建立作业及其任务的会话(Session)被称为客户端会话,通常 这是在你用来编写程序那台机器上进行的。客户端用并行计算工具箱来定义和建 立作业及其任务,MDCE 通过计算各个任务来执行作业并负责把结果返回客户端。 作业管理器(Job Manager)是 MDCE的一个组成部分,用来协调各个作业及其任 务在各个 woker上的执行。 集群架构 分布计算,指的是一项工作(Job)中的若干任务(Task)是独立的,任务与任务之 间不存在数据交换,因此多个相似的任务(例如指纹匹配)可以同时运行在不同的 数据集上。 该系统中有三种角色,分别为提交 Job(并将 Job 分割为多个 Tasks)的 Client, 管理 Job运行的 Job Manager(JM)和进行具体运算的 Worker。 Client就是编写程序的机器,可以是任何一台局域网内的机器,Client 将写好 的程序作为 Job提交到 JM,然后 JM(也可以是任何一台局域网内的机器)按接收 到 Job的顺序执行这些 Job。每个 Worker从 JM 那里接收 Task并执行,完成之 后将结果返回给 JM,接下来接收下一个 Task。当前正在运行的 Job分配完成之 后,JM则开始下一 Job 的分配。 在一个分布计算系统中通常包括多个 Wroker,以便同时执行多个 Task,以提高 速度。对 Client来说,具体哪一个 Task由哪一个 Worker执行是透明的。也就 是说,使用者只需关心如何将 Job提交到 JM和从 JM取回运算结果,而无需管理 具体的任务调度。 集群搭建 License Manager 安装 使用 MDCE引擎建立集群,需要获得 Mathworks 公司的授权。Licence Manager 可以通过 Network方式下安装,在 standalone 方式下安装是没有的。在一个集 群中只要一个 Node安装 License Manager,其它节点就可以获得授权。  安装参考 选择 network安装 1) choose "install manually without using the internet" 2) enter the "file installation key" xxxxx-xxxxx-xxxxx-xxxxx-xxxxx 3) check out "license manager" option 4) use "license_server.dat" when asked for license file  启动参考 Windows Platform 1) 以管理员模式运行$MATLABROOT$/flexlm/lmtools.exe 2) 选择 Start/Stop Reread 标签,单击 Start Server Linux&Unix Platform 1) 在$MATLAB$/etc/license.dat 中有 SERVER 一栏,后面填入 your hostname 2) 将 license server 的端口设置成 27000 3) 设置 DAEMON MLM为 DAEMON MLM $MATLAB$/etc/lm_matlab 4) 设置 OPTIONS=$MATLAB$/etc/lmopts.sh 5) 用普通用户运行./lmstart,开启 License Manager 分布式计算引擎(MDCE)安装 安装启动 MDCE  Windows Platform 1) 用管理员启动 cmd.exe, cd %MATLABROOT%/toolbox/distcomp/bin 2) 修改 mdce_def.bat, 设置 MDCEUSER=./%username%, %username%是你的登 入帐号 3) 运行 mdce.bat install, 输入帐号密码 4) 运行 mdce.bat start, 启动 Matalb Distributed Computing Server 5) WIN+R,输入 services.msc,查看 MDCS是否启动 6) 运行 addMatlabToWindowsFirewall.bat, 配置防火墙,开放 MDCE服务 说明 windows服务默认 Local System帐号启动,用 Local System启动的服务是 没有权限访问 UNC(Universal Naming Convention)命名约定的网络资源,UNC 格式为\\servername[server IP]\sharename\directory\filename。MDCE 中传 输和共享文件都是使用 UNC命名约定,因此要使 MDCE支持文件共享,启动它的 用户需要有权限访问 UNC网络资源。为了配置方便,用登入帐号启动 MDCE 服务, 就可以访问共享资源。  Linux&Unix Platform 1) $cd $MATLABROOT$/toolbox/distcomp/bin 2) #./mdce install 3) #./mdce start 4) config iptables, make input chain ports tcp(135,139,445) and udp(137,138) open 说明在 UNIX LIKE的系统中 mdce是以 ROOT身份启动的,可以轻松访问 UNC 格式 的网络资源。  DNS设置 MDCE引擎使用机器名(hostname)在各个节点之间通信。为了能够正确解析集 群中所有的 node,需要在各个 node的 hosts文件中添加集群中所有机器的 ip 和 hostname的映射条目。 调度程序(Job Manager)和 work node 启动配置  启动 Job Manager 在集群中所有的提交的 Job都是通过 Job Manager 分配和管理的,所有的 work node都是注册在 Job Manager 这台机器上,需要固定这台 Job Manager 主机。 client端编写完任务就可以向这台 Job Manager 这台主机提交。MDCE支持当前 所有主流的作业调度程序如 LSF, CCS, PBS Pro 等。作为实验性的环境,第三 方调度程序没有配置,而是采用了随 MDCE一起发布的 Job Manager来管理集群 中的作业调度。  启动 Worker Node startworker -jobmanagerhost jmip -jobmanager jmname -name worker_name -remotehost localip  查看集群节点信息 nodestatus -remotehost hostname[ip] -infolevel n Flag Operation -remotehost Displays the status of the mdce service and the processes it maintains on the specified host. The default value is the local host. -infolevel Specifies how much status information to report, using a level of 1-3. 1 means only the basic information, 3 means all information available. The default value is 1. -v Verbose mode displays the progress of the command execution. 文件共享设置 在一个集群内网络中主要有三种流量,代码,数据,运行时通信。在 Matlab 集 群中,运行时通信对于 Client是透明的,用户需要设置的是如何共享代码和数 据。代码可以通过 Job Manager传输到各个节点上,代码的大小相对来说比较小, 网络传输开销小,而对于数据来说,不可能把数据在每一个 Worker node 节点上 都复制一份拷贝,这样开销太多了。 1. 通过 Job Manager 传输代码 set(job, 'FileDependencies', {'fun1.m','fun2.m','main.m'}) 2. 设置文件关联,让 Worker node访问网络文件和本地文件 set(job, 'PathDependencies', {'\\ip\sharedir\','/mnt/'}) 3. 使用 Configurations Manager 设置 Configurations Manager 是 Matlab中提供的图形化配置管理软件,使用此功能 可以方便地配置常用的 Job Manager,而不用每次运行都在代码中加入 set 函数。 在 matlab的菜单栏上选择 Parallel->Manage Configurations..., 启动 Configurations Manager,设置 jobmanager的属性(Properties...) 在我们的集群中大多数是基于 Windows的系统,采用 windows的共享文件机制就 可以在各个 windows系统间实现文件的共享。对于 linux节点,就需要安装 samba, 然后将网络文件 mount 到 local路径。  Windows共享文件设置  Linux&Unix共享文件设置 安装参考: [Samba wiki] 挂载 Windows共享文件 #mount -t smbfs //ip/share /mnt/ 提供本机文件共享,samba 设置 [global] ... security=share [sharedir] ... public = yes 编写并行应用程序 任务级并行  流程 1) 搜索 JM,创建对象: findResource() % MyJobManager 表示 JM的名字 % MyJMhost 表示运行该 JM的主机名或 IP地址 jm = findResource('scheduler','type','jobmanager','Name','MyJobManager','L ookupURL','MyJMhost') 使用 findResource函数时,省略所有 property 和 value,可搜索所有局域网内 可用的 JM all_managers = findResource('scheduler','type','jobmanager') 2) 创建 Job: createJob() 虽然这个函数在 client 会话中执行,但实际上是在名叫 jm的 Job Manager 上创 建了一个名叫 job1的 Job job = createJob(jm) 3) 分配 Task: createTask() 在创建 Job之后,使用 createTask函数为该 Job 创建 Task。Task定义了 Worker 所要执行的函数。在本例中,每个 Task将会生成 3*3的随机数矩阵。 createTask(job, @rand, 1, {3,3}); createTask(job, @rand, 1, {3,3}); createTask(job, @rand, 1, {3,3}); createTask(job, @rand, 1, {3,3}); createTask(job, @rand, 1, {3,3}); 也可用以下方法生成 5个 Task: T = createTask(job, @rand, 1, {{3,3} {3,3} {3,3} {3,3} {3,3}}); 4) 提交工作: submit() 使用 submit函数提交 Job到 Job Manager,Job Manager 将 Task分配到已注册 的 Worker上并开始执行。 submit(job); 5) 等待: waitForState() waitForState(job, 'finished'); 6) 取回计算结果: getAllOutputArguments() 计算结果存储在每个任务对象的 OutputArguments 属性中,使用 getAllOutputArguments 取回所有的结果,运算结果以 cell数组的形式返回。 results = getAllOutputArguments(job);  完整示例 clear all; % 寻找资源。 jm = findResource('scheduler', 'type', 'jobmanager', 'name', 'myJM', 'LookupURL', '192.168.0.100'); % 使用刚才找到的资源建立一个工作 job = createJob(jm); % 设置该工作的文件关联,让所有 workers都可以找到原程序文件,需要在 Client上设置共享文件夹。 set(job, 'PathDependencies', {'\\192.168.0.101\matlab_code\', '/mnt/'}) % 另一种方法,把用到的原程序文件传给所有 workers。 % set(job, 'FileDependencies', {'hm.m'}); N = 5; M = 4; % 建立 4个任务,每任务都是算 hp(M, N)。 createTask(job, @hp, 1, {{M, N}, {M, N}, {M, N}, {M, N}}); % 提交工作给 jobmanager。 submit(job) % 等待所有 workers都把任务做完。 waitForState(job, 'finished') % 取出计算结果。 results = getAllOutputArguments(job); % 销毁 Job,释放资源 destroy(job); 代码级并行 存在问题及扩展  异构集群 由于集群中存在多种系统平台,32位,64位,xp, windows 7, ubuntu 等,在 用 Matlab的 PCT工具时(e.g., parfor,分布式矩阵,spmd),有部分 worker node 无法参与工作,根据 Matlab官方关于异构集群的 Requirement: "Homogeneous cluster configurations are recommended. Parallel processing constructs that work on the infrastructure enabled by matlabpool—parfor, spmd, distributed arrays, and message passing functions—cannot be used on a heterogeneous cluster configuration. The underlying MPI infrastructure requires that all cluster computers have matching word sizes and processor endianness. A limited set of functions in Parallel Computing Toolbox can work in heterogeneous cluster configurations." 使用 PCT工具箱需要有相同的机器字长和字节序。  MDCE版本 我们采用了 MDCE 4.3(Matlab R2010a)来搭建集群,MDCE需要相同的版本才能 够互相通信,不同版本的 Matalb是无法加入到集群中的。  扩展及设想 目前我们用了 5台机器,每台机器建立两个 Worker node,共计 10个 worker node, 每个 worker node分配 512兆内存的实验集群。我们的设想是搭建一个拥有 20 个 CPU,40个 worker node 每个 worker node拥有 1024兆的集群,利用晚上实 验室电脑闲置的时间来跑程序。这样的话,如果有人想跑大型应用时,就可以经 过一个晚上的时间将它跑完。  加入我们 如果你对此感兴趣,或者你有实际需要请加入我们,联系方式: ltryee, steven at c204。 你要做的 安装 Matalb 2010a,32 位和 64位都可以。 你能做的 简单改写你的代码,更加快速的获得 result. Matlab 资源 Pdf books on ftp[matlab] 外部链接  Official help http://www.mathworks.com/help/  Parallel Computing Toolbox http://www.mathworks.com/help/toolbox/distcomp/rn/bsuaink-1.htm l  HPC at unsw http://www.hpc.maths.unsw.edu.au/tensor/matlab 取自 “http://bcc.hitsz.edu.cn/wiki/index.php/Matlab%E9%9B%86%E7%BE%A4%E6% 90%AD%E5%BB%BA%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97”
本文档为【matlab 集群搭建及使用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_329467
暂无简介~
格式:pdf
大小:441KB
软件:PDF阅读器
页数:11
分类:工学
上传时间:2013-05-05
浏览量:34