您的位置:首页 > 编程语言 > MATLAB

Matlab 并行计算工具箱及MDCE介绍(转自高山流水)

2014-03-17 18:01 393 查看
3.2 Matlab 并行计算工具箱及MDCE介绍


3.2.1并行计算工具箱(Parallel
Computing Toolbox)

并行计算工具箱(Parallel
Computing Toolbox)可以在多处理器计算环境中使用 MATLAB 和Simulink 解决计算、数据密集型问题。使用工具箱可以解决通过装配多个处理器包含几个单独工作单位或单个大型计算的问题。这些处理器可以驻留在一个多处理器计算机上,或者,当工具箱配合MATLAB 分布式计算引擎(MATLAB
Distributed Computing Engine(Server),简称MDCE)时,驻留在计算机集群上。

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





利用并行计算工具箱(Parallel
Computing Toolbox),可在多核和多处理器计算机上使用MATLAB 和 Simulink 来解决计算问题和数据密集型问题。并行处理结构包括并行 for 循环和代码块、分布式数组、并行数值算法,以及消息传递函数等,并以较高的级别在 MATLAB 中执行任务及数据并行算法,而无需为特定的硬件和网络架构编写程序。这样,将串行 MATLAB 应用程序转换为 并行 MATLAB 应用程序,便几乎不需要修改代码,且不需要使用低级语言编写程序。此外,还可以在各种批处理环境中交互运行或脱机运行应用程序。

该工具箱提供高级构造,如并行回路、并行算法、基于 MPI 的函数,以及用于作业和任务管理的低级构造。并行命令窗口为用户提供熟悉的用于开发并行应用程序MATLAB 交互式环境。也能够在批处理环境中脱机执行分布式和并行应用程序。

用户可以使用工具箱在单个多核或多处理器桌面上执行应用程序。无需更改代码,即可在计算机集群上运行同一个应用程序(使用 MATLAB
Distributed Computing Server)。并行的 MATLAB 应用程序可以作为可执行程序或共享库(用 MATLAB
Compiler 构建)分发,这些可执行程序或共享库可以访问 MATLAB Distributed Computing
Server。

主要功能

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 代码,从而可以探究算法的各个区段所提供的任务和数据并行机制。

MATLAB 池(Pool)和并行命令窗口 (pmode) 支持交互执行,这样,在设置耗时较长的运行或脱机任务前,可以先测试应用程序的某些区段。即使没有 worker,这些结构仍能够运作,这样,只需维护单个代码版本,即可确保串行执行和并行执行。

2. 执行任务并行的算法

通过将 Monte Carlo 仿真和其他粗粒度或密集并行问题组织为独立的任务(工作单元),即可实现其并行化。工具箱中的并行 for 循环提供了一种在多个 MATLAB
worker 间分配任务的方式。使用该循环,可以将独立的循环迭代自动分配给多个 MATLAB worker。parfor 结构管理着 MATLAB 客户端会话与 worker 之间的数据和代码传输。它会自动检测是否有 worker,如果没有,则会还原为串行方式。









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

3. 执行数据并行的算法

对于需要大型数据集处理的 MATLAB 算法,Parallel
Computing Toolbox 提供了分布式数组、并行函数,以及使用 spmd 关键词注释代码区段的功能,可用于在数个 worker 上并行执行。这些并行结构可处理 worker 间通信,并协调后台的并行计算。

使用分布式数组,可以在参与并行计算的所有 worker 间分配任何数据类型的矩阵。利用并行函数,可以执行多种数学运算,例如索引、矩阵相乘、分解,以及在分布式数组上直接转换。此外,工具箱还提供了 150 个多个用于分布式数组的函数,包括基于 ScaLAPACK 的线性代数例程。

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





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

使用 spmd 结构,可以指定代码的区段以在所有参与并行计算的 worker 间并行运行。程序执行过程中,该结构会自动将在其内部使用的数据和代码传输给 worker,并在执行完毕后将结果返回给 MATLAB 客户端会话。分布式数组、并行函数以及消息传递函数可以在 spmd 结构内部使用。在没有 worker 的情况下,MATLAB 会串行执行 spmd 语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: