资源描述:
《matlab并行计算简介》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、MATLAB并行计算简介MATLAB并行平台底层架构MATLAB并行平台搭建并行程序的编写与实例实验室MATLAB并行集群1MATLAB并行平台底层架构(一)并行平台上的三种角色“警察”:维护整个平台。(mdce:底层维护和通信进程)“老板”:接任务,雇佣工人并分配任务。(jobmanager:负责对计算机资源的管理,接收用户发过来的并行计算任务。)“工人”:努力工作。(worker:工作进程)我负责维护整个并行平台接生意咯,客户要什么我就叫工人搞定它。听老板的话,努力干活!2MATLAB并行平台底层架构(二)MATLAB并行平台底层架
2、构图3MATLAB并行平台搭建(一)安装和开启mdce(分布式计算引擎)运行->cmd安装mdce:mdceinstall开启mdce:mdcestart注意:mdce安装后会下次开机自动启动警察来了!4MATLAB并行平台搭建(二)配置jobmanager打开matlab软件,菜单选Parallel>ManageConfigurations,弹出对话框;File>new>jobmanager,弹出对话框:Scheduler项,①LookupURL处填写所用计算机的名称,如node5;②Name项为自拟的jobmanager的名称,如m
3、yjobmanagerJobs项,NumberofWorkers处表示该jobmanager运行并行程序时需要最小worker数目(即≥最小worker数目才执行),以及该jobmanager可拥有的最大worker数目;3.点击OK,完成配置。完善资料,合法经营。5MATLAB并行平台搭建(三)打开jobmanager命令行下输入:startjobmanager–namemyjobmanager[即前面配置时的名字]附:关闭jobmanagerstopjobmanager–namemyjobmanager正式登场!6MATLAB并行平
4、台搭建(四)创建worker进程(雇佣工人)同样在命令行下输入:startworker–jobmanagerhostnode5–jobmanagermyjobmanager–nameworker1–remotehostnode1node5:本地计算机名字myjobmanager:jobmanager的名字worker1:worker进程的名字node1:远程计算机的名字注意:①可开启多个不同名字的worker进程;②若在本地上创建则不需后面的-remotehostnode1。附:关闭worker进程:stopworker–namewor
5、ker1–remotehostnode1我聘请你。好。平台搭建完毕!可用nodestatus指令查看。7MATLAB并行程序编写①资源查找,创建对象;②创建工作(job);③指定工作任务(task);④提交工作;⑤等待;⑥返回计算任务结果。findResource()createJob()createTask()submit()getAllOutputArguments()waitForState()程序结构和相关函数调用8MATLAB并行程序示例%%程序功能,并行计算求2+4,5+8,1+7的和。①资源查找,创建对象。jm=f
6、indResource('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
7、','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的输入参数。9④提交工作submit(job1);⑤等待waitForState(job1,'finished');⑥返回结果r
8、esults=getAllOutputArguments(job1);其中results{1}代表任务1的结果,本程序则为6。(2+4)results{2}代表任务2的结果,本程序则为13。(5+8)res