主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

并行语言决策表

MATLAB®、Parallel Computing Toolbox™ 和 MATLAB Parallel Server™ 软件提供并行语言特性和函数以及自动并行支持,使您能够利用更多的硬件资源。

  • 使用并行语言功能帮助您并行化 MATLAB 代码。有关常见并行特征的示例,请参阅 选择并行计算语言功能

  • 选择并行语言功能后,决定在何处运行并行 MATLAB 代码。有关详细信息,请参阅选择工作流

  • 一些函数带有自动并行支持。您可以启用 UseParallel 选项,而无需选择外部并行语言功能。有关详细信息,请参阅使用自动并行支持运行 MATLAB 函数

选择并行计算语言功能

使用此表来为您的应用程序选择并行语言功能。当您异步运行一个函数时,MATLAB 可以同时在前台运行其他代码。

示例应用情形函数描述工作单元之间的通信同步或异步

  • 执行蒙特卡罗分析。

  • 执行参数扫描。

  • 并行处理数百万张图像。

parfor

并行 for 循环,其中每次迭代都独立于所有其他迭代。

同步

  • 运行多个仿真。

  • 测试并优化模型。

  • 设计试验。

parsim (Simulink)并行或串行多次仿真动态系统。同步

  • 实施优化程序。

  • 解决“大海捞针”的问题。

  • 在运行代码时添加更多案例。

  • 获取中间结果。

  • 在后台评估函数。

parfeval在并行池工作单元上运行一个函数。 异步

在并行池中设置并行工作单元的环境。

parfevalOnAll在交互式并行池中的所有工作单元上异步执行一个函数。异步

在 GPU 上使用 MATLAB 函数。

gpuArray将 GPU 数组传递给支持的函数以在 GPU 上运行您的代码。同步

  • 在计算期间在工作单元之间传输数据。

  • 在访问分布式数组不同部分的工作单元上运行代码。

  • 在启用消息传递的情况下,在多个工作单元上运行单个程序。

  • 处理太大而无法放入内存的图像。

spmd在并行池的所有工作单元上并行执行一段代码块。同步

  • 使用大型数据集训练深度学习网络。

  • 从云存储读取数据以及将数据写入云存储。

  • 解决线性代数问题。

distributed使用分布式数组和 spmd 代码块并行分析大型多维数据。同步

  • 处理太大而无法放入内存且某一维度很大的数据。

  • 执行机器学习任务。

  • 从云存储读取数据以及将数据写入云存储。

tall使用桌面、集群或 Hadoop® 集群上的并行池并行评估 tall 数组表达式。同步

选择工作流

交互式工作流

使用交互式工作流使用 parpool 在并行工作单元池上执行并行代码。在交互式工作流中,您可以在结果准备就绪后立即查看结果。但是,关闭当前 MATLAB 客户端会话后您将无法检索数据。

要使用交互式工作流,请在 MATLAB 代码中调用 parforparfevalparfevalOnAllspmddistributedtall。当您调用这些函数时,它们会自动启动并行池。有关详细信息,请参阅在并行池上运行代码

使用 gpuArray 将 MATLAB 工作区中的数组转换为 gpuArray 对象。您可以使用任何启用 gpuArray 的 MATLAB 函数来与 gpuArray 对象一起工作。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数

批处理工作流

使用批处理工作流将工作卸载到计算集群并执行其他任务,或提交长时间运行的代码以供稍后执行。如果将工作卸载到远程计算集群,则可以在作业处理时关闭 MATLAB 客户端会话。MATLAB 存储有关批处理作业的信息,以便您可以稍后或在新的客户端会话中检索批处理作业的结果。为了开发和测试您的代码,您可以将工作卸载到客户端计算机上的本地集群。如果您关闭 MATLAB 会话,任何使用本地集群的批处理作业也会立即停止。

批处理工作流支持 parforparfevalgpuArrayspmddistributedtall 并行语言功能以及批处理工作流中的任何其他 MATLAB 函数。使用此表中的批量并行语言功能之一将您的代码作为脚本或函数提交。有关详细信息,请参阅运行批量并行作业

示例应用情形函数描述工作单元之间的通信同步或异步

卸载函数或脚本的执行以在集群或桌面后台运行。

batch 卸载并在工作单元上运行 MATLAB 脚本或函数。异步
批量卸载并行仿真。batchsim (Simulink)卸载仿真以在计算集群上运行。异步

  • 卸载并并行运行包含并行语言(如 parforspmd 代码块)的代码

  • 在集群上使用并行池。

batch(__,Pool=...)在并行工作单元池上卸载并运行 MATLAB 脚本或函数。异步

  • 精细控制独立的并行任务。

  • 整理任务并将其卸载到集群上的独立工作单元身上。

  • 提交任务并稍后查看结果。

createJob将任意数量的任务卸载到集群上的独立工作单元上。任务可以是函数或脚本。 异步

  • 精细控制集群中并行池上的通信任务。

  • 在分布式数据集上同时执行一个函数。

  • 提交任务并稍后查看结果。

createCommunicatingJob将一项任务卸载到集群上进行通信的工作单元身上。 异步

注意

批处理函数在交互并行池中不可用。要提交使用工作单元池进行批量执行的代码,请使用 batch(__,Pool=...)createCommunicatingJob

另请参阅

| (Simulink) | | | | | | | | (Simulink) | |

主题