主要内容

parforOptions

选项parfor,如分区迭代

描述

例子

选择= parforOptions (集群)创建一组选项parfor这指示parfor工人在执行语句集群没有创建一个平行的池。相反,parfor提交独立集群任务执行循环体。parfor根据分区和分配迭代工人NumWorkers属性,可用工人的数量集群

例子

选择= parforOptions ()创建一组选项parfor这指示parfor在工人在并行执行语句池

例子

选择= parforOptions (___“RangePartitionMethod”,方法)使用方法定义如何分配parfor循环迭代子范围。子界是一个连续的块循环迭代parfor执行工人作为一个整体。

例子

选择= parforOptions (___“RangePartitionMethod”,“固定”,“SubrangeSize”,n)parfor循环迭代子范围的大小不能超过n

例子

选择= parforOptions (集群,___,名称,值)使用集群对象的指定附加选项集群

例子

全部折叠

创建一个集群对象使用parcluster功能,并创建一个组parfor选项。默认情况下,parcluster使用默认集群配置文件。检查你的MATLAB®上默认的配置选项卡,在平行>选择一个默认的集群

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

运行parfor直接计算集群,通过parfor选择第二个输入参数parfor

当你使用这种方法,parfor可以使用集群中所有可用的工人,和工人尽快可用循环完成。这种方法也很有用,如果集群不支持并行池。金宝app

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

迭代分割成不同大小的子范围,通过一个函数句柄“RangePartitionMethod”名称-值对。这个函数必须要返回一个向量的子范围的大小,数量和金额必须等于迭代。这个语法的更多信息,请参阅方法

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

通过parfor选择第二个输入参数parfor。在这种情况下,parfor迭代分为四组2,1,1,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;
开始平行池(parpool)使用“本地”概要文件…连接到平行池(工人数量:6)。
选择= parforOptions (p,“RangePartitionMethod”,“固定”,“SubrangeSize”2);

通过parfor第二个输入参数的选择parfor函数。parfor运行的循环体平行池和分裂迭代选择

值= [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) M = csvread (“myFile.dat”0 2 *(张)[0,2 *(张),1,1 + 2 *(张)]);(我)=规范(兰特(装天花板(规范(M)) * 1 e3));结束

输入参数

全部折叠

集群中,指定为一个parallel.Cluster的对象,parfor运行。要创建一个集群对象,使用parcluster函数。

例子:选择= parforOptions (parcluster(当地的));

数据类型:parallel.Cluster

子范围大小固定分区方法,指定为一个正整数。你必须设置名称-值对“RangePartitionMethod”“固定”

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

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

平行池,指定为一个parallel.Pool的对象,parfor运行。要创建一个平行的池,使用parpool函数。

例子:选择= parforOptions (parpool(当地的));

数据类型:parallel.Pool

范围分区方法,指定为以下之一:

  • “汽车”——这种方法将循环划分为不同大小的子范围。它试图实现各种性能好parfor循环。

  • “固定”——分区parfor循环到固定大小的子范围。您必须指定每个子范围的大小通过设置“SubrangeSize”名称-值对。

  • 函数处理——使用一个函数处理循环迭代划分为子范围。函数必须的形式大小= customFcn (n、西北),在那里n的迭代次数吗parfor循环,西北是工人的数量可以执行循环。当循环运行在一个平行的游泳池,西北是工人的数量在并行池。当循环运行时使用一个集群,西北NumWorkers集群的属性。customFcn返回一个向量大小子范围的大小。这个向量必须满足(大小)= = n。有关函数处理的更多信息,请参阅创建函数处理

例子:选择= parforOptions(集群、“RangePartitionMethod”“固定”,“SubrangeSize”, 10);

例子:选择= parforOptions(集群、“RangePartitionMethod”@ (n, nw) [2、4、4、n-10]);

数据类型:字符|function_handle

名称-值对的观点

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

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

标志指定如果客户端路径添加到工作路径,指定为逗号分隔组成的AutoAddClientPath真正的

数据类型:逻辑

国旗使依赖性分析parfor循环体并将所需的文件传输到工人,指定为逗号分隔组成的AutoAttachFiles真正的

数据类型:逻辑

文件转移到工人,指定为逗号分隔组成的AttachedFiles一个特征向量,字符串,字符串数组,数组或单元的特征向量。

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

数据类型:字符|字符串|细胞

路径添加到MATLAB®路径的工人parfor执行时,指定为逗号分隔组成的AdditionalPaths一个特征向量,字符串,字符串数组,数组或单元的特征向量。

例子:{/一些/路径”、“另一个/路径'}

数据类型:字符|字符串|细胞

输出参数

全部折叠

parfor选择,作为一个返回parforOptions对象。指定的选项parfor循环,通过一组parfor第二个输入参数的选择parfor

例子:parfor (i = 1:10, parforOptions (parcluster));(我)=我;结束

介绍了R2019a