资源描述
Windows环境下的分布式并行计算平台搭建,MATLAB并行平台底层架构 MATLAB并行平台搭建 并行程序的编写与实例 实验室MATLAB并行集群,1,MATLAB并行平台底层架构(一),并行平台上的三种角色 “警察”:维护整个平台。 (mdce:底层维护和通信进程) “老板”:接任务,雇佣工人并分配任务。 (jobmanager:负责对计算机资源的管理, 接收用户发过来的并行计算任务。) “工人”:努力工作。 (worker:工作进程),我负责维护整个并行平台,接生意咯,客户要什么我就叫工人搞定它。,听老板的话, 努力干活!,2,MATLAB并行平台底层架构(二),MATLAB并行平台底层架构图,3,MATLAB R2009b的安装及启动(一),安装时注意,MDCS,License Manager,并行计算工具箱Parallel Computing Toolbox等为必装的产品和工具箱,(子节点机可不用装License Manager)如下图所示。,4,MATLAB R2009b的安装及启动(二),装好软件在启动之前,双击主节点机的matlabrootflexlm文件夹下的lmtool.exe(matlabroot表示matlab软件的安装目录),开启Matlab License Server,如下图。,5,关闭防火墙 为方便平台搭建,将目录matlabroottoolboxdistcompbin添加到环境变量中的path里边,如右图设置。,6,MATLAB并行平台搭建(一),MATLAB并行平台搭建(二),安装和开启mdce(分布式计算引擎) 运行-cmd 安装mdce: mdce install 开启mdce: mdce start 注意:mdce安装后会下次开机自动启动,警察来了!,7,MATLAB并行平台搭建(三),配置jobmanager 打开matlab软件,菜单选ParallelManage Configurations,弹出对话框; Filenewjobmanager,弹出对话框: Scheduler项,LookupURL处填写所用计算机的名称,如node5;Name项为自拟的jobmanager的名称,如myjobmanager Jobs项,Number of Workers处表示该jobmanager运行并行程序时需要最小worker数目(即最小worker数目才执行),以及该jobmanager可拥有的最大worker数目; 3. 点击OK,完成配置。,完善资料,合法经营。,8,MATLAB并行平台搭建(三),打开jobmanager 命令行下输入: startjobmanager name myjobmanager 即前面配置时的名字 附:关闭jobmanager stopjobmanager name myjobmanager,正式登场!,9,MATLAB并行平台搭建(四),创建worker进程(雇佣工人) 同样在命令行下输入: startworker jobmanagerhost node5 jobmanager myjobmanager name worker1 remotehost node1 node5:本地计算机名字 myjobmanager:jobmanager的名字 worker1:worker进程的名字 node1:远程计算机的名字 注意:可开启多个不同名字的worker进程; 若在本地上创建则不需后面的-remotehost node1。 附:关闭worker 进程: stopworkername worker1 remotehost node1,我聘请你。,好。,平台搭建完毕!可用nodestatus指令查看。,10,MATLAB并行程序编写, 资源查找,创建对象; 创建工作(job); 指定工作任务(task); 提交工作; 等待; 返回计算任务结果。,findResource(),createJob(),createTask(),submit(),getAllOutputArguments(),waitForState(),程序结构和相关函数调用,11,MATLAB并行程序示例,%程序功能,并行计算求2+4,5+8,1+7的和。 资源查找,创建对象。 jm = findResource(scheduler, type, jobmanager, name, myjobmanager, LookupURL, node5); 需要修改的是红色划线参数,第一个即前面jobmanager的名字,第二个 即本地主机的名字 创建工作,并将该工作所需的数据、程序发到各个worker处。 job1=createJob(jm);%工作名为job1 %set(job1, FileDependencies, bb1.m,bb2.m,bb3.m, W_FDJ1.mat,W_FDJ2.mat,W_FDJ3.mat); 注:set()函数就是将该工作所需的数据、程序发到各个worker处,本程序不需要用到。 创建任务 createTask(job1, sum, 1, 2,4); createTask(job1, sum, 1, 5,8); createTask(job1, sum, 1, 1,7); 为job1创建了3个任务, sum代表函数头,1代表返回参数个数,此处为1个, 2,4代表函数sum的输入参数。,12,提交工作 submit(job1); 等待 waitForState(job1, finished); 返回结果 results = getAllOutputArguments(job1); 其中results1代表任务1的结果,本程序则为6。(2+4) results2代表任务2的结果,本程序则为13。(5+8) results3代表任务3的结果,本程序则为8。(1+7) 完整程序如下,MATLAB并行程序示例,13,实验室MATLAB集群平台,主机 node5,node1 4,node2 4,node3 4,node4 4,4,实验室MATLAB集群平台示意图,15,The end,16,
展开阅读全文