Main Content

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

在并行池上运行代码

什么是并行池?

并行池是计算集群或桌面上的一组 MATLAB® 工作进程。默认情况下,当并行语言功能(例如 parfor)需要时,并行池会自动启动。您可以在并行偏好设置中指定默认集群。当您在并行菜单中选择并行选项时,首选项面板会显示您的默认集群。您还可以在并行菜单中指定默认集群。或者,您可以在 MATLAB 命令行上分别使用 parclusterparpool 选择集群和池大小。请查看图片了解更多详情。

并行池中的工作进程可以在作业的整个生命周期内交互使用并相互通信。您可以在 作业监控器 中查看您的 parpool 作业。虽然这些池工作进程仅供您交互使用,但其他用户无法使用。一个 MATLAB 客户端会话中一次只能有一个并行池。在 MATLAB 中,当前并行池由 parallel.Pool 对象表示。

Diagram showing a client MATLAB and a parallel cluster. The cluster contains eight parallel workers and the client has started a parallel pool using three of the workers.

自动启动和停止并行池

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

您的并行偏好指定了池在哪个集群上运行。要访问您的偏好设置,请在主页选项卡上的环境部分中,点击并行 > 并行设置

在您的并行偏好设置中,您可以关闭池自动打开或关闭的选项。如果您关闭自动打开池的选项并且在没有打开并行池的情况下使用任何 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 preferences.

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

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

当池运行时,菜单选项会有所不同。您可以:

  • 查看工作进程数量及集群名称

  • 更改自动关机时间

  • 关闭并行池

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 preferences.

编程接口

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

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

parpool

要打开特定大小的池:

parpool(4)

要使用默认集群以外的集群并指定池的运行位置:

parpool('MyCluster',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 属性值。

池创建方法

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

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

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

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

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

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

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

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

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

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

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

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

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

集群选择的优先级

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

  1. 命令行集群对象参量将覆盖默认配置文件设置并使用配置文件 'MyProfile' 标识的集群。

    c = parcluster('MyProfile');
    p = parpool(c);
  2. 该集群在默认配置文件中指定。

    p = parpool;

另请参阅

| | | | | | |

相关示例

详细信息