parpool
在集群上创建并行池
语法
说明
parpool
使用默认配置文件启动并行工作进程池。使用默认首选项,MATLAB® 会在本地机器上启动一个池,每个物理 CPU 核心配备一个工作进程,直至达到默认配置文件中设置的限制。有关并行首选项的更多信息,请参阅 指定您的并行首选项。
一般来说,池大小由默认配置文件的 PreferredPoolNumWorkers
属性指定。要了解可能影响池大小的所有因素,请参阅 影响池大小的因素。
parpool
通过在工作进程池上创建特殊作业,并将 MATLAB 客户端连接到并行池,启用 MATLAB 中并行语言功能的全部功能。并行语言功能包括 parfor
、parfeval
、parfevalOnAll
、spmd
和 distributed
。如果可能的话,将工作进程上的工作文件夹设置为与 MATLAB 客户端会话的工作文件夹相匹配。
parpool(
创建并返回具有指定数量工作进程的池。poolsize
)poolsize
可以是正整数或指定为 2 元素整数向量的范围。如果 poolsize
是一个范围,则生成的池在请求的范围内具有尽可能大的大小。
指定 poolsize
将覆盖 PreferredPoolNumWorkers
属性中指定的任何值,并启动一个具有该数量工作进程的池,即使必须等待它们可用。大多数集群对于可以启动的工作进程的最大数量是有限制的。如果配置文件指定了 MATLAB 作业调度器集群,则 parpool
将从该 MATLAB 作业调度器下已在运行且可用的工作程序中保留其工作进程。如果配置文件指定了本地或第三方调度器,parpool
会指示调度器启动池中的工作进程。
parpool(___,
在启动池时应用某些属性的指定值。Name,Value
)
将 poolobj
= parpool(___)parallel.Pool
对象返回到代表集群上的池的客户端工作区。您可以使用池对象以编程方式删除池或访问其属性。使用 delete(pool)
关闭并行池。
示例
输入参数
输出参量
提示
桌面左下角的池状态指示器显示客户端会话与池的连接以及池的状态。点击图标可查看支持的池操作菜单。
池正在运行: 没有正在运行的池:
如果您将并行选项设置为在必要时自动创建并行池,则无需明确调用
parpool
命令。您可以明确创建一个池来控制何时产生设置它的开销时间,以便该池可以为后续的并行语言构造做好准备。delete(poolobj)
关闭并行池。如果没有并行池,spmd
和parfor
将作为客户端中的单个线程运行,除非您的并行选项设置为自动为它们启动并行池。当您使用 MATLAB 编辑器更新连接到并行池的客户端上的文件时,这些更新会自动传播到池中的工作进程。(此自动更新不适用于 Simulink® 模型文件。要将更新的模型文件传播给工作进程,请使用
updateAttachedFiles
函数。)如果可能的话,工作进程上的工作文件夹最初被设置为与 MATLAB 客户端会话的工作文件夹相匹配。随后,在客户端命令窗口中输入的以下命令也会在池中的所有工作进程上执行:
此行为允许您在所有工作进程上设置工作文件夹和命令搜索路径,以便后续池活动(例如
parfor
-loops)在适当的上下文中执行。在具有 Windows® 操作系统的客户端上更改文件夹或添加带有
cd
或addpath
的路径时,发送给工作进程的值(如果可能)是该文件夹的 UNC 路径。对于使用 Linux® 操作系统的客户端,它是绝对文件夹位置。如果任何这些命令在客户端不起作用,它也不会在工作进程上执行。例如,如果
addpath
指定了客户端无法访问的文件夹,则addpath
命令不会在工作进程上执行。但是,如果可以在客户端上设置工作文件夹,但无法在任何工作进程上按指定方式设置,则不会收到返回到客户端命令窗口的错误消息。在混合平台环境中要小心这种行为上的细微差别,在这种环境中,客户端与工作进程不是同一平台,客户端本地的或从客户端映射的文件夹对工作进程来说不能以相同的方式使用,或者文件夹位于非共享的文件系统中。例如,如果 MATLAB 客户端在 Microsoft® Windows 操作系统上运行,而 MATLAB 工作进程都在 Linux 操作系统上运行,则
addpath
的相同参量不能在两者上都起作用。在这种情况下,您可以使用函数pctRunOnAll
来确保命令在所有工作进程上运行。客户端和工作进程之间的另一个区别是,
matlabroot
文件夹的任何addpath
参量都未在工作进程上设置。假设 MATLAB 安装基础已经包含在工作进程的路径中。addpath
关于池中工作进程的规则是:matlabroot
文件夹的子文件夹不会发送给工作进程。在第一次出现
matlabroot
文件夹之前出现的任何文件夹都将添加到工作进程路径的顶部。在第一次出现
matlabroot
文件夹之后出现的任何文件夹都将添加到工作进程路径上的matlabroot
文件夹组之后。
例如,假设客户端上的
matlabroot
是C:\Applications\matlab\
。在打开并行池的情况下,执行以下操作来设置客户端和所有工作进程上的路径:addpath("P1", "P2", "C:\Applications\matlab\T3", "C:\Applications\matlab\T4", "P5", "C:\Applications\matlab\T6", "P7", "P8");
因为
T3
、T4
和T6
是matlabroot
的子文件夹,所以它们没有设置在工作进程路径上。因此对于工作进程来说,该命令产生的路径的相关部分是:P1 P2 <worker original matlabroot folders...> P5 P7 P8
如果您使用的是 Macintosh 或 Linux,并且在创建大型并行池期间遇到问题,请参阅 针对 Macintosh 和 Linux 的建议系统限制。