主要内容

MATLAB工作人员的脚本或功能

描述

例子

j=批(脚本运行脚本文件脚本在由默认集群概要文件指定的集群中的worker上。(注:不包括.m使用脚本名的文件扩展名。)函数返回j,运行脚本的作业对象的句柄。脚本文件脚本被复制到工人。

默认情况下,当您运行时,工作区变量会从客户机复制到工作人员批量(脚本).作业和任务对象不会复制到工人。

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

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

j=批(myCluster脚本是一样批量(脚本)除了该脚本运行在由集群对象指定的集群中的worker上myCluster

j=批(myCluster表达是一样批处理(表达)除了表达式运行在由集群对象指定的集群中的worker上myCluster

例子

j=批(fcnN{x1,…,xn}运行函数fcn在由默认集群概要文件指定的集群中的worker上。函数返回j,是运行该函数的作业对象的句柄。函数是用给定的参数计算的,x1,…,xn,并返回N输出参数。函数文件fcn被复制到工人。(注:不包括.m使用函数名称参数的文件扩展名。)

例子

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

例子

j=批(___名称,值指定使用一个或多个名称值对参数修改作业行为的选项。除非另有说明,否则这些选项支万博1manbetx持批量函数和脚本。除了先前语法中的任何输入参数组合之外,还使用此语法。

例子

全部折叠

使用将工作卸载到后台运行的MATLAB工作会话。在进行计算时,可以继续使用MATLAB。

方法作为批处理作业运行脚本函数。默认情况下,使用默认的集群配置文件。检查MATLAB上的默认集群配置文件首页选项卡,环境部分,在平行>选择默认集群.或者,您可以使用群集配置文件指定'轮廓'名称-值对的论点。

工作=批(“myScript”);

不阻止MATLAB,您可以在计算发生时继续工作。

如果您想阻塞MATLAB直到作业完成,请使用等待函数作用于作业对象。

等待(工作);

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

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

在作业完成后,使用负载函数。

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

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

加载了所有必需的变量后,删除job对象以清理其数据并避免不必要地消耗资源。

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

注意,如果您使用, MATLAB将所有的工作空间变量传输到集群,即使您的脚本不使用它们。大型工作空间的数据传输时间可能非常长。作为一种最佳实践,将您的脚本转换为函数文件以避免这种通信开销。有关使用函数的示例,请参见运行批处理作业并从工作人员访问文件

有关更高级的选项,请参阅运行批处理作业并从工作人员访问文件

您可以使用的卸载计算以在后台运行.如果代码需要访问文件,可以使用其他选项,例如“AttachedFiles”“AdditionalPaths”,以使数据可访问。当计算发生时,您可以关闭或继续在MATLAB中工作,稍后恢复结果。

准备的例子

使用支持函数万博1manbetxprepare万博1manbetxSupportingFiles将此示例所需的数据复制到当前工作文件夹。

准备港口;万博1manbetx

您当前的工作文件夹现在包含4个文件:A.datb1.dat.B2.dat,B3.dat

运行批处理作业

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

c = parcluster();

将代码放入函数中,并通过使用.有关自定义函数的示例,请参阅支持函数万博1manbetxdividedata..指定具有输入到该功能的预期输出参数和单元格数量。

请注意,如果使用批次发送脚本文件,MATLAB即使您的脚本不使用它们,MATLAB也将所有工作区变量传输到群集中。如果您有一个大工作区,它会影响数据传输时间。作为一种最佳实践,将您的脚本转换为函数文件以避免这种通信开销。您可以通过简单地在脚本的开头添加函数行来执行此操作。在此示例中减少开销,dividedata.在此活动脚本之外的文件中定义。

如果您的代码使用并行池,请使用“池”参数名-值对创建具有指定的工作人员数量的并行池。使用其他工人运行函数本身。

默认情况下,将工人的初始工作文件夹更改为MATLAB客户端的当前文件夹。在workers中控制初始工作文件夹是很有用的。例如,如果您的集群使用不同的文件系统,因此路径不同,例如当您从Windows客户机向Linux集群提交时,您可能想要控制它。

  • 要保留工作人员的初始工作文件夹并使用其默认值,请设置“CurrentFolder”“。”

  • 要更改初始工作文件夹,请设置“CurrentFolder”到你选择的文件夹。

此示例使用具有三个工人的并行池,并为初始工作文件夹选择临时位置。使用卸载计算dividedata.

作业=批处理(C,@ dividedata,1,{},......“池”3,......“CurrentFolder”,Tempdir);

运行dividedata.在一个并行工作器上,这样您就可以在计算发生时继续在MATLAB中工作。

如果您想阻塞MATLAB直到作业完成,请使用等待函数作用于作业对象。

等待(工作);

检索结果,使用fetchOutputs在工作对象上。作为dividedata.取决于工人找不到的文件,fetchOutputs抛出一个错误。您可以使用getReport错误的属性任务工作中的对象。在本例中,代码依赖于工作人员找不到的文件。

getReport (job.Tasks (1) . error)
错误使用divideData(第4行)无法读取文件'B2.dat'。没有这样的文件或目录。”

从工作人员访问文件

默认情况下,自动分析您的代码并将所需文件传输给工人。在某些情况下,您必须明确地传输这些文件 - 例如,当您在运行时确定文件的名称时。

在这个例子中,dividedata.访问支持文件万博1manbetxA.dat,这自动检测和传输。该函数还访问b1.dat.,但是它在运行时解析文件的名称,因此自动依赖关系分析不会检测到它。

类型divideData.m
函数x = dividedata()a = load(“a.dat”);x =零(翻转(尺寸(a)));Parcon i = 1:3 b = load(“b”+ i +“.dat”);x = x + a \ 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) job3ID =工作。ID
Job3id = 25.

当您再次打开MATLAB时,您可以通过使用找工作函数。

工作(3)= findJob (c,“ID”,job3id);等待(工作(3));

或者,您可以使用作业监视器来跟踪作业。你可以用MATLAB打开它首页选项卡,环境部分,在平行>监控工作

检索结果和清理数据

要检索批处理作业的结果,请使用fetchOutputs函数。fetchOutputs返回单元格数组,其中包含使用的函数的输出

x = fetchOutputs(作业(3))
X =1×1单元阵列{40×207双}

当您检索了所有必需的输出并且不再需要作业对象时,请删除它以清理其数据并避免不必要地消耗资源。

删除(工作)清晰工作

输入参数

全部折叠

MATLAB脚本,指定为字符向量或字符串标量。

默认情况下,当您指定此参数时,工作区变量将从客户端复制到工作人员。作业和任务对象不会复制到工人。

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

数据类型:字符|细绳

表达式以评估,指定为字符向量或字符串标量。

默认情况下,当您指定此参数时,工作区变量将从客户端复制到工作人员。作业和任务对象不会复制到工人。

例子:批次('Y =魔术(3)');

数据类型:字符|细绳

集群,指定为平行的。集群对象,表示集群计算资源。要创建对象,请使用Parcluster.函数。

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

数据类型:平行的。集群

要由工作人员计算的函数,指定为函数句柄或函数名。

例子:批处理(@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,…,的家

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

要复制给工作人员的变量,指定为逗号分隔的对,由“工作区”结构标量。

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

如果指定,工作区变量只会从客户端复制到工作人员脚本表达.作业和任务对象不会复制到工人。

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

数据类型:结构体

群集概要文件用于标识群集,指定为逗号分隔对组成'轮廓'和一个字符向量或字符串。如果省略此选项,则使用默认概要文件来标识集群,并应用于作业和任务属性。

例子:j =批处理('ascript','profile','local');

数据类型:字符|细绳

在脚本或函数执行之前添加到工作人员的MATLAB搜索路径的路径,指定为逗号分隔对组成“AdditionalPaths”和字符矢量,字符串数组或字符向量阵列。

默认搜索路径可能在客户端上的工人上不相同;路径差可能是不同当前工作文件夹的结果(CWD)、平台或网络文件系统访问。指定“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”和一个字符向量或字符串。不能保证worker上存在此文件夹。该属性的默认值是MATLAB的当前目录命令执行。如果论证是“。”,批处理前的文件夹中没有更改。

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

数据类型:字符|细绳

标志从函数调用中收集日志,指定为逗号分隔的对,由“CaptureDiary”和一个逻辑值。有关收集数据的信息,请参阅日记

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

数据类型:逻辑

要从客户端会话复制到工作人员的环境变量,指定为逗号分隔对,由“EnvironmentVariables”和字符矢量,字符串数组或字符向量阵列。此处指定的名称已附加到EnvironmentVariables属性,以形成完整的环境变量列表。列出的未设置的变量不会复制到工作人员。这些环境变量在批处理作业期间设置在工作人员上。

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

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

要放入并行池的工作器数量,指定为逗号分隔的对,包括“池”和:

  • 一个非负整数。

  • 非负整数的2元素向量,被解释为范围。所得到的并行池的大小在所要求的范围内尽可能大。

另外,请注意使用另一个辅助程序来运行批处理作业本身。

脚本或函数使用这个池来执行语句,例如parforspmd在批处理代码中。因为游泳池需要N除了运行批处理的worker之外,集群必须至少有n + 1工人可用。您不需要已运行的并行池以执行,并且批处理创建的新池与您可能已经打开的池没有关联。有关更多信息,请参阅使用并行池运行批处理作业

如果使用默认值,0,脚本或函数只能在单个工作器上运行,而不能在并行池上运行。

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

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

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32.|UINT64

输出参数

全部折叠

乔布,作为并行.JOB.对象。

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

数据类型:并行.JOB.

提示

若要查看批处理作业的状态或跟踪进度,请使用作业监视器,如工作监视器.还可以使用作业监视器检索在不同会话中创建的批处理作业的作业对象,或检索在没有从调用。

删除不再需要的批处理任务,避免不必要地消耗集群存储资源。

兼容性的考虑

全部展开

行为在R2021a中改变

介绍了R2008a