主要内容

parpool

在集群上创建并行池

描述

例子

parpool开始一个平行的工人使用默认概要文件。默认首选项,MATLAB®在本地机器上启动一个池与一名工人每个物理CPU核心限制设置的默认配置文件。并行偏好上的更多信息,请参阅指定您的平行的偏好

一般来说,指定的池的大小NumWorkersPreferredPoolNumWorkers默认的配置文件的属性。所有的因素会影响你的池的大小,看看池的大小和集群的选择

parpool使并行在MATLAB语言特性的完整功能通过创建一个特殊工作的工人,和MATLAB客户机连接到平行池。并行语言的特性包括parfor,parfeval,parfevalOnAll,spmd,分布式。如果可能的话,工人的工作目录设置为匹配的MATLAB客户机会话。

例子

parpool (poolsize)创建并返回一个池的指定数量的工人。poolsize可以是一个正整数或范围指定为一个整数2-element向量。如果poolsize是一个范围,由此产生的池大小尽可能大的范围要求。

指定poolsize覆盖中指定的任何值PreferredPoolNumWorkers属性,并开始一个完全池,工人数量,即使它不得不等待他们是可用的。大多数集群有最大数量的工人他们可以开始。如果这个概要文件指定一个MATLAB集群作业调度程序,parpool储备员工从那些已经运行和可用MATLAB作业调度器。如果这个概要文件指定一个本地或第三方调度器parpool指示调度器的工人开始池。

例子

parpool (资源)parpool (资源,poolsize)开始一个工人在指定的资源池资源

例子

parpool (___,名称,值)适用于某些属性的指定值时启动池。

例子

poolobj= parpool (___)返回一个parallel.Pool对象到客户机工作区代表池在集群上。您可以通过编程方式使用对象池删除池或访问其属性。使用删除(池)关闭平行池。

例子

全部折叠

开始一个平行池使用默认配置文件定义的工人数量。默认首选项,默认池是在本地机器上。

parpool

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

  • 开始一个平行的过程的工人。

    parpool (“过程”)
  • 开始一个并行的线程池的工人。

    parpool (“线程”)

前并行环境的更多信息,请参阅在线程之间进行选择和基于流程的环境

开始一个并行的16个工人用一个概要文件myProf

parpool (“myProf”,16)

创建一个对象代表集群被缺省概要,并使用集群对象开始一个平行的池。池的大小是由默认的配置文件。

c = parcluster parpool (c)

与缺省概要开始平行池,将两个代码文件传递给工人。

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

如果你有几个gpu,你可以执行你的计算在多个gpu并行使用并行池。

可用来确定数量的gpu用于MATLAB、使用gpuDeviceCount函数。

availableGPUs = gpuDeviceCount (“可用”)
availableGPUs = 3

开始一个尽可能多的工人提供gpu并行池。为获得最佳性能,MATLAB分配一个不同的GPU默认每个工人。

parpool (“过程”,availableGPUs);
开始平行池(parpool)使用过程的概要文件…连接到平行池(工人数量:3)。

确定每个职工使用GPU,称之为gpuDevice在一个spmd块。的spmd块运行gpuDevice在每一个工人。

spmdgpuDevice结束

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

当你完成了你的计算,关闭平行池。您可以使用gcp函数获得当前并行池。

删除(gcp (“nocreate”));

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

假设你有三个gpu可在您的系统,但是你想用只有两个计算。获取设备的指标。

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

定义要使用的设备的指标。

useGPUs = [1 3];

开始你的平行池。使用一个spmd块和gpuDevice把每个工人和一个您想要使用gpu,使用设备索引。的spmdIndex识别每个工人的指数函数。

parpool (“过程”元素个数(useGPUs));
开始平行池(parpool)使用过程的概要文件…连接到平行池(工人数量:2)。
spmdgpuDevice (useGPUs (spmdIndex));结束

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

当你完成了你的计算,关闭平行池。

删除(gcp (“nocreate”));

与默认概要文件创建一个平行的池,池后删除。

poolobj = parpool;删除(poolobj)

发现工人的数量在当前并行池。

poolobj = gcp (“nocreate”);%如果没有游泳池,不创建新的。如果isempty (poolobj) poolsize = 0;其他的poolsize = poolobj.NumWorkers结束

输入参数

全部折叠

平行的池的大小,指定为一个正整数或范围指定为一个整数2-element向量。如果poolsize是一个范围,由此产生的池大小尽可能大的范围要求。设置默认首选的工人数量的集群配置文件。

例子:parpool('过程',2)

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

资源池开始,指定为“过程”,“线程”集群,集群配置文件名称或对象。

例子:parpool(“流程”)

例子:parpool(“线程”)

例子:parpool (myClusterProfile, 16)

例子:c = parcluster;parpool (c)

数据类型:字符|字符串|parallel.Cluster

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

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

文件附加到池中,指定为一个特征向量,字符串或字符串数组,数组或单元的特征向量。

与这个观点,parpool开始一个平行的池,并将确认文件,工人们在游泳池里。以下是附加到指定的文件AttachedFiles财产适用的并行配置文件中指定的附加文件的完整列表。的“AttachedFiles”属性名是大小写敏感的,必须出现如图所示。

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

数据类型:字符|细胞

标志指定如果用户添加条目在客户端路径添加到路径的每个工人在启动时,指定为一个逻辑值。

数据类型:逻辑

环境变量的名字将从客户机会话复制到工人,指定为一个特征向量,字符串或字符串数组,数组或单元的特征向量。以下是附加到指定的名称“EnvironmentVariables”属性中指定适用平行轮廓形成环境变量的完整列表。列出任何变量,不设置不复制到工人。这些环境变量设置平行的持续时间的工人池。

数据类型:字符|细胞

标志指定如果spmd万博1manbetx支持启用池,指定为一个逻辑值。你可以禁用只支持本地或MATLA万博1manbetxB集群作业调度程序。parfor迭代不涉及工人之间的沟通。因此,如果“SpmdEnabled”,一个parfor循环继续,即使一个或多个工人在循环执行中止。

数据类型:逻辑

在游泳池关闭如果空闲的几分钟后,指定为一个大于零的整数。池是闲置工人如果不运行代码。默认情况下“IdleTimeout”是一样的价值在你平行的偏好。并行偏好上的更多信息,请参阅指定您的平行的偏好

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

输出参数

全部折叠

从客户端访问并行池,作为一个返回parallel.Pool对象。

提示

  • 池状态指示器左下角的桌面显示客户端会话连接池,池状态。单击图标的菜单支持池操作。万博1manbetx

    池运行:没有池运行:

  • 如果你设置你的平行的喜好自动创建一个平行池在必要的时候,您不需要显式地调用parpool命令。你可能显式地创建一个池来控制产生的开销时间设置,所以池准备后续并行语言结构。

  • 删除(poolobj)关闭平行池。没有一个平行的游泳池,spmdparfor作为一个线程运行在客户端,除非你平行的首选项设置为自动启动一个平行池。

  • 当你使用MATLAB编辑器更新文件在客户端连接到一个平行池,这些更新自动传播到工人池中。(自动更新并不适用于仿真软件万博1manbetx®模型文件。传播更新模型文件的工人使用updateAttachedFiles函数)。

  • 如果可能的话,工人的工作目录是最初设置为匹配的MATLAB客户机会话。随后,客户端命令窗口中输入以下命令也在池中执行所有的工人:

    这种行为可以设置工作目录和搜索路径的命令在所有的工人,以便后续池等活动parfor循环在正确的上下文中执行。

    当改变文件夹或添加一个路径cd目录与Windows客户端®操作系统,发送到工人的UNC路径的文件夹,如果可能的话。为客户在Linux®操作系统,这是绝对的文件夹位置。

    如果这些命令不工作在客户端,它也不是工人上执行。例如,如果目录客户端不能访问指定一个文件夹,目录上执行的命令不是工人。然而,如果可以在客户端设置工作目录,但不能设置为指定的工人,你不会得到一个错误消息返回给客户端命令窗口。

    小心的细微差别的行为在混合环境中,客户机并不相同的平台工人,当地文件夹或从客户端映射并不以同样的方式提供给工人,或文件夹在非共享的文件系统。例如,如果你有一个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”);

    因为T3,T4,T6的子文件夹matlabroot,他们不是工人的路径。工人,这个命令的路径产生的相关的部分是:

    P1, P2 <工人原始matlabroot文件夹…> P5 P7 P8
  • 如果您使用的是麦金塔电脑或Linux,看看问题在创建大型并行池的过程中,明白了推荐系统限制mac和Linux

版本历史

介绍了R2013b

全部展开