借助并行MATLAB应用程序提升科学计算效率
随着诸如金融分析、地震预报、医学影像、流体模拟等应用对科学计算的要求变得更加复杂,工程师和科学家必须使用大量的数据集来解决日益增长的计算强度问题。多数情况下,不是客户的计算机处理不了这样的难题,就是必须花几天甚至数周的时间运行才能得到结果。
另一方面,传统HPC用户也正在寻找更好、更简单的编程工具,以便能创造性地解决问题。否则,他们就不得不在低级语言环境中开发并行应用(例如C、FORTRAN);或者,即便采用了诸如MATLAB(r)这样的高级语言,他们也仍然要依靠程序员用C或FORTRAN来重新编写这些应用 。显然,这些工作成本高又费时,而且还容易出错。
为了更好地解决上述问题,The MathWorks公司曾在2008年5月宣布,将其并行计算工具箱(Parallel Computing Toolbox)并行计算功能整合到MATLAB Optimization Toolbox和遗传算法和直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox)等优化求解器之中,让用户无需代码修改,即可创建密集型计算MATLAB应用的并行版本。
“简便性、灵活性、和易于部署始终是并行MATLAB最为看中和关注的。”该公司MATLAB产品市场总监Lisa Kempler日前在北京为其新版并行计算工具箱进行推广时做出了此番表态。“正版用户只要使用并行计算工具箱开发应用程序并通过MATLAB Compiler发布,便无需缴纳版税。”
她强调说,MATLAB并行计算工具箱能够为客户提供多种高级编程结构,包括parfor(并行for循环)和spmd(单程序多数据)语句、分布式数组、并行数值算法、以及消息传递函数等。用户可利用此工具箱对串行MATLAB代码进行转换,使之在数个worker(独立于MATLAB客户端运行的MATLAB计算引擎)上并行运行。
例如,parfor功能就提供了一种在多个MATLAB worker间分配任务的方式,用户可以在MATLAB脚本和函数中使用该循环,并以交互或脱机的方式执行;如果使用spmd结构,指定代码的区段就可以在所有参与并行计算的worker间并行运行。程序执行过程中,该结构会自动将在其内部使用的数据和代码传输给worker,并在执行完毕后将结果返回给MATLAB客户端。
而使用分布式数组和支持分布式数组的并行函数的好处则在于,用户不但可以在参与并行计算的所有worker间分配任何数据类型的矩阵,还能够执行多种数学运算,例如索引、矩阵相乘、分解,以及在分布式数组上直接转换。此外,该工具箱还提供了作业和任务对象,用以在批处理环境中执行并行 MATLAB 应用程序。
尽管通过MATLAB并行工具箱,使用者已经可以在一台使用一个工具箱许可证的计算机上使用四个本地worker。但Lisa认为,如果能与MATLAB 分布式计算服务器集成使用,应用程序还可得到扩展,从而可以使用运行在任意数量计算机上的任意数量的worker。“这就意味着,其它领域内不直接使用MATLAB的专业人士,也能从并行MATLAB性能中获益。”
她进一步解释说,MATLAB 分布式计算服务器会在应用程序运行时在基于用户配置文件的集群上动态启用所需的许可证。这样,管理员便只需在集群上管理一个服务器许可证,而无需针对每位集群用户在集群上管理单独的工具箱和模块集许可证。
MATLAB并行计算工具箱 4.0新版本使用了用户熟悉的MATLAB环境来建立原型、开发任务并行和数据并行应用程序。以Matlabpool命令为例,它可为用户分配一组专用的计算资源,并将MATLAB会话连接至一个MATLAB worker池。同时,它还可以建立一个交互式并行执行环境。在该环境中,使用者可以从MATLAB命令提示符执行并行的MATLAB代码,并且在计算结束后立即得到结果。相信该工具箱的推出,会让更多的科学家和工程师更高效地利用计算资源和解决大数据量并行计算问题,从而加速自身科研工作的进展。
F1 使用The MathWorks公司并行计算工具箱开发并行应用程序