在并行池上运行代码
什么是并行池?
并行池是计算集群或桌面上的一组 MATLAB® 工作进程。默认情况下,当并行语言功能(例如 parfor
)需要时,并行池会自动启动。您可以在并行偏好设置中指定默认集群。当您在并行菜单中选择并行选项时,首选项面板会显示您的默认集群。您还可以在并行菜单中指定默认集群。或者,您可以在 MATLAB 命令行上分别使用 parcluster
和 parpool
选择集群和池大小。请查看图片了解更多详情。
并行池中的工作进程可以在作业的整个生命周期内交互使用并相互通信。您可以在 作业监控器 中查看您的 parpool
作业。虽然这些池工作进程仅供您交互使用,但其他用户无法使用。一个 MATLAB 客户端会话中一次只能有一个并行池。在 MATLAB 中,当前并行池由 parallel.Pool
对象表示。
自动启动和停止并行池
默认情况下,当某些并行语言功能需要时,并行池会自动启动。许多函数可以自动启动并行池,其中包括:
您的并行偏好指定了池在哪个集群上运行。要访问您的偏好设置,请在主页选项卡上的环境部分中,点击并行 > 并行设置。
在您的并行偏好设置中,您可以关闭池自动打开或关闭的选项。如果您关闭自动打开池的选项并且在没有打开并行池的情况下使用任何 Parallel Computing Toolbox 功能,则您的代码将在客户端上运行。
启动和停止池的其他方法
如果您选择不自动打开池,您可以使用以下技术来控制池。
从 MATLAB 桌面控制并行池
您可以使用 MATLAB 桌面左下角的并行状态指示器手动启动并行池。
在 MATLAB Online 中,并行状态指示器默认不可见。您必须首先使用 parpool
或任何自动启动并行池的函数来启动并行池。
点击指示器图标,然后选择启动并行池。池集群由您的默认集群指定。您的默认集群由 并行 > 默认集群 菜单上的复选标记表示。
当池运行时,菜单选项会有所不同。您可以:
查看工作进程数量及集群名称
更改自动关机时间
关闭并行池
要停止池,您还可以选择关闭并行池。
编程接口
启动并行池. 您可以使用默认设置或指定替代方案以编程方式启动和停止并行池。
要根据您的默认设置打开并行池:
parpool
要打开特定大小的池:
parpool(4)
要使用默认集群以外的集群并指定池的运行位置:
parpool('MyCluster',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
属性值。
池创建方法
NumWorkers
和 PreferredPoolNumWorkers
属性值与您用于创建池的技术相结合决定了并行池的实际大小。
池创建方法 | 实际池大小 |
---|---|
| MATLAB 使用集群配置文件 |
您运行 | MATLAB 尝试启动一个具有您所请求的确切数量的工作进程池。
|
您运行 | MATLAB 尝试创建一个在该范围内具有最大可能值的池,且不超过
|
集群选择的优先级
对于选择运行池的集群,优先级由以下因素决定:
命令行集群对象参量将覆盖默认配置文件设置并使用配置文件
'MyProfile'
标识的集群。c = parcluster('MyProfile'); p = parpool(c);
该集群在默认配置文件中指定。
p = parpool;
另请参阅
delete
| gcp
| parcluster
| parfor
| spmd
| distributed
| parfeval
| parpool