并行语言决策表
MATLAB®、Parallel Computing Toolbox™ 和 MATLAB Parallel Server™ 软件提供并行语言特性和函数以及自动并行支持,使您能够利用更多的硬件资源。
使用并行语言功能帮助您并行化 MATLAB 代码。有关常见并行特征的示例,请参阅 选择并行计算语言功能。
选择并行语言功能后,决定在何处运行并行 MATLAB 代码。有关详细信息,请参阅选择工作流。
一些函数带有自动并行支持。您可以启用
UseParallel选项,而无需选择外部并行语言功能。有关详细信息,请参阅使用自动并行支持运行 MATLAB 函数。
选择并行计算语言功能
使用此表来为您的应用程序选择并行语言功能。当您异步运行一个函数时,MATLAB 可以同时在前台运行其他代码。
| 示例应用情形 | 函数 | 描述 | 工作单元之间的通信 | 同步或异步 |
|---|---|---|---|---|
| 并行 | 否 | 同步 | |
| parsim (Simulink) | 并行或串行多次仿真动态系统。 | 否 | 同步 |
| parfeval | 在并行池工作单元上运行一个函数。 | 否 | 异步 |
在并行池中设置并行工作单元的环境。 | parfevalOnAll | 在交互式并行池中的所有工作单元上异步执行一个函数。 | 否 | 异步 |
在 GPU 上使用 MATLAB 函数。 | gpuArray | 将 GPU 数组传递给支持的函数以在 GPU 上运行您的代码。 | 否 | 同步 |
| spmd | 在并行池的所有工作单元上并行执行一段代码块。 | 是 | 同步 |
| distributed | 使用分布式数组和 spmd 代码块并行分析大型多维数据。 | 是 | 同步 |
| tall | 使用桌面、集群或 Hadoop® 集群上的并行池并行评估 tall 数组表达式。 | 是 | 同步 |
选择工作流
交互式工作流
使用交互式工作流使用 parpool 在并行工作单元池上执行并行代码。在交互式工作流中,您可以在结果准备就绪后立即查看结果。但是,关闭当前 MATLAB 客户端会话后您将无法检索数据。
要使用交互式工作流,请在 MATLAB 代码中调用 parfor、parfeval、parfevalOnAll、spmd、distributed 和 tall。当您调用这些函数时,它们会自动启动并行池。有关详细信息,请参阅在并行池上运行代码。
使用 gpuArray 将 MATLAB 工作区中的数组转换为 gpuArray 对象。您可以使用任何启用 gpuArray 的 MATLAB 函数来与 gpuArray 对象一起工作。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数。
批处理工作流
使用批处理工作流将工作卸载到计算集群并执行其他任务,或提交长时间运行的代码以供稍后执行。如果将工作卸载到远程计算集群,则可以在作业处理时关闭 MATLAB 客户端会话。MATLAB 存储有关批处理作业的信息,以便您可以稍后或在新的客户端会话中检索批处理作业的结果。为了开发和测试您的代码,您可以将工作卸载到客户端计算机上的本地集群。如果您关闭 MATLAB 会话,任何使用本地集群的批处理作业也会立即停止。
批处理工作流支持 parfor、parfeval、gpuArray、spmd、distributed 和 tall 并行语言功能以及批处理工作流中的任何其他 MATLAB 函数。使用此表中的批量并行语言功能之一将您的代码作为脚本或函数提交。有关详细信息,请参阅运行批量并行作业。
| 示例应用情形 | 函数 | 描述 | 工作单元之间的通信 | 同步或异步 |
|---|---|---|---|---|
卸载函数或脚本的执行以在集群或桌面后台运行。 | batch | 卸载并在工作单元上运行 MATLAB 脚本或函数。 | 否 | 异步 |
| 批量卸载并行仿真。 | batchsim (Simulink) | 卸载仿真以在计算集群上运行。 | 否 | 异步 |
| batch(__,Pool=...) | 在并行工作单元池上卸载并运行 MATLAB 脚本或函数。 | 是 | 异步 |
| createJob | 将任意数量的任务卸载到集群上的独立工作单元上。任务可以是函数或脚本。 | 否 | 异步 |
| createCommunicatingJob | 将一项任务卸载到集群上进行通信的工作单元身上。 | 是 | 异步 |
注意
批处理函数在交互并行池中不可用。要提交使用工作单元池进行批量执行的代码,请使用 batch(__,Pool=...) 或 createCommunicatingJob。
另请参阅
parfor | parsim (Simulink) | parfeval | parfevalOnAll | gpuArray | spmd | distributed | tall | batch | batchsim (Simulink) | createJob | createCommunicatingJob