批处理
运行MATLAB工人上脚本或函数
语法
描述
运行函数j
=批(fcn
,N
,{x1,…, xn}
)fcn
一个工人在集群指定默认集群配置文件。函数返回j
一个句柄,工作对象的函数。用给定的参数,函数是评价x1,…, xn
,并返回N
输出参数。的函数文件fcn
复制到工人。(注:不包括。m
文件扩展名与函数名的论点。)
例子
作为批处理作业运行脚本
这个例子展示了如何使用批处理
将MATLAB工人工作会议,在后台运行。
你可以继续使用MATLAB计算时发生。
运行一个脚本作为批处理作业使用批处理
函数。默认情况下,批处理
使用默认集群配置文件。检查你的默认集群在MATLAB上的形象家选项卡,环境部分,在平行>选择并行环境。此外,您可以指定一个集群配置文件的“配置文件”
名称-值对的论点。
工作=批(“myScript”);
批处理
不阻止MATLAB和可以继续工作而计算。
如果你想阻止MATLAB,直到任务完成时,使用等待
工作对象的函数。
等待(工作);
默认情况下,MATLAB保存命令窗口输出从批处理作业工作的日记。要检索它,使用日记
函数。
日记(工作)
- - -开始日记——n = 100——结束日记- - - - - -
工作完成后,通过获取结果负载
函数。
负载(工作,“x”);情节(x)
如果你想加载所有批处理作业中的变量,使用加载(工作)
代替。
当你有加载所需的所有变量,删除工作对象清理它的数据,避免不必要地消耗资源。
删除(工作);清晰的工作
注意,如果您使用发送一个脚本文件批处理
MATLAB转移所有工作空间变量,集群,即使您的脚本不使用它们。一个大型的数据传输时间工作区可以很大。作为一项最佳实践,将脚本转换成一个函数文件来避免这种通信开销。一个例子,它使用一个函数,看到运行批处理作业从工人和访问文件。
更多高级选项批处理
,请参阅运行批处理作业从工人和访问文件。
运行批处理作业从工人和访问文件
你可以出售你的计算通过使用在后台运行批处理
。如果您的代码需要访问文件,您可以使用额外的选项,如“AttachedFiles”
或“AdditionalPaths”
,使数据访问。你可以关闭或继续工作在MATLAB计算发生和恢复后的结果。
准备的例子
使用支持函数金宝appprepare金宝appSupportingFiles
复制所需的数据对于这个示例,您当前的工作目录。
prepare金宝appSupportingFiles;
现在你当前的工作目录中包含4个文件:A.dat
,B1.dat
,B2.dat
,B3.dat
。
运行批处理作业
创建一个集群对象使用parcluster
。默认情况下,parcluster
使用默认集群配置文件。检查你的默认集群在MATLAB上的形象家选项卡,环境部分,在平行>选择一个默认的集群。
c = parcluster ();
把你的代码在一个函数并提交批处理作业使用批处理
。一个自定义函数的例子,请参阅支持功能金宝appdivideData
。指定输出参数的期望值和单元阵列的输入功能。
注意,如果您发送使用批处理脚本文件,MATLAB集群转移所有工作空间变量,即使您的脚本不使用它们。如果你有一个大的工作空间,它影响负面数据传输时间。作为一项最佳实践,将脚本转换成一个函数文件来避免这种通信开销。这可以通过简单地添加一个函数在脚本的开始。在这个例子中,减少开销divideData
这生活之外的一个文件中定义脚本。
如果您的代码使用一个平行的池,使用“池”
名称-值对参数创建一个平行池与您指定的工人数量。批处理
使用一个额外的工人运行函数本身。
默认情况下,批处理
改变了工人的初始工作目录的当前文件夹MATLAB客户机。它可能是有用的控制初始工人工作文件夹。例如,您可能想要控制它如果您的集群使用一个不同的文件系统,因此路径是不同的,比如当你从Windows客户机提交Linux集群。
保持最初的工作文件夹的工人和使用它们的默认设置
“CurrentFolder”
来“。”
。改变最初的工作文件夹,设置
“CurrentFolder”
您所选择的文件夹。
这个示例使用一个平行池有三个工人和选择一个临时位置的初始工作文件夹。使用批处理
将计算divideData
。
工作=批(c @divideData 1 {}…“池”3,…“CurrentFolder”,tempdir);
批处理
运行divideData
在一个平行的工人,所以你可以继续工作在MATLAB计算。
如果你想阻止MATLAB,直到任务完成后,使用等待
工作对象的函数。
等待(工作);
检索结果,使用fetchOutputs
工作对象。作为divideData
取决于一个工人找不到文件,fetchOutputs
抛出一个错误。你可以通过访问错误信息getReport
在错误
的属性任务
工作中的对象。在本例中,代码取决于一个工人找不到文件。
getReport (job.Tasks (1) . error)
ans = '错误使用divideData(4号线)无法读取文件' B2.dat”。没有这样的文件或目录。
从员工访问文件
默认情况下,批处理
自动分析你的代码并将所需的文件传输到工人。在某些情况下,您必须显式地传输这些文件——例如,当你在运行时确定一个文件的名字。
在这个例子中,divideData
访问的支持文件金宝appA.dat
,这批处理
自动检测和传输。这个函数也访问B1.dat
,但它在运行时解析文件的名称,所以自动依赖分析没有检测。
类型divideData.m
X = divideData()函数=负载(“A.dat”);X = 0(翻转(大小(A)));parfor i = 1:3 B =负载(B +我+“.dat”);X = X + \ B;结束结束
如果数据是工人们可以访问在一个位置,您可以使用名称-值对的论点“AdditionalPaths”
指定的位置。“AdditionalPaths
”将这条路径添加到MATLAB搜索路径的工人,使数据可见。
pathToData = pwd;工作(2)=批(c @divideData 1 {}…“池”3,…“CurrentFolder”tempdir,…“AdditionalPaths”,pathToData);等待(工作(2));
如果数据是在一个位置,工人不能访问,可以传输文件到工人使用“AttachedFiles”
名称-值对的论点。您需要转移文件如果客户机和工人不共享相同的文件系统,或者如果您的集群使用非共享的通用调度程序接口模式。有关更多信息,请参见使用通用调度程序接口配置(MATLAB并行服务器)。
文件名=“B”字符串(1:3)+ +“.dat”;工作(3)=批(c @divideData 1 {}…“池”3,…“CurrentFolder”tempdir,…“AttachedFiles”文件名);
找到现有的工作
你可以关闭MATLAB在作业提交和检索结果。在你关闭MATLAB,记下工作的ID。
(3).ID job3ID =工作
job3ID = 25
当你打开MATLAB,你可以找到工作使用findJob
函数。
工作(3)= findJob (c,“ID”,job3ID);等待(工作(3));
或者,您可以使用工作监视器来跟踪你的工作。从MATLAB可以打开它家选项卡,环境部分,在平行>监控工作。
检索结果和清理数据
检索一个批处理作业的结果,使用fetchOutputs
函数。fetchOutputs
返回一个单元阵列的输出函数运行批处理
。
X = fetchOutputs(工作(3))
X =1×1单元阵列{40×207双}
当你检索到所需的全部输出,不需要工作对象了,删除它清理数据,避免不必要地消耗资源。
删除(工作)清晰工作
输入参数
脚本
- - - - - -MATLAB®脚本
特征向量|字符串标量
MATLAB脚本,指定为一个特征向量或字符串标量。
默认情况下,工作空间变量复制从客户机工人当你指定这个参数。工作和任务对象不复制到工人。
例子:批处理(“aScript”);
数据类型:字符
|字符串
表达式
- - - - - -表现评估
特征向量|字符串标量
表达式来评估,指定为一个特征向量或字符串标量。
默认情况下,工作空间变量复制从客户机工人当你指定这个参数。工作和任务对象不复制到工人。
例子:批处理(y =魔法(3)');
数据类型:字符
|字符串
myCluster
- - - - - -集群
parallel.Cluster
对象
集群中,指定为一个parallel.Cluster
对象,该对象代表了集群计算资源。要创建对象,可以使用parcluster
函数。
例子:集群= parcluster;批处理(集群,“aScript”);
数据类型:parallel.Cluster
fcn
- - - - - -功能评估的工人
函数处理|特征向量
功能评估的工人,指定为一个函数处理或函数名。
例子:批处理(@myFunction 1 {x, y});
数据类型:字符
|字符串
|function_handle
N
- - - - - -数量的输出
非负整数
输出预期的数量评估函数fcn
,指定为一个非负整数。
例子:批处理(@myFunction 1 {x, y});
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
{x1,…, xn}
- - - - - -输入参数
单元阵列
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:j =批(@myFunction 1 {x, y},“池”,3);
配置文件
- - - - - -集群配置文件
特征向量|字符串
集群配置文件用于识别集群,指定为逗号分隔组成的“配置文件”
和一个字符或字符串向量。如果省略该选项,默认的配置文件是用来识别集群和应用于工作和任务属性。
例子:j =批(“aScript”、“配置文件”,“过程”);
数据类型:字符
|字符串
AdditionalPaths
- - - - - -路径添加到工人
特征向量|字符串数组|单元阵列的特征向量
路径添加到MATLAB搜索路径的工人脚本或函数执行前,指定为逗号分隔组成的“AdditionalPaths”
一个特征向量,特征向量的字符串数组,数组或单元。
默认搜索路径可能不是相同的工人是在客户端;路径差异可能是由于不同的当前工作文件夹(慢性消耗病
)、平台或网络文件系统访问。指定“AdditionalPaths”
名称-值对的观点有助于确保工人寻找文件,例如代码文件,数据文件,或模型文件,在正确的位置。
您可以使用“AdditionalPaths”
访问共享文件系统中的文件。注意,路径表示可以随目标机器。“AdditionalPaths”
必须的路径在集群中的机器。例如,如果Z: \数据
在本地窗口®机是/ /数据网络
你的Linux®集群,然后添加后者“AdditionalPaths”
。如果你使用一个数据存储,使用“AlternateFileSystemRoots”
而不是处理其他表示。有关更多信息,请参见为处理在不同的机器上或设置数据存储集群。
请注意,AdditionalPaths
只有帮助找到文件当你把它们使用相对路径或文件名,而不是一个绝对路径。
例子:j =批(@myFunction 1 {x, y}, AdditionalPaths, ' /网络/数据/ ');
数据类型:字符
|字符串
|细胞
AttachedFiles
- - - - - -文件或文件夹转移
特征向量|字符串数组|单元阵列的特征向量
文件或文件夹转移到工人,指定为逗号分隔组成的“AttachedFiles”
一个特征向量,特征向量的字符串数组,数组或单元。
例子:j =批(@myFunction 1 {x, y},“AttachedFiles”、“myData.dat”);
数据类型:字符
|字符串
|细胞
AutoAddClientPath
- - - - - -国旗在客户端路径添加用户添加条目工人路径
真正的
(默认)|假
标记添加用户添加条目在客户端工作路径,路径指定为逗号分隔组成的“AutoAddClientPath”
和一个逻辑值。
例子:j =批(@myFunction 1 {x, y}, AutoAddClientPath,假);
数据类型:逻辑
AutoAttachFiles
- - - - - -国旗使依赖性分析
真正的
(默认)|假
国旗使依赖分析,并自动将代码文件附加到工作,指定为逗号分隔组成的“AutoAttachFiles”
和一个逻辑值。如果你设置的值真正的
批处理脚本或函数分析和代码文件,这取决于被自动转移到工人。
例子:j =批(@myFunction 1 {x, y}, AutoAttachFiles, true);
数据类型:逻辑
CurrentFolder
- - - - - -文件夹或函数执行的脚本
特征向量|字符串
文件夹的脚本或函数执行时,指定为逗号分隔组成的“CurrentFolder”
和一个字符或字符串向量。没有保证这个文件夹存在于工人。这个属性的默认值是MATLAB时的当前目录批处理
命令执行。如果参数是“。”
之前,没有改变文件夹批量执行。
例子:j =批(@myFunction 1 {x, y}, CurrentFolder, '。');
数据类型:字符
|字符串
CaptureDiary
- - - - - -国旗收集日记
真正的
(默认)|假
国旗收集函数调用的日记,指定为逗号分隔组成的“CaptureDiary”
和一个逻辑值。收集到的数据信息,请参阅日记
。
例子:j =批(‘aScript’,‘CaptureDiary’,假);
数据类型:逻辑
EnvironmentVariables
- - - - - -环境变量复制
特征向量|字符串数组|单元阵列的特征向量
环境变量将从客户机会话复制到工人,指定为逗号分隔组成的“EnvironmentVariables”
一个特征向量,特征向量的字符串数组,数组或单元。以下是附加到指定的名称EnvironmentVariables
属性中指定适用平行轮廓形成环境变量的完整列表。列出的变量,不设置不复制到工人。这些环境变量设置期间工人的批处理作业。
例子:j =批(“aScript”、“EnvironmentVariables”、“MY_ENV_VAR”);
数据类型:字符
|字符串
|细胞
池
- - - - - -工人数量制成一个平行的池
0
(默认)|非负整数|2-element向量的非负整数
工人数量做成一个平行的泳池,指定为逗号分隔组成的“池”
和:
一个非负整数。
2-element向量的非负整数,这是解释为一个范围。由此产生的平行池的大小是尽可能大范围要求。
此外,注意批处理
使用另一个工人来运行批处理作业本身。
该脚本或函数使用这个池执行语句等parfor
和spmd
在批处理代码。因为池需要N
工人除了运行批处理的工人,集群必须至少N + 1
工人。你不需要一个平行池已经运行的执行批处理
,新池批量创建与您可能已经打开。有关更多信息,请参见运行一个批处理作业并行池。
如果您使用默认值,0
,脚本或函数只运行在一个工人,而不是一个平行的池。
例子:j =批(@myFunction 1 {x, y},“池”,4);
例子:j =批(@myFunction 1 {x, y},“池”,[2,6]);
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
j
——工作
parallel.Job
对象
提示
查看状态或一批的进步跟踪工作,使用工作监控,如中描述监控工作。还可以使用工作监控检索工作对象创建一个批处理作业在一个不同的会话,或者创建一个批处理作业没有返回一个对象的工作批处理
调用。
删除任何批作业你不再需要避免不必要地消耗集群存储资源。
版本历史
介绍了R2008aR2021a:批处理
现在评估单元阵列输入参数{C1,…, Cn}
作为C1,…, Cn
从R2021a开始,一个函数fcn
卸载与批处理
评估单元阵列输入参数{C1,…, Cn}
作为Cn fcn (C1,…)
。在以前的版本{C1,…, Cn}
把一个错误,{{C1,…, Cn}}
被评估为Cn fcn (C1,…)
。
从R2021a开始,使用以下代码来出售fcn ({a、b}, {c, d})
在集群上myCluster
一个输出。
批处理(myCluster @fcn 1, {{a、b}, {c, d}});
批处理(myCluster @fcn 1, {{{a、b}, {c, d}}});
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。