在并行池上运行代码
什么是并行池?
并行池是计算集群或桌面上的一组 MATLAB® 工作单元。默认情况下,当并行语言功能(例如 parfor
)需要时,并行池会自动启动。您可以在并行设置中指定默认的并行环境。当您在并行设置菜单中选择并行时,设置面板将显示您的默认并行环境。您还可以在并行 > 选择并行环境菜单中指定默认并行环境。或者,您可以在 MATLAB 命令行中分别使用 parcluster
和 parpool
选择并行环境和池大小。
您可以交互式地使用并行池中的工作单元,这些工作单元可以在作业的整个生命周期内相互通信。您可以在 作业监控程序 中查看您的 parpool
作业。虽然这些池工作单元仅供您交互使用,但其他用户无法使用。
在 MATLAB 中,并行池由一个 parallel.Pool
对象表示。您一次只能从一个并行环境或配置文件创建一个并行池,但可以对池进行分区,划分为多个池,从而实现更灵活的资源分配。要了解更多信息,请参阅 分区并行池以优化资源使用。
在 R2025a 之前的版本中: 一个 MATLAB 客户端会话中一次只能有一个并行池。
自动启动和停止并行池
默认情况下,当某些并行语言功能需要时,并行池会自动启动。许多函数可以自动启动并行池,其中包括:
并行设置指定池运行的并行环境。要访问设置,请在主页选项卡中的环境部分中选择并行 > 并行设置。
在并行设置中,您可以关闭池自动打开或关闭的选项。如果您关闭了自动打开池的选项,并且在没有打开并行池的情况下使用了任何 Parallel Computing Toolbox™ 功能,则您的代码将在客户端上运行。
启动和停止池的其他方法
如果您选择不自动打开池,您可以使用以下技术来控制池。
从 MATLAB 桌面控制并行池
您可以使用 MATLAB 桌面左下角的并行状态指示器手动启动并行池。
在 MATLAB Online 中,并行状态指示器默认不可见。您必须首先使用 parpool
或任何自动启动并行池的函数来启动并行池。
点击指示器图标,然后选择启动并行池。池并行环境由默认并行环境指定。默认并行环境由并行 > 选择并行环境菜单上的复选标记表示。
当池正在运行时,并行指示器菜单选项会有所不同。您可以:
查看工作单元的数量以及池正在运行的并行环境
更改自动关机时间
关闭并行池
要停止池,您还可以选择关闭并行池。
编程接口
启动并行池. 您可以使用默认设置或指定替代方案以编程方式启动和停止并行池。
要根据您的默认设置打开并行池:
parpool
要打开特定大小的池:
parpool(4)
要使用默认环境以外的并行环境并指定池的运行位置,请执行以下操作:
parpool('MyProfile',4)
您可以在不同的并行环境上运行并行池。有关详细信息,请参阅在基于线程和基于进程的环境之间进行选择。
关闭并行池. 要获取当前并行池并在想要关闭池时使用该对象:
p = gcp; delete(p)
确保没有并行池正在运行. 当您发出不带参量的命令 gcp
时,您可能会无意中打开一个池。为了避免此问题:
delete(gcp('nocreate'))
注意
要在启动时停止并行池,请按 Ctrl+C 或 Ctrl+Break。在 Apple macOS 上,您还可以使用 Command.(Command 键和句点键)。
影响池大小的因素
Parallel Computing Toolbox 可以支持最多 2000 个工作单元的并行池。创建并行池时,NumWorkers
和 PreferredPoolNumWorkers
配置文件属性的值会影响并行池的大小。
NumWorkers
属性
NumWorkers
属性是集群或本地计算机可用的工作单元数的硬限制。
对于 MATLAB 作业调度器集群,该软件根据集集群中运行的工作单元数量确定
NumWorkers
属性值。对于第三方调度器集群和本地计算机的进程和线程,您可以在配置文件中指定
NumWorkers
属性的值。
您不能创建大于 NumWorkers
属性值的并行池。
PreferredPoolNumWorkers
属性
PreferredPoolNumWorkers
属性指定了软件使用配置文件创建的池的大小的首选项。这并不是对特定数量工作单元的要求或请求。PreferredPoolNumWorkers
属性的默认值取决于并行环境。您可以在配置文件中修改此值。以下是并行环境及其默认 PreferredPoolNumWorkers
值的列表:
MATLAB 作业调度器、共享云和第三方调度器集群 - 32
个人云集群 -
Inf
本地计算机进程 -
Inf
(自 R2023b 起)在 R2023a 中: 默认值为
NumWorkers
属性值。本地计算机线程 -
Inf
(自 R2025a 起)
池创建方法
NumWorkers
和 PreferredPoolNumWorkers
属性值与您用于创建池的技术相结合决定了并行池的实际大小。
池创建方法 | 实际池大小 |
---|---|
| MATLAB 使用配置文件 |
您运行 | MATLAB 尝试启动一个具有您所请求的确切数量的工作单元池。
|
您运行 | MATLAB 尝试创建一个在该范围内具有最大可能值的池,且不超过
|
并行环境选择的优先级
对于池运行的并行环境的选择,优先级由以下因素决定:
parpool
资源参量覆盖默认配置文件设置,并使用由配置文件"MyProfile"
标识的并行环境。p = parpool("MyProfile");
并行环境在默认配置文件中指定。
p = parpool;
另请参阅
delete
| gcp
| parcluster
| parfor
| spmd
| distributed
| parfeval
| parpool