主要内容

parpool

在集群上创建并行池

描述

例子

parpool使用默认的集群配置文件启动并行工作器池。使用默认首选项,MATLAB®在本地机器上启动一个池,每个物理CPU核心有一个worker,最多为首选的worker数量。有关并行首选项的更多信息,请参见指定并行首选项

通常,池大小是由并行首选项和默认配置文件指定的。parpool在默认集群上创建一个池NumWorkers范围内[1, preferredNumWorkers]用于运行并行语言特性。preferredNumWorkers是在并行首选项中定义的值。有关影响池大小的所有因素,请参见池大小和集群选择

parpool通过在工作者池上创建一个特殊的作业,并将MATLAB客户端连接到并行池,从而实现MATLAB中并行语言特性的全部功能。并行语言特性包括parforparfevalparfevalOnAllspmd,分布式.如果可能的话,将工人上的工作文件夹设置为与MATLAB客户端会话相匹配。

例子

parpool (poolsize创建并返回具有指定数量工作人员的池。poolsize可以是正整数或指定为2元素整数向量的范围。如果poolsize是范围,则结果池的大小在所请求的范围内尽可能大。

指定poolsize覆盖首选项或概要文件中指定的worker数量,并启动一个恰好具有该数量的worker的池,即使它必须等待它们可用。大多数集群都有可以启动的worker的最大数量。如果配置文件指定了一个MATLAB Job Scheduler集群,parpool保留它的工人从那些已经运行和可用的MATLAB作业调度器。如果配置文件指定了本地或第三方调度程序,parpool指示调度程序启动池的工作程序。

例子

parpool (资源parpool (资源poolsize在指定的资源上启动工作池资源

例子

parpool (___名称,值在启动池时为某些属性应用指定的值。

例子

poolobj= parpool (___返回一个平行的。池对象指向表示集群上的池的客户端工作区。可以使用pool对象以编程方式删除池或访问其属性。使用删除(池)关闭并行池。

例子

全部折叠

使用默认配置文件启动并行池,以定义工作人员的数量。使用默认首选项,默认池在本地机器上。

parpool

您可以在本地机器上的不同类型的并行环境上创建池。

  • 启动一个并行的进程工作者池。

    parpool (“本地”
  • 启动一个并行线程工作器池。

    parpool (“线程”

有关并行环境的更多信息,请参见在基于线程和基于进程的环境中进行选择

启动一个由16个工作人员组成的并行池myProf

parpool (“myProf”, 16)

创建一个表示由默认概要文件标识的集群的对象,并使用该集群对象启动并行池。池大小由默认配置文件决定。

C = parcluster parpool(C)

使用默认配置文件启动一个并行池,并将两个代码文件传递给工作人员。

parpool (“AttachedFiles”,{“mod1.m”“mod2.m”})

如果您可以访问多个gpu,则可以使用并行池在多个gpu上并行执行计算。

要确定MATLAB中可用的图形处理器的数量,请使用gpuDeviceCount函数。

availableGPUs = gpuDeviceCount (“可用”
availableGPUs = 3

用尽可能多的可用gpu启动一个并行池。为了获得最佳性能,MATLAB默认为每个工作器分配不同的GPU。

parpool (“本地”, availableGPUs);
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:3)。

要确定每个工作人员使用的是哪个GPU,调用gpuDevice在一个spmd块。的spmd块运行gpuDevice在每一个工人。

spmdgpuDevice结束

使用并行语言特性,例如parforparfeval,将您的计算分发给并行池中的工作人员。如果你使用gpuArray这些函数运行在worker的GPU上。有关更多信息,请参见在GPU上运行MATLAB函数.例如,请参见在多个gpu上运行MATLAB函数

当您完成计算时,请关闭并行池。你可以使用gcp函数获取当前并行池。

删除(gcp (“nocreate”));

如果您想使用不同的gpu选择,那么您可以使用gpuDevice使用GPU设备索引在每个worker上选择一个特定的GPU。您可以在您的系统中获取每个GPU设备的索引gpuDeviceCount函数。

假设您的系统中有三个可用的gpu,但是您希望在一次计算中只使用两个。获取设备索引。

[availableGPUs, gpuIndx] = gpuDeviceCount (“可用”
availableGPUs = 3
gpuIndx =1×31 2 3

定义要使用的设备的索引。

useGPUs = [1 3];

启动并行池。使用一个spmd块和gpuDevice使用设备索引将每个worker与您想要使用的一个gpu关联起来。的labindex函数标识每个工人的索引。

parpool (“本地”元素个数(useGPUs));
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:2)。
spmdgpuDevice (useGPUs (labindex));结束

作为最佳实践和最佳性能,为每个工作器分配不同的GPU。

当您完成计算时,请关闭并行池。

删除(gcp (“nocreate”));

使用默认配置文件创建一个并行池,然后删除该池。

poolobj = parpool;删除(poolobj)

查找当前并行池中工作程序的数量。

poolobj = gcp (“nocreate”);%如果没有存储池,则不要创建新的存储池。如果Isempty (poolobj) poolsize = 0;其他的poolsize = poolobj。NumWorkers结束

输入参数

全部折叠

并行池的大小,指定为正整数或指定为2元素整数向量的范围。如果poolsize是范围,则结果池的大小在所请求的范围内尽可能大。在并行首选项或并行配置文件中设置默认的首选工作人员数量。

例子:parpool(“当地”,2)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

用于启动池的资源,指定为“本地”“线程”,集群配置文件名称或集群对象。

例子:parpool(当地的)

例子:parpool(“线程”)

例子:parpool (myClusterProfile, 16)

例子:c = parcluster;parpool (c)

数据类型:字符|字符串|平行的。集群

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:AttachedFiles, {' myFun.m '}

要附加到存储池的文件,指定为字符向量、字符串或字符串数组或字符向量的单元格数组。

有了这个参数对,parpool启动一个并行池,并将标识的文件传递给池中的工作人员。文件的后面附加了这里指定的文件AttachedFiles属性以形成所附文件的完整列表。的“AttachedFiles”属性名是区分大小写的,并且必须显示如下所示。

例子:{“myFun.m”、“myFun2.m”}

数据类型:字符|细胞

标志,用于指定客户端路径上的用户添加条目是否在启动时被添加到每个worker的路径中,指定为逻辑值。

数据类型:逻辑

要从客户端会话复制到工作人员的环境变量名称,指定为字符向量、字符串或字符串数组或字符向量的单元数组。属性的后面附加了这里指定的名称“EnvironmentVariables”属性,以形成完整的环境变量列表。列出的未设置的任何变量都不会复制给工作人员。这些环境变量在并行池期间设置在工作人员上。

数据类型:字符|细胞

标记来指定spmd金宝app支持在池上启用,指定为逻辑值。您可以仅在本地或MATLAB作业金宝app调度程序集群上禁用支持。parfor迭代不涉及工人之间的沟通。因此,如果“SpmdEnabled”,一个parfor即使一个或多个worker在循环执行期间中止,-loop也将继续执行。

数据类型:逻辑

在空闲时池关闭的时间(以分钟为单位),指定为大于零的整数。如果一个池没有在worker上运行代码,那么它就是空闲的。默认情况下“IdleTimeout”与并行首选项中的值相同。有关并行首选项的更多信息,请参见指定并行首选项

例子:池= parpool (' IdleTimeout ', 120)

输出参数

全部折叠

从客户端访问并行池,返回为平行的。池对象。

提示

  • 桌面左下角的池状态指示灯显示客户端到池的会话连接和池的状态。单击支持池操作的菜单图标。金宝app

    在游泳池里跑步:没有游泳池运行:

  • 如果将并行首选项设置为在必要时自动创建并行池,则不需要显式调用parpool命令。您可以显式地创建一个池来进行控制,当您引起设置它的开销时,这样池就可以用于后续的并行语言构造。

  • 删除(poolobj)关闭并行池。如果没有并行池,spmdparfor在客户端中作为单个线程运行,除非您的并行首选项被设置为自动为它们启动并行池。

  • 当您使用MATLAB编辑器更新客户机上附加到并行池的文件时,这些更新将自动传播到池中的工作人员。(这种自动更新不适用于Simulink金宝app®模型文件。要将更新的模型文件传播给工作人员,请使用updateAttachedFiles函数)。

  • 如果可能,工作人员上的工作文件夹最初被设置为与MATLAB客户端会话相匹配。随后,在客户端命令窗口中输入的以下命令也会在池中的所有工作者上执行:

    此行为允许您在所有工作人员上设置工作文件夹和命令搜索路径,以便后续池活动,如parfor-loops在适当的上下文中执行。

    更改文件夹或添加路径时cd目录在Windows客户端®,发送给工人的值是文件夹的UNC路径(如果可能的话)。Linux客户端®操作系统中,它是文件夹的绝对位置。

    如果这些命令中的任何一个在客户机上不起作用,那么它也不会在工人上执行。例如,如果目录指定客户端无法访问的文件夹目录命令没有在工人上执行。但是,如果可以在客户机上设置工作文件夹,但不能在任何工作程序上设置指定的文件夹,则不会得到返回到客户机命令窗口的错误消息。

    小心的细微差别的行为在混合环境中,客户机并不相同的平台工人,当地文件夹或从客户端映射并不以同样的方式提供给工人,或文件夹在非共享的文件系统。例如,如果你有一个运行在Microsoft上的MATLAB客户端®而在Windows操作系统上运行MATLAB的工作人员都是在Linux操作系统上运行,同样的道理目录不能两者都做。在这种情况下,可以使用该函数pctRunOnAll确保命令在所有的工人身上运行。

    客户端和工人之间的另一个区别是目录论点是matlabroot在工作人员上没有设置文件夹。假设MATLAB安装库已经包含在工人路径中。的规则目录关于池中的工人:

    • 的子文件夹matlabroot文件夹未发送给工人

    • 类的第一次出现之前出现的任何文件夹matlabroot文件夹被添加到工人路径的顶部。

    • 类的第一次出现之后出现的任何文件夹matlabroot文件夹后添加matlabroot工人路径上的一组文件夹。

    例如,假设matlabroot在客户端上为C: \应用matlab \ \.对于一个开放的并行池,执行以下操作在客户端和所有工作人员上设置路径:

    目录“P1”“P2”“C: \ matlab应用程序\ \ T3”“C: \ matlab应用程序\ \ T4”“P5”“C: \ matlab应用程序\ \ T6”“P7”“P8”);

    因为T3T4,T6的子文件夹matlabroot在美国,它们没有设置在工人的道路上。所以在worker上,由这个命令产生的路径的相关部分是:

    P1 P2 
                     
  • 如果你正在使用麦金塔电脑或Linux,并查看大型并行池创建过程中的问题,请参见Macintosh和Linux的推荐系统限制

介绍了R2013b