MATLAB分布式并行计算环境.docx

上传人:b****8 文档编号:9349863 上传时间:2023-05-18 格式:DOCX 页数:14 大小:534.07KB
下载 相关 举报
MATLAB分布式并行计算环境.docx_第1页
第1页 / 共14页
MATLAB分布式并行计算环境.docx_第2页
第2页 / 共14页
MATLAB分布式并行计算环境.docx_第3页
第3页 / 共14页
MATLAB分布式并行计算环境.docx_第4页
第4页 / 共14页
MATLAB分布式并行计算环境.docx_第5页
第5页 / 共14页
MATLAB分布式并行计算环境.docx_第6页
第6页 / 共14页
MATLAB分布式并行计算环境.docx_第7页
第7页 / 共14页
MATLAB分布式并行计算环境.docx_第8页
第8页 / 共14页
MATLAB分布式并行计算环境.docx_第9页
第9页 / 共14页
MATLAB分布式并行计算环境.docx_第10页
第10页 / 共14页
MATLAB分布式并行计算环境.docx_第11页
第11页 / 共14页
MATLAB分布式并行计算环境.docx_第12页
第12页 / 共14页
MATLAB分布式并行计算环境.docx_第13页
第13页 / 共14页
MATLAB分布式并行计算环境.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MATLAB分布式并行计算环境.docx

《MATLAB分布式并行计算环境.docx》由会员分享,可在线阅读,更多相关《MATLAB分布式并行计算环境.docx(14页珍藏版)》请在冰点文库上搜索。

MATLAB分布式并行计算环境.docx

MATLAB分布式并行计算环境

MATLAB分布式并行计算环境

(一)

2010-05-1613:

46

  前言:

之前在本博客上发过一些关于matlab并行计算的文章,也有不少网友加我讨论关于这方面的一些问题,比如matlab并行计算环境的建立,并行计算效果,数据传递等等,由于本人在研究生期间做论文的需要在这方面做过一些研究,但总体感觉也就是一些肤浅的应用,现已工作,已很少再用了,很多细节方面可能也记不清了,在这里将以前做的论文内容做一些整理,将分几个小节,对matlab并行计算做个一个简要的介绍,以期对一些初学者有所帮助,当然最主要的还是多看帮助文档及相关技术文章!

有不当之处敬请各位网友指正,

3.1Matlab并行计算发展简介

MATLAB技术语言和开发环境应用于各个不同的领域,如图像和信号处理、控制系统、财务建模和计算生物学。

MATLAB通过专业领域特定的插件(add-ons)提供专业例程即工具箱(Toolbox),并为高性能库(Libraries)如BLAS(BasicLinearAlgebraSubprograms,用于执行基本向量和矩阵操作的标准构造块的标准程序)、FFTW(FastFourierTransformintheWest,快速傅里叶变换)和LAPACK(LinearAlgebraPACKage,线性代数程序包)提供简洁的用户界面,这些特点吸引了各领域专家,与使用低层语言如C语言相比可以使他们很快从各个不同方案反复设计到达功能设计。

     计算机处理能力的进步使得利用多个处理器变得容易,无论是多核处理器,商业机群或两者的结合,这就为像MATLAB一样的桌面应用软件寻找理论机制开发这样的构架创造了需求。

已经有一些试图生产基于MATLAB的并行编程的产品,其中最有名是麻省理工大学林肯实验室(MITLincolnLaboratory)的pMATLAB和MatlabMPI,康耐尔大学(CornellUniversity)的MutiMATLAB和俄亥俄超级计算中心(OhioSupercomputingCenter)的bcMPI。

    MALAB初期版本就试图开发并行计算,80年代晚期MATLAB的原作者,MathWorks公司的共同创立者CleveMoler曾亲自为英特尔HyperCube和Ardent电脑公司的Titan超级计算机开发过MATLAB。

Moler1995年的一篇文章“Whythereisn'taparallelMATLAB?

[**]”中描述了在开了并行MATLAB语言中有三个主要的障碍即:

内存模式、计算粒度和市场形势。

MATLAB全局内存模式的多数并行系统的分布式模式意味着大数据矩阵在主机和并行机之间来回传输。

与语法解析和图形例程相比,那时MATLAB只花了小部分的时间行例程上,这使得并行上的努力并不是很有吸引力。

最后一个障碍对于一个资源有限的组织来讲确实是一个现实,即没有足够多的MATLAB用户将其用于并行机上,因此公司还是把注意力放在单个CPU的MATLAB开发上。

然而这并不妨碍一些用户团体开发MATLAB并行计算功能,如上面提到的一些实验室和超级计算中心等。

   有几个因素使并行MATLAB工程在MathWorks公司内部变得很重要,首先MATALB已经成长为支持大规模工程的领先工程技术计算环境;其次现今的微处理器可以有两个或四个内核,将来可能会更多甚至个人并行机,采用更复杂的分层存储结构,MATLAB可以利用多处理器计算机或网络机群;最后是用户团体中要求全面成熟解决方案的呼声也越来越高[]CleveMoler.ParallelMATLAB:

MultipleProcessorsandMultiCores,TheMathWorksNews&Notes。

    有三种途径可以用MATLAB来创建一个并行计算系统。

第一种途径是主要是把MATLAB或相似程序翻译为低层语言如C或FORTRAN,并用注解和其它机制从编译器中生成并行代码,如CONLAB和FALCON工程就是这样。

把MATLAB程序翻译为低层C或FORTRAN语言是个比较困难的问题,实际上MathWorks公司的MATLAB编译软件就能转换生成C代码到生成包含MATLAB代码和库并支持各种语言特性的包装器。

  第二种途径是在并行机是MATLAB作为并行计算的一个“浏览器(browser)”而MATLAB本身并没有什么改变且MATLAB环境本来就不是运行上并行机上。

这种途径不能真正算是“并行MATLAB”解决方案而仅仅是一个用来接入一个门户启动并行应用程序的WEB浏览器,在IntelHypercube和ArdentTitan超级计算机上最早的解决方案就是采用的这种方法。

最近的MIT的MATLAB*p工程和现在一个商用工程Star-P再次使用这种方法。

上面这两种方法由于有限语言和库支持,用户必须丢弃他们已有MATLAB代码或选择通过简化的系统提供的构造集来大量的重新实现,而在MathWorlks公司的最初调查中,已有MATLAB代码的利用性被引为任何并行计算工具集的最重要的特性。

第三种途径是通过其它库来扩展MATLAB或修改语言本身。

MIT林肯国家实验室的MatlabMPI和pMATLAB工程及Connell大学的MutiMATLAB工程(MathWorks公司也参与其中)是这种方法运用得最成功的并广泛用于MATLAB并行计算库,其它的还有ParaM和GAMMA工程、ParallelToolboxforMATLAB(采用PVM进行消息传递)和各种MPI工具箱MATLAB实现以及最近的Ohio超级计算中心的bcMPI(BlueCollarMPI)。

   为了满足一套并行MATLAB工具的需要,MathWorls公司在2004年10月份引进并行计算工具箱(ParallelComputingToolbox)和MATLAB分布式计算服务器(DistributedComputingServer)(原来分别称为DistributedComputingToolbox™andMATLABRDistributedComputingEngine™),属于第三种实现途径。

刚开始将MATLAB计算能力扩展至并行计算时,主要是针对易并行计算问题(embarrassinglyparallelproblem),这些问题通常具有的共同特点是,每一个步骤可以计算独立于所有其他的步骤,因此每一个步骤可以运行在一个单独的处理器,以实现更快的结果。

例如很多用户要求在公司电脑上简化运行蒙特卡罗(MonteCarlo)和参数扫描(parameterseep)模拟。

因为一些高级用户开始运用工具箱,因此必须结合其它语言特性,包括消息传递和对并行for循环、全局数组语义进行高度抽象。

隐含多线程计算是在单核或多处理器机器上进行并行计算的另一种方法。

公司的战略目标是将传统的MATLAB优势扩展到机群环境,具有交互式功能、多平台支持,接近数学表达式的语言来表达思想的能力而抽象出不相关的细节,因此工具集的设计目标是:

l用户在机群上可以执行任意的MATLAB代码和Simulink仿真模型。

l用户可以用熟悉的MATLAB语言来编写和执行所有的任务相关的MATLAB并行程序

l用户可以运用一流的语言结构来表达并行思想。

他们无须对自己创建并行程序的编程模式作重大的改变,也不用担心特定的体系结构或处理线程、数据管理和同步等问题。

l语言应该完全独立于资源分配。

同样的程序可以在单个处理器或数百个处理器上正常运行,并且可以根据资源适当扩展伸缩,在机群某节点缺失情况下依然能正常运行。

l可编程性将一直超越其它问题,用户能够创建正确的,易于阅读、调试和维护的程序

2005年MathWorks公司发布到分布式计算工具箱(DistributedComputingToolbox)的第一个版本,提供管理多个独立MATLAB作业的功能;2006年发布第二版,增加了MATLAB和MPI的绑定。

MATLAB代表“MatrixLaboratory”的意思,于是称一个MATLAB实例进程为“lab(orworker)”,并引入numlabs表示一个作业中开启的labs的个数。

从3.0版开始,增加了新的编程构造支持,使MATLAB不仅仅解决易并行计算问题(EmbarrassinglyParallelProblems)。

2008年发布4.0版(R2008a)及2009年2月发布了4.1版(R2009a),下表是各个并行计算工具箱各版本特性改变,使用时注意兼容性影响。

各版本特点及详情可查看Mathworks公司网站的ParallelComputingToolbox™ReleaseNotes。

3.2Matlab并行计算工具箱及MDCE介绍

3.2.1并行计算工具箱(ParallelComputingToolbox)

并行计算工具箱(ParallelComputingToolbox)可以在多处理器计算环境中使用MATLAB和Simulink解决计算、数据密集型问题。

使用工具箱可以解决通过装配多个处理器包含几个单独工作单位或单个大型计算的问题。

这些处理器可以驻留在一个多处理器计算机上,或者,当工具箱配合MATLAB分布式计算引擎(MATLABDistributedComputingEngine(Server),简称MDCE)时,驻留在计算机集群上。

  使用ParallelComputingToolbox开发并行应用程序。

利用该工具箱,应用程序能够在包含多达四个本地worker的桌面建立原型(4.1版R2009a可以多达八个本地worker),并且,通过MATLABDistributedComputingServer(MATLAB分布式计算服务器),可以扩展应用程序,将其应用到一个集群上的多台计算机,如图3-2所示。

   利用并行计算工具箱(ParallelComputingToolbox),可在多核和多处理器计算机上使用MATLAB和Simulink来解决计算问题和数据密集型问题。

并行处理结构包括并行for循环和代码块、分布式数组、并行数值算法,以及消息传递函数等,并以较高的级别在MATLAB中执行任务及数据并行算法,而无需为特定的硬件和网络架构编写程序。

这样,将串行MATLAB应用程序转换为并行MATLAB应用程序,便几乎不需要修改代码,且不需要使用低级语言编写程序。

此外,还可以在各种批处理环境中交互运行或脱机运行应用程序。

     该工具箱提供高级构造,如并行回路、并行算法、基于MPI的函数,以及用于作业和任务管理的低级构造。

并行命令窗口为用户提供熟悉的用于开发并行应用程序MATLAB交互式环境。

也能够在批处理环境中脱机执行分布式和并行应用程序。

   用户可以使用工具箱在单个多核或多处理器桌面上执行应用程序。

无需更改代码,即可在计算机集群上运行同一个应用程序(使用MATLABDistributedComputingServer)。

并行的MATLAB应用程序可以作为可执行程序或共享库(用MATLABCompiler构建)分发,这些可执行程序或共享库可以访问MATLABDistributedComputingServer。

主要功能

l支持数据并行和任务并行的应用程序开发

l可使用parfor(并行for循环)和spmd(单程序多数据)注释代码段,用于执行数据并行和任务并行的算法

l高级别的结构,如分布式数组、并行算法,以及消息传递函数,可在多个处理器上处理大型的数据集

l可在一个多核桌面上本地运行四个worker(至R2009a,4.1版可达8个)

l与MATLABDistributedComputingServer集成,可用于使用调度程序或任意数量worker的基于集群的应用程序

l提供交互模式和批量执行模式

1.在MATLAB中编写并行应用程序

ParallelComputingToolbox(并行计算工具箱)提供了多种高级编程结构,利用此工具箱,可对串行MATLAB代码进行转换,使之在数个worker(独立于MATLAB客户端运行的MATLAB计算引擎)上并行运行。

这些worker既可在桌面上运行(工具箱在桌面上可本地运行多达四个worker),也可在集群上运行(使用MATLABDistributedComputingServer)。

这样的结构可降低在MATLAB客户端与worker之间、以及各worker之间管理计算与数据的协调与分发的复杂性,从而简化并行代码开发。

此外,可使用关键词,例如parfor(并行for循环)和spmd(单程序多数据)语句来注释MATLAB代码,从而可以探究算法的各个区段所提供的任务和数据并行机制。

   MATLAB池(Pool)和并行命令窗口(pmode)支持交互执行,这样,在设置耗时较长的运行或脱机任务前,可以先测试应用程序的某些区段。

即使没有worker,这些结构仍能够运作,这样,只需维护单个代码版本,即可确保串行执行和并行执行。

2.执行任务并行的算法

通过将MonteCarlo仿真和其他粗粒度或密集并行问题组织为独立的任务(工作单元),即可实现其并行化。

工具箱中的并行for循环提供了一种在多个MATLABworker间分配任务的方式。

使用该循环,可以将独立的循环迭代自动分配给多个MATLABworker。

parfor结构管理着MATLAB客户端会话与worker之间的数据和代码传输。

它会自动检测是否有worker,如果没有,则会还原为串行方式。

此外,还可以将任务编写为MATLAB函数或MATLAB脚本。

如果指定为函数,可以通过在工具箱中处理任务和作业对象来执行任务;如果指定为脚本,则可以使用批处理功能。

3.执行数据并行的算法

对于需要大型数据集处理的MATLAB算法,ParallelComputingToolbox提供了分布式数组、并行函数,以及使用spmd关键词注释代码区段的功能,可用于在数个worker上并行执行。

这些并行结构可处理worker间通信,并协调后台的并行计算。

   使用分布式数组,可以在参与并行计算的所有worker间分配任何数据类型的矩阵。

利用并行函数,可以执行多种数学运算,例如索引、矩阵相乘、分解,以及在分布式数组上直接转换。

此外,工具箱还提供了150个多个用于分布式数组的函数,包括基于ScaLAPACK的线性代数例程。

   使用spmd语句和分布式数组编程。

利用分布式数组和并行算法,仅需对代码做最少的更改即可创建数据并行的MATLAB程序,且无需使用MPI编程。

如要对并行方案进行显式的、细粒度的控制,同时还需要明确管理worker间的协调,通过ParallelComputingToolbox函数可访问基于MPI标准(MPICH2)的消息传递例程,包括用于发送、接收、广播、阻挡、以及探测操作的函数。

  使用spmd结构,可以指定代码的区段以在所有参与并行计算的worker间并行运行。

程序执行过程中,该结构会自动将在其内部使用的数据和代码传输给worker,并在执行完毕后将结果返回给MATLAB客户端会话。

分布式数组、并行函数以及消息传递函数可以在spmd结构内部使用。

在没有worker的情况下,MATLAB会串行执行spmd语句。

4.在交互式并行环境中工作

ParallelComputingToolbox(并行计算工具箱)扩展了MATLAB交互式环境,可以使用熟悉的MATLAB环境来建立原型、开发任务并行和数据并行应用程序。

matlabpool命令可为分配一组专用的计算资源。

它可将您的MATLAB会话连接至一个MATLABworker池,这些worker既可在桌面上本地运行,又可在计算机集群上运行。

此外,它还可以建立一个交互式并行执行环境。

在该环境中,用户可以从MATLAB命令提示符执行并行的MATLAB代码,并且在计算结束后立即得到结果。

在该环境中,并行的编程结构(例如parfor和spmd)会自动检测是否有worker,并在MATLAB会话与worker之间分发计算和数据。

   并行命令窗口(pmode)是MATLAB命令窗口的扩展,可建立一个数据并行的执行环境,在该环境中,用户可以使用分布式数组、关联的并行函数,以及消息传递函数。

在并行提示符下发出的命令会在所有参与的worker上同时执行,并立即返回结果,这样,用户便可以更好地在每个步骤追踪应用程序在整个多处理器系统中的行为。

此外,还可以将命令收集到MATLAB函数中,并将其提交用以脱机执行。

5.在批处理环境中工作

利用ParallelComputingToolbox(并行计算工具箱),用户可以使用批处理环境来脱机执行程序,从而在执行大型MATLAB和Simulink应用程序时,自如地将MATLAB客户端会话用于其他活动。

等待应用程序执行并返回结果时,用户也可以关闭MATLAB客户端会话。

   利用批处理功能,可脱机执行MATLAB脚本。

它提供了一种在MATLAB客户端和worker工作区之间传输数据的机制,免除了在多个工作区分别管理数据的需要。

利用ConfigurationsManager(配置管理器),可将程序执行导向使用四个本地worker的工作站,或使用任何scheduler和任意数量worker的集群。

此外,该工具箱还提供了作业和任务对象。

这些对象提供了一种较低级但更通用的机制,用以在批处理环境中执行并行MATLAB应用程序。

批处理函数以及作业和任务对象都可用来减少执行串行MATLAB程序时,从桌面MATLAB会话向worker传输数据的负载。

  

3.2.2分布式计算引擎(服务器)(MDCE/S)

MATLABDistributedComputingServer可以使并行计算工具箱应用程序得到扩展,从而可以使用运行在任意数量计算机上的任意数量的worker。

MATLABDistributedComputingServer还支持交互式和批处理工作流。

此外,使用ParallelComputingToolbox函数的MATLAB应用程序还可利用MATLABCompiler(MATLAB编译器)编入独立的可执行程序和共享软件组件,以进行免费特许分发。

这些可执行应用程序和共享库可以连接至MATLABDistributedComputingServer的worker,并在计算机集群上执行MATLAB同时计算,加快大型作业执行速度,节省运行时间。

   MATLABDistributedComputingServer支持多个调度程序:

MathWorks作业管理器(随产品提供)或任何其他第三方调度程序,例如PlatformLSF、MicrosoftWindowsComputeClusterServer(CCS)、AltairPBSPro,以及TORQUE。

   使用工具箱中的ConfigurationsManager(配置管理器),可以维护指定的设置,例如调度程序类型、路径设置,以及集群使用政策。

通常,仅需更改配置名称即可在集群间或调度程序间切换。

   MATLABDistributedComputingServer会在应用程序运行时在基于用户配置文件的集群上动态启用所需的许可证。

这样,管理员便只需在集群上管理一个服务器许可证,而无需针对每位集群用户在集群上管理单独的工具箱和模块集许可证。

   作业(Job)是在MATLAB中大量的操作运算。

一个作业可以分解不同的部分称为任务(Task),客户可以决定如何更好的划分任务,各任务可以相同也可以不同。

MALAB中定义并建立作业及其任务的会话(Session)被称为客户端会话,通常这是在你用来编写程序那台机器上进行的。

客户端用并行计算工具箱来定义和建立作业及其任务,MDCE通过计算各个任务来执行作业并负责把结果返回客户端。

作业管理器(JobManager)是MDCE的一个组成部分,用来协调各个作业及其任务在各个woker上的执行。

如图3-6所示,MATLAB客户端(Client)与调度或作业管理器(Sheudler/Jobmanager)和计算节点(Worker)之间的关系。

在一个机群(Cluster)环境中可以由多个客户端同时向调度管理器提交作业,在,中调度器负责作业对列排序等待、分发给各节点worker,并将结果归约返回给客户端,如图3-7(a)所示;在一个比较大而复杂网络机群中,还可以存在多个客户端与多个作业调度,一个客户可以向多个不同作业调度器提交多个作业,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2