您可以使用的卸载计算以在后台运行批
。如果您的代码需要访问文件,则可以使用其他选项,例如'附加的文件'
或者'含量径'
,使数据可访问。您可以在计算进行并稍后恢复结果时关闭或继续在MATLAB中工作。
使用支持功能金宝app准备porti金宝appngfiles.
要将此示例的所需数据复制到当前的工作文件夹。
准备港口;金宝app
您当前的工作文件夹现在包含4个文件:A.DAT.
那b1.dat.
那b2.dat.
, 和B3.DAT.
。
使用群集对象使用Parcluster.
。默认,Parcluster.
使用默认的群集配置文件。在MATLAB上检查您的默认集群配置文件家标签,在环境部分,在平行>选择默认群集。
c = parcluster();
将代码放在函数内,并通过使用将其作为批处理作业提交批
。有关自定义函数的示例,请参阅支持功能金宝appdividedata.
。指定具有输入到该功能的预期输出参数和单元格数量。
请注意,如果使用批次发送脚本文件,MATLAB即使您的脚本不使用它们,MATLAB也将所有工作区变量传输到群集中。如果您有一个大工作区,它会影响数据传输时间。作为最佳实践,将脚本转换为函数文件以避免此通信开销。您可以通过简单地在脚本的开头添加函数行来执行此操作。在此示例中减少开销,dividedata.
在此实时脚本之外的文件中定义。
如果您的代码使用并行池,请使用'水池'
名称 - 值对参数创建并行池,其中包含指定的工人数。批
使用其他工人运行函数本身。
默认,批
将Worker的初始工作文件夹更改为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 = load(“a.dat”);x =零(翻转(尺寸(a)));Parcon i = 1:3 b = load(“b”+ i +“.dat”);x = x + a \ b;结束
如果数据位于工人可以访问的位置,则可以使用名称值对参数'含量径'
指定位置。'含量径
'将此路径添加到工人的MATLAB搜索路径上,并使其对它们可见。
pathtodata = PWD;作业(2)=批处理(c,@ dividateata,1,{},......'水池',3,......'currentfolder',Tempdir,......'含量径',pathtodata);等待(工作(2));
如果数据处于工人无法访问的位置,则可以使用该数据将文件传输到工人'附加的文件'
名称值对参数。如果客户端和工人不共享相同的文件系统,则需要传输文件,或者群集在非正日模式下使用通用调度程序接口。有关更多信息,请参阅配置使用通用调度程序接口(MATLAB并行服务器)。
filenames =“b”+字符串(1:3)+“.dat”;作业(3)=批处理(C,@ dividedata,1,{},......'水池',3,......'currentfolder',Tempdir,......'附加的文件',文件名);
您可以在提交工作后关闭MATLAB,并稍后检索结果。在关闭MATLAB之前,请记住作业ID。
Job3ID =作业(3)。地
Job3id = 25.
当您再次打开Matlab时,您可以使用使用的作业找工作
功能。
作业(3)= findjob(c,'ID',job3id);等待(工作(3));
或者,您可以使用作业监视器来跟踪您的作业。您可以从MATLAB打开它家标签,在环境部分,在平行>监控工作。
要检索批处理作业的结果,请使用fetchOutputs.
功能。fetchOutputs.
返回带有函数的输出运行的单元格数组批
。
X = fetchOutputs(作业(3))
X =1×1个单元阵列{40×207双}
检索所有所需的输出并不需要作业对象时,请将其删除以清理其数据并不必要地避免消耗资源。
删除(工作)清除工作