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 最初将工作单元上的工作文件夹设置为与 MATLAB 客户端会话上的工作文件夹一致。随后,如果您在客户端上运行以下命令,MATLAB 也会在池中的所有工作单元上执行该命令:
此行为允许您在所有工作单元上设置工作文件夹和命令搜索路径,以便后续池活动(例如
parfor循环)在适当的上下文中执行。在具有 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 的建议系统限制。