3.2 Matlab 并行计算工具箱及MDCE介绍
3.2.1并行计算工具箱(Parallel Computing Toolbox)
并行计算工具箱(Parallel Computing Toolbox)可以在多处理器计算环境中使用 MATLAB 和Simulink 解决计算、数据密集型问题。使用工具箱可以解决通过装配多个处理器包含几个单独工作单位或单个大型计算的问题。这些处理器可以驻留在一个多处理器计算机上,或者,当工具箱配合MATLAB 分布式计算引擎(MATLAB Distributed Computing Engine(Server),简称MDCE)时,驻留在计算机集群上。
主要功能
l 支持数据并行和任务并行的应用程序开发
l 可使用 parfor(并行 for 循环)和 spmd(单程序多数据)注释代码段,用于执行数据并行和任务并行的算法
l 高级别的结构,如分布式数组、并行算法,以及消息传递函数,可在多个处理器上处理大型的数据集
l 可在一个多核桌面上本地运行四个 worker (至R2009a,4.1版可达8个)
l 与 MATLAB Distributed Computing Server 集成,可用于使用调度程序或任意数量 worker 的基于集群的应用程序
l 提供交互模式和批量执行模式
1. 在 MATLAB 中编写并行应用程序
Parallel Computing Toolbox(并行计算工具箱)提供了多种高级编程结构,利用此工具箱,可对串行MATLAB 代码进行转换,使之在数个 worker(独立于 MATLAB 客户端运行的 MATLAB 计算引擎)上并行运行。这些 worker 既可在桌面上运行(工具箱在桌面上可本地运行多达四个 worker),也可在集群上运行(使用 MATLAB Distributed Computing Server)。这样的结构可降低在 MATLAB 客户端与 worker 之间、以及各worker 之间管理计算与数据的协调与分发的复杂性,从而简化并行代码开发。此外,可使用关键词,例如parfor(并行 for 循环)和 spmd(单程序多数据)语句来注释 MATLAB 代码,从而可以探究算法的各个区段所提供的任务和数据并行机制。
2. 执行任务并行的算法
通过将 Monte Carlo 仿真和其他粗粒度或密集并行问题组织为独立的任务(工作单元),即可实现其并行化。工具箱中的并行 for 循环提供了一种在多个 MATLAB worker 间分配任务的方式。使用该循环,可以将独立的循环迭代自动分配给多个 MATLAB worker。parfor 结构管理着 MATLAB 客户端会话与 worker 之间的数据和代码传输。它会自动检测是否有 worker,如果没有,则会还原为串行方式。
此外,还可以将任务编写为 MATLAB 函数或 MATLAB 脚本。如果指定为函数,可以通过在工具箱中处理任务和作业对象来执行任务;如果指定为脚本,则可以使用批处理功能。
3. 执行数据并行的算法
对于需要大型数据集处理的 MATLAB 算法,Parallel Computing Toolbox 提供了分布式数组、并行函数,以及使用 spmd 关键词注释代码区段的功能,可用于在数个 worker 上并行执行。这些并行结构可处理 worker 间通信,并协调后台的并行计算。
如要对并行方案进行显式的、细粒度的控制,同时还需要明确管理 worker 间的协调,通过 Parallel Computing Toolbox 函数可访问基于 MPI 标准 (MPICH2) 的消息传递例程,包括用于发送、接收、广播、阻挡、以及探测操作的函数。