matlab 并行计算.doc_第1页
matlab 并行计算.doc_第2页
matlab 并行计算.doc_第3页
matlab 并行计算.doc_第4页
matlab 并行计算.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab 并行计算工具箱(一)Matlab分布式和并行编程Distributed and Parallel Programming11/29/2008 10:31:15 AMTodays engineers and scientists, faced with the demand to model increasingly complex systems in less time, are pursuing distributed and parallel solutions in high-performance computing (HPC) distributed environments made out of commercial off-the-shelf (COTS) multiprocessor, multicore computers.工程师和科学家们面临着用更少的时间建立复杂系统模型的需求,他们使用分布式和并行计算来解决高性能计算的问题。这些分布式的环境由多处理器和多核计算机来实现。并行计算工具箱和Matlab分布式计算服务器允许你在Matlab中建模和开发分布式和并行应用,并在多核处理器和多核计算机中执行他们,而且并不离开你的及时开发环境。用这种方法来执行模型,你可以解决更大的问题,覆盖更多的仿真情景并减少桌面资源。开发分布式应用分布式应用或者并行应用,包含独立的任务,它可以独立的执行,而并不需要任务间的通信。对于分布式应用来说,你可以使用分布式计算工具箱中的函数来为你的应用定制独立的计算任务,它可以被收集到分布式的任务中并集群的提交执行。开发并行应用并行应用包含相互依存的任务,它在应用执行的过程中交换数据。工具箱和引擎包含基于MPI标准的函数,它支持Matlab开发并行应用中的通信。然而,使用这些基于MPI功能的函数包含跟踪消息传递的详细信息,像在处理器和控制处理器间的通信。并行计算工具箱用两种重要的方式简化了并行应用的开发。首先,工具箱支持分布式矩阵,它在对待分布式处理器的数据时,把它作为一个单独的矩阵,而不是作为在不同处理器上的独立的矩阵。通过分布式矩阵,研究人员可以直接的在矩阵中展示操作,而并不需要处理复杂的信息传递。工具箱为分布式矩阵提供了超过150个的Matlab函数,包括基于ScaLAPACK的线性算数。第二,工具箱包含新的交换的并行执行模型。从而,研究人员可以在许多个处理器和内核中,并行同时的工作。这个模式可用于交互的开发、设计开发和解决问题。支持调度程序对于任务调度工作,你可以或者使用MathWorks的工具经理,这个调度程序。它配置在引擎中或者第三方的调度程序。这个工具箱和引擎支持所有的第三方的调度程序,像LSF平台,Microsoft Windows Compute Cluster Server, PBS, 和 Sun Grid Engine。或者直接的,或者通过基因调度接口来实现。这些资源包括安装脚本,在线技术解决和供应商提供的一体化脚本。这些都可以帮助你结合工具箱和引擎到你已经存在的计算环境中。(二)Matlab 分布式计算工具箱使用指南(转载)使用Matlab进行分布式计算需要两个产品:1、分布式计算工具箱(Distributed Computing Toolbox)2、Matlab分布计算引擎MDCE(Matlab Distributed Computer Engine)MDCE主要用于执行Clinet Session中定义的job和task一、安装MDCEMDCE安装在D:Program FilesMATLABR2008atoolboxdistcompbin目录下:在Matlab的command windows中执行复制内容到剪贴板代码:mdce install %安装引擎mdce start %启动引擎执行上面两条命令后,分布式计算引擎服务程序就安装完毕了。MDCE就是一个服务进程,在使用MDCE 之前需要首先启动它。二、启动一个Job Manager复制内容到剪贴板代码:startjobmanager -name matlabsky -v %启动一个名为matlabsky的作业管理进程jm = findResource(scheduler,type,jobmanager, Name, matlabsky); %找出PC上有效的分布计算资源三、启动Worker复制内容到剪贴板代码:startworker -name worker1out = findResource(worker)waitForState(job, finished,1000)jm=findResource(scheduler,type,jobmanager,name,default_jobmanager);四、分布式计算工具箱示例在运行示例之前,必须先安装 MDCE,然后启动一个Job Manager 和若干个 Worker,并且在Job Manager中注册Worker。要查看MDCE进程的状态,可以用nodestatus.bat批处理文件来查看。如果在Job Manager中没有注册Worker,那么Job Manager就没有办法把任务分配给Worker计算,当调用waitForState(job, finished)命令时,就会发生死锁。1、Programming a Basic Job with a Job Manager复制内容到剪贴板代码:jm=findResource(scheduler,type,jobmanager,name,ccy);j = createJob(jm);createTask(j, sum, 1, 1 1);createTask(j, sum, 1, 2 2);createTask(j, sum, 1, 3 3);submit(j);waitForState(j)results = getAllOutputArguments(j)destroy(j)2、使用分布式计算工具箱来计算Pi的值复制内容到剪贴板代码:jm=findResource(scheduler,type,jobmanager,name,ccy);j = createJob(jm);fun=inline(4./(1+x.2),x);worker_number=20;for i=1:worker_number createTask(j,quad,1,fun,(i-1)/worker_number,i/worker_number);endsubmit(j);waitForState(j);results = getAllOutputArguments(j);val_pi=0;for i=1:worker_number val_pi=val_pi+resultsi;enddestroy(j);str=sprintf(PI=%e,Error=%e,val_pi,val_pi-pi);disp(str);val_pi(三)MATLAB中的并行程序开发3.3.3.1编写分布式应用程序分布式应用程序适用于解决可以被分割为在几个处理器上独立执行的完全独立工作或任务单的问题.如 Monte Carlo 模拟和其它粗粒(coarse-grained)或易并行(embarrassingly parallel)应用程序。分布式计算工具箱提供的功能可以将应用程序分割为能在多个 worker(从客户会话中单独运行的 MATLAB 计算引擎)上独立执行的任务。在一个应用程序中,这些任务可以包含一个或多个 MATLAB 功能,或涵盖多组参数的完整 Simulink 模型。分布式应用程序的工作流程一般是:1.寻找一个作业管理器(或者作业调度程序(scheduler)你的网络上可能有一个或多个作业管理器(但是通常只有一个 scheduler);用来寻找一个作业管理器或者作业调度程序的函数findResource()在当前MATLAB内核中创建一个对象,用来表示将要运行作业的作业管理器或者作业调度程序.2.创建一个作业创建作业用以产生一个任务集合.作业存在于作业管理器中,而一个在本地MATLAB内核中的作业对象代表相应的作业.3.创建任务创建任务添加到作业中去,可以用本地MATLAB内核中的任务对象表示作业中的每一个任务.4.提交作业到待执行的任务队列当作业的每一个任务都被定义之后,将它提交到作业管理器或者作业调度程序.它们将任务分配到各个节点执行.当各节点的所有任务执行完毕后,作业将被标记为完成状态.5.返还作业结果6.销毁作业当所有作业完成,结果收集回来后,需要销毁作业以释放内存.下面这段程序创建了三个独立的任务,产生3个不同维度的随机数矩阵.% 寻找一个作业管理器并创建一个作业jm = findResource(scheduler, type, jobmanager);job = createJob(jm);% 为作业创建独立的任务task1 = createTask(job, rand, 1, 1);task2 = createTask(job, rand, 1, 2);task3 = createTask(job, rand, 1, 3);% 提交任务,等待完成submit(job);waitForState(job, finished);%得到结果并显示results = getAllOutputArguments(job);for i = 1 : 3disp(resultsi)end3.3.3.2设计开发并行应用程序并行应用程序适用于解决那些可以被分割为在整个应用程序生命周期中的特定时间交换数据和同步化的独立任务的问题。分布式计算工具箱支持用于设计开发并行应用程序的特定方法:使用并行 for循环和分布式数组,或使用消息传递构造。这些构造使得我们可以对并行应用程序有很好的控制。可以将任何串行 MATLAB 算法转换成使用这些构造的并行算法。但是,单独 Simulink 模型不能被分割为跨多个 worker 并行运行。分布式计算工具箱支持分布式数组,这些数组是在所有参与并行计算的所有 worker 中分配的任何数据类型的矩阵。并行算法配合分布式数组使用,可以使执行数值运算,如矩阵乘法,分解并直接在分布式数组上转换。工具箱中提供了 150 多个用于分布式数组的重载 MATLAB 函数,包括基于 ScaLAPACK 的线性代数实例。在解释分布式数组之前,先说明一个专用词汇:lab.当MATLAB工作进程开始工作时,它们在默认情况下是独立工作,也可以相互通信协同工作.这时他们被称为labs. 分布式数组是存储一组labs中分割后各部分数据的特殊数组. 你可以进行各种操作,如变换,直接分解分布式阵列, 就像使用常用数组一样.因为分布式数组在多个labs中存储数据,所以你可以在一个MATLAB内核中处理更大的数据集合.有超过150个MATLAB函数支持分布式数组,包括一些基于 ScaLAPACK的函数, 使得我们可以快速的设计开发并行程序,而不需要去处理低层次的消息传递的细节问题.分布式数组的创建有多种方法,直接使用创建函数如rand, ones, zeros, 和 true; 并置变量数组 (在每个lab中有相同的名字,却有不同的值,如labindex); 或者使用分布式复制数组(在所有labs中有相同的名字和值). 你可以控制这些数组中的值按照何种方式分布到不同的lab中去.下面的MATLAB M-code 例子演示如何产生分布式数组.% 直接使用创建函数% 分布式全0矩阵z = zeros(100, 100, darray();%按列分割的分布式稀疏随机矩阵sr = sprand(100, 100, 0.1, darray(1d, 2)% 使用变量数组% L是一个在不同lab中有不同的值的变量数组L = 1:250; 251:500; 501:750; 751:1000 + 250 * (labindex - 1);% Distribute a replicated array%A在所有lab中都一样A = 1:250; 251:500; 501:750; 751:1000;总的来说,只需要很少的改动就可以将串行程序转换成并行程序. 程序处理分布式数组与处理非分布式数组相同。通过使用分布式数组和相关函数,将串行应用程序转换为并行应用程序的过程被简化了该工具箱也支持并行 for 循环,该循环自动将循环体中包含的工作处理分配给参与并行计算的 worker。唯一要求是,在一个并行循环重复期间执行的计算独立于在其它重复期间执行的计算。在循环执行过程中不能在labs之间有通信.可以在一个并行for循环中使用分布式数组,只要labs之间不相互使用对方的数据就可以了.下面给出了一个使用parfor处理几个类似数据文件的例子.parfor ctr = 1 : numDataSets% 每个lab处理数据集合中的一个子集 load(centralmyDatadataSet int2str(ctr) .mat) results(ctr) = processDataSet(ctr);end并行for 循环可以对分布式数组使用同样的基数,我们甚至可以分布式数组向量作为循环变量,控制在每一个lab上执行块的大小.下面是一个小例子.在parfor中使用不平均的分布式向量作为循环变量numDataSets = 12;%假定 numlabs = 4 %distVector = distribute(1:numDataSets, darray(1d, 2, 2 3 3 4);parfor ctr = distVector% 现在每个lab处理一个指定的数据集合的子集.% lab 1 处理 1:2, lab 2 3:5, lab 3 6:8 lab 4处理9:12 load(centralmyDatadataSet int2str(ctr) .mat) results(ctr) = processDataSet(ctr);End3.3.3.3交互式开发环境Pmode分布式计算工具箱延伸了 MATLAB 交互式环境,使用熟悉的 MATLAB 环境原型开发分布式和并行应用程序。在并行命令窗口中,我们可以像在 MATLAB 会话中一样,交互式处理计算机集群。该工具箱使应用程序原型能够使用一个工具箱许可证在工作站上运行最多四个本地 worker。可以在交互式环境中配合所支持的分布式阵列函数和基于 MPI 的函数,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论