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)的 pMATLAB和 MatlabMPI,康耐尔大学(Cornell University)的 MutiMATLAB和俄亥俄超级计算中心(Ohio Supercomputing Center) bcMPI。

MALAB 初期版本就试图开发并行计算,80 年代晚期 MATLAB 的原作者,MathWorks公司的共同创立者 Cleve  Moler 曾亲自为英特尔 HyperCube 和 Ardent 电脑公司的 Titan 超级计算机开发过 MATLAB。Moler 1995 年的一篇文章“Why there isn't a parallel MATLAB?”中描述了在开发并行 MATLAB 语言中有三个主要的障碍:内存模式、计算粒度和市场形势。MATLAB 全局内存模式与多数并行系统的分布式模式意味着大数据矩阵在主机和并行机之间来回传输。与语法解析和图形例程相比,那时 MATLAB 只花了小部分的时间运行例程上,这使得并行上的努力并不是很有吸引力。最后一个障碍对于一个资源有限的组织来讲确实是一个现实,即没有足够多的 MATLAB 用户将其用于并行机上。因此公司还是把注意力放在单个CPU 的 MATLAB 开发上。然而这并不妨碍一些用户团体开发MATLAB 并行计算功能。

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

有三种途径可以用 MATLAB 来创建一个并行计算系统。第一种途径是把 MATLAB或相似程序翻译为低层语言如 C 或 FORTRAN,并用注解和其它机制从编译器中生成并行代码,如 CONLAB和 FALCON工程就是这样。把 MATLAB 程序翻译为低层 C 或FORTRAN 语言是个比较困难的问题,实际上 MathWorks 公司的 MATLAB 编译软件就能转换生成 C 代码到生成包含 MATLAB 代码和库,并支持各种语言特性的包装器。

第二种途径是在并行机上 MATLAB 作为并行计算的一个“浏览器(browser)”,而MATLAB 本身并没有什么改变,且 MATLAB 环境本来就不是运行在并行机上。这种途径不能真正算是“并行 MATLAB”解决方案而仅仅是一个用来接入一个门户启动并行应用程序的 WEB 浏览器,在 Intel Hypercube 和 Ardent Titan 超级计算机上最早的解决方案就是采用的这种方法。最近的 MIT 的 MATLAB*p 工程和现在一个商用工程 Star-P 再次使用这种方法。

上面两种方法由于有限语言和库支持,用户必须丢弃他们已有 MATLAB 代码或选择通过简化的系统提供的构造集来大量的重新实现,而在 MathWorks 公司的最初调查中,已有 MATLAB 代码的利用性被引为任何并行计算工具集的最重要的特性。
第三种途径是通过其它库来扩展 MATLAB 或修改语言本身。MIT 林肯国家实验室的MatlabMPI 和 pMATLAB 工程及 Connell 大学的 MutiMATLAB 工程(MathWorks 公司也参与其中)是这种方法运用得最成功的,并广泛用于MATLAB并行计算库,其它的还有ParaM和 GAMMA 工程、Parallel Toolbox for MATLAB(采用 PVM 进行消息传递)和各种MPI 工具箱 MATLAB 实现以及最近的 Ohio 超级计算中心的 bcMPI(Blue Collar MPI)。

为了满足一套并行 MATLAB 工具的需要,MathWorks 公司在 2004 年 10 月份引进并行计算工具箱(Parallel  Computing  Toolbox)和 MATLAB 分布式计算服务器(DistributedComputing  Server)(原来分别称为 Distributed  Computing  Toolbox™  and  MATLABDistributed Computing Engine™),属于第三种实现途径。刚开始将 MATLAB 计算能力扩展至并行计算时,主要是针对易并行计算问题(embarrassingly parallel problem)。这些问题通常具有的共同特点是,每一个步骤可以计算独立于所有其他的步骤,因此每一个步骤可以运行在一个单独的处理器上,以实现更快的速度。因为一些高级用户开始运用工具箱,因此必须结合其它语言特性,包括消息传递和对并行 for 循环、全局数组语义进行高度抽象。隐含多线程计算是在单核或多处理器机器上进行并行计算的另一种方法。

2005 年 MathWorks 公司发布了分布式计算工具箱(Distributed  Computing  Toolbox)的第二个版本(DCTv2.0),可以在计算机集群上运行的任务之间进行通信。相互通信功能是利用 Message Passing Interface (MPI)实现的。 不过,为了使用 MPI 进行并行运算,用户需要单独指定其动作。因此,对于缺乏程序并行化知识的大部分用户而言,门槛很高。2006 年发布的 DCTv3.0,使得普通的 MATLAB用户也能享受到并行与分布处理所带来的好处。也就是说,对于 MATLAB 所支持的部分函数(约 150 个),它能够自动为多个电脑群集分割或分配大型数据。同时在 DCTv3.0 中还增加了所支持的第三方调度程序。比如,现已能够使用微软的“Windows Compute Cluster Server(CCS)”调度程序。

2007 年以后发布的 DCT,不仅可使用 PC 集群(连接多个 PC),还能够使用多内核(每个芯片配备多个处理器内核)和多处理器(每台计算机配备多个处理器芯片)技术。各版本特点及详情可查看 Mathworks 公司网站的 Parallel Computing Toolbox™ Release Notes。

参考:图像匹配的并行算法研究_于二丽


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值