MATLAB分布式并行计算环境

关于matlab并行计算文章来自百度博客: 水知道答案,在此表示感谢
MATLAB分布式并行计算环境(一)

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

3.1 Matlab并行计算发展简介

MATLAB技术语言和开发环境应用于各个不同的领域,如图像和信号处理、控制系统、财务建模和计算生物学。MATLAB通过专业领域特定的插件(add-ons)提供专业例程即工具箱(Toolbox),并为高性能库(Libraries)BLAS(Basic Linear Algebra Subprograms,用于执行基本向量和矩阵操作的标准构造块的标准程序)FFTW(Fast Fourier Transform in the West,快速傅里叶变换)LAPACK(Linear Algebra PACKage,线性代数程序包)提供简洁的用户界面,这些特点吸引了各领域专家,与使用低层语言如C语言相比可以使他们很快从各个不同方案反复设计到达功能设计。

      计算机处理能力的进步使得利用多个处理器变得容易,无论是多核处理器,商业机群或两者的结合,这就为像MATLAB一样的桌面应用软件寻找理论机制开发这样的构架创造了需求。已经有一些试图生产基于MATLAB的并行编程的产品,其中最有名是麻省理工大学林肯实验室(MIT Lincoln Laboratory)pMATLABMatlabMPI,康耐尔大学(Cornell University)MutiMATLAB和俄亥俄超级计算中心(Ohio Supercomputing Center)bcMPI
     MALAB
初期版本就试图开发并行计算,80年代晚期MATLAB的原作者,MathWorks公司的共同创立者Cleve Moler曾亲自为英特尔HyperCubeArdent电脑公司的Titan超级计算机开发过MATLABMoler 1995年的一篇文章“Why there isn't a parallel MATLAB?[**] 中描述了在开了并行MATLAB语言中有三个主要的障碍即:内存模式、计算粒度和市场形势。MATLAB全局内存模式的多数并行系统的分布式模式意味着大数据矩阵在主机和并行机之间来回传输。与语法解析和图形例程相比,那时MATLAB只花了小部分的时间行例程上,这使得并行上的努力并不是很有吸引力。最后一个障碍对于一个资源有限的组织来讲确实是一个现实,即没有足够多的MATLAB用户将其用于并行机上,因此公司还是把注意力放在单个CPUMATLAB开发上。然而这并不妨碍一些用户团体开发MATLAB并行计算功能,如上面提到的一些实验室和超级计算中心等。
   
 有几个因素使并行MATLAB工程在MathWorks公司内部变得很重要,首先MATALB已经成长为支持大规模工程的领先工程技术计算环境;其次现今的微处理器可以有两个或四个内核,将来可能会更多甚至个人并行机,采用更复杂的分层存储结构,MATLAB可以利用多处理器计算机或网络机群;最后是用户团体中要求全面成熟解决方案的呼声也越来越高[] Cleve Moler. Parallel MATLAB: Multiple Processors and Multi Cores, Th eMathWorks News&Notes 
    
 有三种途径可以用MATLAB来创建一个并行计算系统。第一种途径是主要是把MATLAB或相似程序翻译为低层语言如CFORTRAN,并用注解和其它机制从编译器中生成并行代码,如CONLABFALCON工程就是这样。把MATLAB程序翻译为低层CFORTRAN语言是个比较困难的问题,实际上MathWorks公司的MATLAB编译软件就能转换生成C代码到生成包含MATLAB代码和库并支持各种语言特性的包装器。
  
 第二种途径是在并行机是MATLAB作为并行计算的一个“浏览器(browser)”而MATLAB本身并没有什么改变且MATLAB环境本来就不是运行上并行机上。这种途径不能真正算是“并行MATLAB”解决方案而仅仅是一个用来接入一个门户启动并行应用程序的WEB浏览器,在Intel HypercubeArdent Titan超级计算机上最早的解决方案就是采用的这种方法。最近的MITMATLAB*p工程和现在一个商用工程Star-P再次使用这种方法。

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

第三种途径是通过其它库来扩展MATLAB或修改语言本身。MIT林肯国家实验室的MatlabMPIpMATLAB工程及Connell大学的MutiMATLAB工程(MathWorks公司也参与其中)是这种方法运用得最成功的并广泛用于MATLAB并行计算库,其它的还有ParaMGAMMA工程、Parallel Toolbox for MATLAB(采用PVM进行消息传递)和各种MPI工具箱MATLAB实现以及最近的Ohio超级计算中心的bcMPIBlue Collar MPI)。
   
 为了满足一套并行MATLAB工具的需要,MathWorls公司在200410月份引进并行计算工具箱(Parallel Computing Toolbox)和MATLAB分布式计算服务器(Distributed Computing Server)(原来分别称为Distributed Computing Toolbox™ and MATLABRDistributed Computing Engine™),属于第三种实现途径。刚开始将MATLAB计算能力扩展至并行计算时,主要是针对易并行计算问题(embarrassingly parallel problem),这些问题通常具有的共同特点是,每一个步骤可以计算独立于所有其他的步骤,因此每一个步骤可以运行在一个单独的处理器,以实现更快的结果。例如很多用户要求在公司电脑上简化运行蒙特卡罗(Monte Carlo)和参数扫描(parameter seep)模拟。因为一些高级用户开始运用工具箱,因此必须结合其它语言特性,包括消息传递和对并行for循环、全局数组语义进行高度抽象。隐含多线程计算是在单核或多处理器机器上进行并行计算的另一种方法。

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

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

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

l 用户可以运用一流的语言结构来表达并行思想。他们无须对自己创建并行程序的编程模式作重大的改变,也不用担心特定的体系结构或处理线程、数据管理和同步等问题。

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

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

 

MATLAB分布式并行计算环境

 

2005 MathWorks公司发布到分布式计算工具箱(Distributed Computing Toolbox)的第一个版本,提供管理多个独立MATLAB作业的功能;2006年发布第二版,增加了MATLABMPI的绑定。MATLAB代表“Matrix Laboratory”的意思,于是称一个MATLAB实例进程为“lab(or worker)”,并引入numlabs表示一个作业中开启的labs的个数。从3.0版开始,增加了新的编程构造支持,使MATLAB不仅仅解决易并行计算问题(Embarrassingly Parallel Problems)。2008年发布4.0版(R2008a)及20092月发布了4.1版(R2009a),下表是各个并行计算工具箱各版本特性改变,使用时注意兼容性影响。各版本特点及详情可查看Mathworks公司网站的Parallel Computing Toolbox™ Release Notes。

 

MATLAB分布式并行计算环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值