主要内容

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

在并行池上运行代码

什么是并行池?

并行池是计算集群或桌面上的一组 MATLAB® 工作单元。默认情况下,当并行语言功能(例如 parfor)需要时,并行池会自动启动。您可以在并行设置中指定默认的并行环境。当您在并行设置菜单中选择并行时,设置面板将显示您的默认并行环境。您还可以在并行 > 选择并行环境菜单中指定默认并行环境。或者,您可以在 MATLAB 命令行中分别使用 parclusterparpool 选择并行环境和池大小。

您可以交互式地使用并行池中的工作单元,这些工作单元可以在作业的整个生命周期内相互通信。您可以在 作业监控程序 中查看您的 parpool 作业。虽然这些池工作单元仅供您交互使用,但其他用户无法使用。

在 MATLAB 中,并行池由一个 parallel.Pool 对象表示。您一次只能从一个并行环境或配置文件创建一个并行池,但可以对池进行分区,划分为多个池,从而实现更灵活的资源分配。要了解更多信息,请参阅 分区并行池以优化资源使用

在 R2025a 之前的版本中: 一个 MATLAB 客户端会话中一次只能有一个并行池。

自动启动和停止并行池

默认情况下,当某些并行语言功能需要时,并行池会自动启动。许多函数可以自动启动并行池,其中包括:

并行设置指定池运行的并行环境。要访问设置,请在主页选项卡中的环境部分中选择并行 > 并行设置

在并行设置中,您可以关闭池自动打开或关闭的选项。如果您关闭了自动打开池的选项,并且在没有打开并行池的情况下使用了任何 Parallel Computing Toolbox™ 功能,则您的代码将在客户端上运行。

启动和停止池的其他方法

如果您选择不自动打开池,您可以使用以下技术来控制池。

MATLAB 桌面控制并行池

您可以使用 MATLAB 桌面左下角的并行状态指示器手动启动并行池。

The parallel status indicator, including a drop down menu showing options for starting a parallel pool and inspecting your parallel settings.

MATLAB Online 中,并行状态指示器默认不可见。您必须首先使用 parpool 或任何自动启动并行池的函数来启动并行池。

点击指示器图标,然后选择启动并行池。池并行环境由默认并行环境指定。默认并行环境由并行 > 选择并行环境菜单上的复选标记表示。

The parallel environment menu, showing a check mark next to the Processes parallel environment.

当池正在运行时,并行指示器菜单选项会有所不同。您可以:

  • 查看工作单元的数量以及池正在运行的并行环境

  • 更改自动关机时间

  • 关闭并行池

The parallel status indicator, highlighted blue to indicate that a parallel pool is running. A tooltip shows that a parallel pool has been running for about one minute and will shut down if still idle in 29 minutes.

要停止池,您还可以选择关闭并行池

The parallel status indicator, highlighted blue to indicate that a parallel pool is running and including a menu showing options for shutting down the parallel pool and inspecting your parallel settings.

编程接口

启动并行池.  您可以使用默认设置或指定替代方案以编程方式启动和停止并行池。

要根据您的默认设置打开并行池:

parpool

要打开特定大小的池:

parpool(4)

要使用默认环境以外的并行环境并指定池的运行位置,请执行以下操作:

parpool('MyProfile',4)

您可以在不同的并行环境上运行并行池。有关详细信息,请参阅在基于线程和基于进程的环境之间进行选择

关闭并行池.  要获取当前并行池并在想要关闭池时使用该对象:

p = gcp;
delete(p)

确保没有并行池正在运行.  当您发出不带参量的命令 gcp 时,您可能会无意中打开一个池。为了避免此问题:

delete(gcp('nocreate'))

注意

要在启动时停止并行池,请按 Ctrl+CCtrl+Break。在 Apple macOS 上,您还可以使用 Command.(Command 键和句点键)。

影响池大小的因素

Parallel Computing Toolbox 可以支持最多 2000 个工作单元的并行池。创建并行池时,NumWorkersPreferredPoolNumWorkers 配置文件属性的值会影响并行池的大小。

NumWorkers 属性

NumWorkers 属性是集群或本地计算机可用的工作单元数的硬限制。

  • 对于 MATLAB 作业调度器集群,该软件根据集集群中运行的工作单元数量确定 NumWorkers 属性值。

  • 对于第三方调度器集群和本地计算机的进程和线程,您可以在配置文件中指定 NumWorkers 属性的值。

您不能创建大于 NumWorkers 属性值的并行池。

PreferredPoolNumWorkers 属性

PreferredPoolNumWorkers 属性指定了软件使用配置文件创建的池的大小的首选项。这并不是对特定数量工作单元的要求或请求。PreferredPoolNumWorkers 属性的默认值取决于并行环境。您可以在配置文件中修改此值。以下是并行环境及其默认 PreferredPoolNumWorkers 值的列表:

  • MATLAB 作业调度器、共享云和第三方调度器集群 - 32

  • 个人云集群 - Inf

  • 本地计算机进程 - Inf (自 R2023b 起)

    在 R2023a 中: 默认值为 NumWorkers 属性值。

  • 本地计算机线程 - Inf (自 R2025a 起)

池创建方法

NumWorkersPreferredPoolNumWorkers 属性值与您用于创建池的技术相结合决定了并行池的实际大小。

池创建方法实际池大小
  • 您已打开自动池创建,并运行可以自动启动池的函数。

  • 您可以使用 MATLAB 桌面左下角的并行状态指示器手动启动并行池

  • 您调用 parpool 函数时未指定池大小参量。

MATLAB 使用配置文件 PreferredPoolNumWorkers 的属性值来确定池中的最大工作单元数。如果 MATLAB 无法启动一个具有 PreferredPoolNumWorkers 属性中指定数量的工作单元的池,那么您将得到一个较小的池并且不会出现任何错误。池大小不能超过 NumWorkers 值。

您运行 parpool 函数并将池大小指定为整数。

MATLAB 尝试启动一个具有您所请求的确切数量的工作单元池。

  • 如果指定的值不超过 NumWorkers 属性值,您将获得一个具有指定数量工作单元的池。

  • 如果指定的值超出了 NumWorkers 属性值,则 MATLAB 会引发错误。

您运行 parpool 函数并将池大小指定为整数范围。

MATLAB 尝试创建一个在该范围内具有最大可能值的池,且不超过 NumWorkers 属性值。

  • 如果范围的下限大于 NumWorkers 属性值,则 MATLAB 会引发错误。

  • 如果范围的上限超出了 NumWorkers 属性值,那么您将获得最大可能的池大小,最高可达 NumWorkers 属性值。

并行环境选择的优先级

对于池运行的并行环境的选择,优先级由以下因素决定:

  1. parpool 资源参量覆盖默认配置文件设置,并使用由配置文件 "MyProfile" 标识的并行环境。

    p = parpool("MyProfile");
  2. 并行环境在默认配置文件中指定。

    p = parpool;

另请参阅

| | | | | | |

主题