主要内容

parforOptions

选项设置parfor

描述

例子

选择= parforOptions (集群的一组选项parfor使用集群对象集群.为对象指定选项parfor循环,使用parfor (loopVar = initVal: endval,选择);语句;结束语法。

例子

选择= parforOptions (的一组选项parfor使用池对象

创建多个池时,使用此语法指定要运行的池parfor循环。

提示

当你运行parfor循环,MATLAB®如果有可用的并行池,则自动使用并行池运行循环。

如果你只需要运行一个parfor-循环使用默认的集群配置文件或可用的并行池,考虑使用parfor loopVar = initVal: endval;语句;结束而不是使用parforOptions

例子

选择= parforOptions (___名称,值的一组选项parfor使用一个或多个名称-值参数。例如,使用parforOptions(池,“MaxNumWorkers”,米)运行一个parfor-循环使用pool对象最大值为工人。在所有其他输入参数之后指定名称-值参数。

例子

全部折叠

方法创建集群对象parcluster功能,并创建一套parfor选项。默认情况下,parcluster使用默认的集群配置文件。在MATLAB®上检查您的默认配置文件首页选项卡,在平行>选择并行环境

集群= parcluster;选择= parforOptions(集群);

运行parfor直接在集群中进行计算时,传递parfor选项作为第二个输入参数parfor

当你使用这种方法时,parfor可以使用集群中所有可用的worker,并且一旦循环完成,worker就变为可用的。如果您的集群不支持并行池,这种方法也很有用。

值= [3 3 3 7 3 3 3];parfor(i = 1:元素个数(值),选择)了(我)=规范(pinv(兰德(值(i) * 1 e3)));结束

使用此语法可以在大型集群上运行parfor,而不会花费不必要的工作时间。

你可以控制parfor为工作人员将迭代划分为子范围parforOptions.控制范围分区可以优化算法的性能parfor循环。为了获得最佳的性能,尝试将其分割为以下子范围:

  • 足够大,与调度子范围的开销相比,计算时间是大的

  • 足够小,有足够的子范围,让所有的工人忙

要将迭代划分为固定大小的子范围,请创建一组parfor选项,设置“RangePartitionMethod”“固定”,并指定子范围的大小“SubrangeSize”

选择= parforOptions (parcluster,“RangePartitionMethod”“固定”“SubrangeSize”2);

通过parfor选项作为第二个输入参数parfor.在这种情况下,parfor将迭代分为三组2迭代。

值= [3 3 3 3 3 3 3];parfor(i = 1:元素个数(值),选择)了(我)=规范(pinv(兰德(值(i) * 1 e3)));结束

要将迭代划分为不同大小的子范围,请将函数句柄传递给“RangePartitionMethod”名称-值对。这个函数必须返回子范围大小的向量,它们的和必须等于迭代次数。有关此语法的更多信息,请参见RangePartitionMethod

选择= parforOptions (parcluster,“RangePartitionMethod”, @(n,nw) [2 1 1 2]);

通过parfor选项作为第二个输入参数parfor.在这种情况下,parfor将迭代分为四组211,2迭代。

值= [3 3 7 7 3 3];parfor(i = 1:元素个数(值),选择)了(我)=规范(pinv(兰德(值(i) * 1 e3)));结束

您可以使用parforOptions运行parfor平行水池的工作人员。类保留固定数量的工作人员时使用此方法parfor -循环。您还可以更好地控制如何parfor为工作者划分迭代。

方法创建并行池parpool函数。默认情况下,parpool使用默认配置文件。在MATLAB上检查默认配置文件首页选项卡,在平行>选择并行环境.创建一组parfor选项,并指定选项。例如,指定固定大小的子范围2作为划分方法。

p = parpool;
使用“Processes”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。
选择= parforOptions (p,“RangePartitionMethod”“固定”“SubrangeSize”2);

通过parfor选项的第二个输入参数parfor函数。parfor在并行池上运行循环体,并根据来划分迭代选择

值= [3 3 3 3 3 3 3];parfor(i = 1:元素个数(值),选择)了(我)=规范(pinv(兰德(值(i) * 1 e3)));结束

当您运行parfor默认情况下,无论是否有并行池,MATLAB都会自动对循环体进行依赖分析。在运行语句之前,MATLAB将所需的文件传输到工作者。在某些情况下,您必须显式地将这些文件传输给工作者。有关更多信息,请参见识别项目依赖关系

如果你正在使用parfor没有平行池,使用parforOptions转让文件。方法创建集群对象parcluster选择。创建一组parfor选项与集群对象一起使用parforOptions函数。要将文件传输到工作者,请使用“AttachedFiles”名称-值对。

集群= parcluster;选择= parforOptions(集群,“AttachedFiles”,{“myFile.dat”});

通过parfor选项的第二个输入参数parfor函数。工作者可以访问循环体中所需的文件。

parfor(i=1:2,opts) M = csvread(“myFile.dat”0 2 *(张)[0,2 *(张),1,1 + 2 *(张)]);(我)=规范(兰特(装天花板(规范(M)) * 1 e3));结束

输入参数

全部折叠

集群,指定为平行的。集群对象。要创建集群对象,请使用parcluster

例子:parcluster(“本地”);

池,指定为平行的。池对象。

例子:parpool(“本地”);

例子:backgroundPool;

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:选择= parforOptions(集群、“AttachedFiles”“myFile.dat”);

所有对象类型

全部折叠

将迭代划分为子范围的方法,指定为“汽车”“固定”,或函数句柄。子范围是一个连续的循环迭代块parfor以小组的形式跑在一个工人身上。使用这个参数来优化的性能parfor-循环通过指定迭代如何分布在各个worker。

  • 如果RangePartitionMethod“汽车”或者如果不指定值,parforOptionsparfor-循环迭代成不同大小的子范围,以寻求良好的性能为各种parfor循环。

  • 如果RangePartitionMethod“固定”parforOptionsparfor-循环迭代到固定大小的子范围。使用此方法时,还必须使用SubrangeSize参数指定子范围的大小。

  • 如果RangePartitionMethod是函数句柄,parforOptions使用函数句柄来除法parfor-循环迭代到固定大小的子范围。

    函数运行函数句柄as大小= customFcn (n、西北)

    • n迭代的次数是parfor循环。

    • 西北可用于运行循环的工作者的数量。

      当您使用池运行循环时,西北是并行池中的工作线程数。当您使用集群运行没有池的循环时,西北NumWorkers集群属性。

    • 大小是子范围大小的整数向量。对于任意值n而且西北向量的和大小必须等于n

例子:parforOptions(集群,“RangePartitionMethod”、“汽车”)

例子:parforOptions(集群、“RangePartitionMethod”@ (n, nw) (1, n))

子范围中的最大迭代次数,指定为正整数标量。子范围是一个连续的循环迭代块parfor以小组的形式跑在一个工人身上。

使用此参数时,必须指定RangePartitionMethod参数为“固定”

例子:parforOptions(集群、“RangePartitionMethod”“固定”,“SubrangeSize”,5)

集群名称-值参数

全部折叠

文件夹添加到MATLAB搜索路径的每个工作者运行parfor-loop,指定为字符向量、字符串标量、字符串数组或字符向量的单元格数组。

默认值是一个空单元格数组。

命令时,文件夹将添加到工作程序的搜索路径中parfor循环。当parfor-循环结束时,这些文件夹将从worker的搜索路径中删除。

如果客户端和工作者对同一文件夹有不同的路径,则使用工作者上的路径指定文件夹。例如,如果文件夹的路径为/ /数据共享在客户端和/组织/共享/数据在工作者上指定“/组织/共享/数据”

如果指定相对路径,例如“. . / myFolder”,路径相对于工作者上的当前工作目录进行解析。

指定AdditionalPaths避免将不必要的文件从客户端复制到工作者。指定AdditionalPaths只有当工作人员的文件可用时。如果文件不可用,则使用AttachedFiles把文件发给工人。

例子:选择= parforOptions(集群、“AdditionalPaths”(“/其他/ path1”、“/其他/ path2”))

文件和文件夹发送给每个工作人员运行parfor-loop,指定为字符向量、字符串标量、字符串数组或字符向量的单元格数组。

默认值是一个空单元格数组。

文件和文件夹在运行时发送给工作人员parfor循环。当parfor-循环结束后,这些文件和文件夹将从每个worker的文件系统中删除。

如果指定相对路径,例如“. . / myFolder”,路径相对于客户端上的当前工作目录进行解析。

如果工作者上的文件可用,则指定AdditionalPaths代替。当你指定AdditionalPaths,可以避免将不必要的文件从客户机复制到工作者。

标志将客户端路径发送给工作者,指定为真正的

如果您指定AutoAddClientPath作为真正的时,用户添加的条目将添加到每个worker的路径中parfor循环。当parfor-循环结束时,这些项将从每个worker的路径中删除。

标志将文件自动复制到工作者,指定为真正的

当您将计算卸载给工作者时,客户机上计算所需的任何文件也必须在工作者上可用。如果您指定AutoAttachFiles作为真正的,客户端尝试自动检测并附加这些文件。如果您指定AutoAttachFiles作为,关闭客户端自动检测。如果自动检测无法找到所有文件,或者从客户机向工作者发送文件很慢,请使用以下参数。

  • 如果文件位于工作者无法访问的文件夹中,则使用AttachedFiles论点。集群将您指定的每个文件从客户机复制到工作者。

  • 如果文件位于可在工作程序上访问的文件夹中,则可以使用AdditionalPaths相反的论点。使用AdditionalPaths参数为每个worker的MATLAB搜索路径添加路径,避免将不必要的文件从客户机复制到worker。

命令时,自动检测到的文件将被发送给工作者parfor循环。当parfor-循环结束后,这些文件和文件夹将从每个worker的文件系统中删除。

池名称-值参数

全部折叠

工人的最大数量,指定为正整数标量。

默认值为

  • 如果您指定MaxNumWorkers作为一个有限正整数,你的parfor-loop将以最大的MaxNumWorkers工人。

  • 如果您指定MaxNumWorkers作为,你的parfor-loop将在可用的worker中运行。

版本历史

介绍了R2019a

Baidu
map