主要内容

批处理

运行MATLAB工人上脚本或函数

描述

例子

j=批(脚本)运行脚本文件脚本一个工人在集群指定默认集群配置文件。(注:不包括。m文件扩展名与脚本名称。)函数返回j,运行脚本的工作对象的句柄。该脚本文件脚本复制到工人。

默认情况下,工作空间变量复制从客户机工人当您运行批处理(脚本)。工作和任务对象不复制到工人。

j=批(表达式)运行表达式作为一个表情一个工人在集群中指定的默认集群配置文件。函数返回j一个句柄,工作对象的表达式。

默认情况下,工作空间变量复制从客户机工人当您运行批处理(表达)。工作和任务对象不复制到工人。

j=批(myCluster,脚本)是一样批处理(脚本)除了脚本运行在集群中的一个工人集群指定的对象myCluster

j=批(myCluster,表达式)是一样批处理(表达)除了表达运行在集群中的一个工人集群指定的对象myCluster

例子

j=批(fcn,N,{x1,…, xn})运行函数fcn一个工人在集群指定默认集群配置文件。函数返回j一个句柄,工作对象的函数。用给定的参数,函数是评价x1,…, xn,并返回N输出参数。的函数文件fcn复制到工人。(注:不包括。m文件扩展名与函数名的论点。)

例子

j=批(myCluster,fcn,N,{x1,…, xn})是一样批处理(fcn N, {x1,…, xn})除了函数运行在集群中的一个工人集群指定的对象myCluster

例子

j=批(___,名称,值)指定选项,修改工作使用一个或多个名称-值对的行为参数。这些选项支持批处理函数和脚本万博1manbetx,除非另有指示。使用这个语法除了任何输入参数组合在以前的语法。

例子

全部折叠

使用批处理将MATLAB工人工作会议,在后台运行。你可以继续使用MATLAB计算时发生。

运行一个脚本作为批处理作业使用批处理函数。默认情况下,批处理使用默认集群配置文件。检查你的默认集群在MATLAB上的形象选项卡,环境部分,在平行>选择一个默认的集群。此外,您可以指定一个集群配置文件的“配置文件”名称-值对的论点。

工作=批(“myScript”);

批处理不阻止MATLAB和可以继续工作而计算。

如果你想阻止MATLAB,直到任务完成时,使用等待工作对象的函数。

等待(工作);

默认情况下,MATLAB保存命令窗口输出从批处理作业工作的日记。要检索它,使用日记函数。

日记(工作)
- - -开始日记——n = 100——结束日记- - - - - -

工作完成后,通过获取结果负载函数。

负载(工作,“x”);情节(x)

如果你想加载所有批处理作业中的变量,使用加载(工作)代替。

当你有加载所需的所有变量,删除工作对象清理它的数据,避免不必要地消耗资源。

删除(工作);清晰的工作

注意,如果您使用发送一个脚本文件批处理MATLAB转移所有工作空间变量,集群,即使您的脚本不使用它们。一个大型的数据传输时间工作区可以很大。作为一项最佳实践,将脚本转换成一个函数文件来避免这种通信开销。一个例子,它使用一个函数,看到运行批处理作业从工人和访问文件

更多高级选项批处理,请参阅运行批处理作业从工人和访问文件

你可以出售你的计算通过使用在后台运行批处理。如果您的代码需要访问文件,您可以使用额外的选项,如“AttachedFiles”“AdditionalPaths”,使数据访问。你可以关闭或继续工作在MATLAB计算发生和恢复后的结果。

准备的例子

使用支持函数万博1manbetxprepare万博1manbetxSupportingFiles复制所需的数据对于这个示例,您当前的工作目录。

prepare万博1manbetxSupportingFiles;

现在你当前的工作目录中包含4个文件:A.dat,B1.dat,B2.dat,B3.dat

运行批处理作业

创建一个集群对象使用parcluster。默认情况下,parcluster使用默认集群配置文件。检查你的默认集群在MATLAB上的形象选项卡,环境部分,在平行>选择一个默认的集群

c = parcluster ();

把你的代码在一个函数并提交批处理作业使用批处理。一个自定义函数的例子,请参阅支持功能万博1manbetxdivideData。指定输出参数的期望值和单元阵列的输入功能。

注意,如果您发送使用批处理脚本文件,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访问的支持文件万博1manbetxA.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脚本,指定为一个特征向量或字符串标量。

默认情况下,工作空间变量复制从客户机工人当你指定这个参数。工作和任务对象不复制到工人。

例子:批处理(“aScript”);

数据类型:字符|字符串

表达式来评估,指定为一个特征向量或字符串标量。

默认情况下,工作空间变量复制从客户机工人当你指定这个参数。工作和任务对象不复制到工人。

例子:批处理(y =魔法(3)');

数据类型:字符|字符串

集群中,指定为一个parallel.Cluster对象,该对象代表了集群计算资源。要创建对象,可以使用parcluster函数。

例子:集群= parcluster;批处理(集群,“aScript”);

数据类型:parallel.Cluster

功能评估的工人,指定为一个函数处理或函数名。

例子:批处理(@myFunction 1 {x, y});

数据类型:字符|字符串|function_handle

输出预期的数量评估函数fcn,指定为一个非负整数。

例子:批处理(@myFunction 1 {x, y});

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

输入参数的函数fcn,指定为一个单元阵列。

例子:批处理(@myFunction 1 {x, y});

数据类型:细胞

名称-值参数

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

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

例子:j =批(@myFunction 1 {x, y},“池”,3);

变量复制到工人,指定为逗号分隔组成的“工作区”标量和结构。

默认值是一个结构与字段对应的标量变量在客户端工作空间。标量变量指定为字段结构。

工作空间变量只是从客户端复制到工人如果指定脚本表达式。工作和任务对象不复制到工人。

例子:工作区。myvar# = 5;j =批(“aScript”、“工作空间”,工作空间);

数据类型:结构体

集群配置文件用于识别集群,指定为逗号分隔组成的“配置文件”和一个字符或字符串向量。如果省略该选项,默认的配置文件是用来识别集群和应用于工作和任务属性。

例子:j =批(“aScript”、“配置文件”,“当地”);

数据类型:字符|字符串

路径添加到MATLAB搜索路径的工人脚本或函数执行前,指定为逗号分隔组成的“AdditionalPaths”一个特征向量,特征向量的字符串数组,数组或单元。

默认搜索路径可能不是相同的工人是在客户端;路径差异可能是由于不同的当前工作文件夹(慢性消耗病)、平台或网络文件系统访问。指定“AdditionalPaths”名称-值对的观点有助于确保工人寻找文件,例如代码文件,数据文件,或模型文件,在正确的位置。

您可以使用“AdditionalPaths”访问共享文件系统中的文件。注意,路径表示可以随目标机器。“AdditionalPaths”必须的路径在集群中的机器。例如,如果Z: \数据在本地窗口®机是/ /数据网络你的Linux®集群,然后添加后者“AdditionalPaths”。如果你使用一个数据存储,使用“AlternateFileSystemRoots”而不是处理其他表示。有关更多信息,请参见为处理在不同的机器上或设置数据存储集群

请注意,AdditionalPaths只有帮助找到文件当你把它们使用相对路径或文件名,而不是一个绝对路径。

例子:j =批(@myFunction 1 {x, y}, AdditionalPaths, ' /网络/数据/ ');

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

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

例子:j =批(@myFunction 1 {x, y},“AttachedFiles”、“myData.dat”);

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

标记添加用户添加条目在客户端工作路径,路径指定为逗号分隔组成的“AutoAddClientPath”和一个逻辑值。

例子:j =批(@myFunction 1 {x, y}, AutoAddClientPath,假);

数据类型:逻辑

国旗使依赖分析,并自动将代码文件附加到工作,指定为逗号分隔组成的“AutoAttachFiles”和一个逻辑值。如果你设置的值真正的批处理脚本或函数分析和代码文件,这取决于被自动转移到工人。

例子:j =批(@myFunction 1 {x, y}, AutoAttachFiles, true);

数据类型:逻辑

文件夹的脚本或函数执行时,指定为逗号分隔组成的“CurrentFolder”和一个字符或字符串向量。没有保证这个文件夹存在于工人。这个属性的默认值是MATLAB时的当前目录批处理命令执行。如果参数是“。”之前,没有改变文件夹批量执行。

例子:j =批(@myFunction 1 {x, y}, CurrentFolder, '。');

数据类型:字符|字符串

国旗收集函数调用的日记,指定为逗号分隔组成的“CaptureDiary”和一个逻辑值。收集到的数据信息,请参阅日记

例子:j =批(‘aScript’,‘CaptureDiary’,假);

数据类型:逻辑

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

例子:j =批(“aScript”、“EnvironmentVariables”、“MY_ENV_VAR”);

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

工人数量做成一个平行的泳池,指定为逗号分隔组成的“池”和:

  • 一个非负整数。

  • 2-element向量的非负整数,这是解释为一个范围。由此产生的平行池的大小是尽可能大范围要求。

此外,注意批处理使用另一个工人来运行批处理作业本身。

该脚本或函数使用这个池执行语句等parforspmd在批处理代码。因为池需要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

输出参数

全部折叠

工作,作为一个返回parallel.Job对象。

例子:j =批(“aScript”);

数据类型:parallel.Job

提示

查看状态或一批的进步跟踪工作,使用工作监控,如中描述监控工作。还可以使用工作监控检索工作对象创建一个批处理作业在一个不同的会话,或者创建一个批处理作业没有返回一个对象的工作批处理调用。

删除任何批作业你不再需要避免不必要地消耗集群存储资源。

版本历史

介绍了R2008a

全部展开

行为改变R2021a