- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在MATLAB中编写并行应用程序
在 MATLAB 中编写并行应用程序
Parallel Computing Toolbox(并行计算工具箱)提供了多种高级编程结构,利用此工具箱,可对串行 MATLAB 代码进行转换,使之在数个 worker(独立于 MATLAB 客户端运行的 MATLAB 计算引擎)上并行运行。这些 worker 既可在桌面上运行(工具箱在桌面上可本地运行多达四个 worker),也可在集群上运行(使用 MATLAB Distributed Computing Server(MATLAB 分布式计算服务器))。这样的结构可降低在 MATLAB 客户端与 worker 之间、以及各 worker 之间管理计算与数据的协调与分发的复杂性,从而简化并行代码开发。此外,可使用关键词,例如 parfor(并行 for 循环)和 spmd(单程序多数据)语句来注释 MATLAB 代码,从而可以探究算法的各个区段所提供的任务和数据并行机制。
MATLAB 池和并行命令窗口 (pmode) 支持交互执行,这样,在设置耗时较长的运行或脱机任务前,可以先测试应用程序的某些区段。即使没有 worker,这些结构仍能够运作,这样,只需维护单个代码版本,即可确保串行执行和并行执行。
执行任务并行的算法
通过将 Monte Carlo 仿真和其他粗粒度或密集并行问题组织为独立的任务(工作单元),即可实现其并行化。工具箱中的并行 for 循环提供了一种在多个 MATLAB worker 间分配任务的方式。使用该循环,可以将独立的循环迭代自动分配给多个 MATLAB worker。parfor 结构管理着 MATLAB 客户端会话与 worker 之间的数据和代码传输。它会自动检测是否有 worker,如果没有,则会还原为串行方式。
对任务并行的应用程序使用并行 for 循环。可以在 MATLAB 脚本和函数中使用并行 for 循环,并以交互或脱机的方式执行循环。单击图像可查看大图。 此外,还可以将任务编写为 MATLAB 函数或 MATLAB 脚本。如果指定为函数,可以通过在工具箱中处理任务和作业对象来执行任务;如果指定为脚本,则可以使用批处理功能。
执行数据并行的算法
对于需要大型数据集处理的 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 语句。
在交互式并行环境中工作
Parallel Computing Toolbox(并行计算工具箱)扩展了 MATLAB 交互式环境,让您可以使用熟悉的 MATLAB 环境来建立原型、开发任务并行和数据并行应用程序。 matlabpool 命令可为您分配一组专用的计算资源。它可将您的 MATLAB 会话连接至一个 MATLAB worker 池,这些 worker 既可在桌面上本地运行,又可在计算机集群上运行。此外,它还可以建立一个交互式并行执行环境。在该环境中,您可以从 MATLAB 命令提示符执行并行的 MATLAB 代码,并且在计算结束后立即得到结果。在该环境中,并行的编程结构(例如 parfor 和 spmd)会自动检测是否有 worker,并在 MATLAB 会话与 worker 之间分发计算和数据。
并行命令窗口 (pmode) 是 MATLAB 命令窗
文档评论(0)