批量

MATLAB脚本或对工人功能

描述

例子

j=批次(脚本)运行脚本文件脚本在默认集群配置文件指定的集群中的工作程序上。(注:不包括。m带有脚本名的文件扩展名。)函数返回j,运行脚本的作业对象的句柄。该脚本文件脚本复制到worker。

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

例子

j=批次(FCN,N,{x1,…, xn})运行功能FCN在默认集群配置文件指定的集群中的工作程序上。函数返回j,一个手柄来运行该功能的作业对象。该功能与给定的参数进行评估,X1,...,XN,并返回N输出参数。的函数文件FCN复制到worker。(注:不包括。m文件扩展名与函数名参数)。

例子

j=批次(myCluster中,FCN,N,{x1,…, xn})是一样批处理(fcn N, {x1,…, xn})除了该函数在集群对象指定的集群中的工作程序上运行之外myCluster中

例子

j=批次(___,名称,值)指定选项,修改作业的使用一个或多个名称 - 值对参数的行为。这些选项支持批量函数和脚本,金宝app除非另有说明。使用此语法除了任何以前的语法输入参数的组合。

例子

全部折叠

使用批量将工作分配给在后台运行的MATLAB工作程序会话。在进行计算时,可以继续使用MATLAB。

方法将脚本作为批处理作业运行批量函数。默认情况下,批量使用默认的集群配置文件。检查MATLAB中的默认集群配置文件首页选项卡,环境部分中,平行>选择默认集群。或者,您可以指定具有一个群集配置文件“个人资料”名称-值对的论点。

工作=批次('myScript的');

批量不会阻止MATLAB和计算时发生,您可以继续工作。

如果你想阻止MATLAB直到作业完成时,使用等待在工作对象上的功能。

等待(工作);

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

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

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

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

如果要加载的批处理作业的所有变量,使用负载函数没有参数。

当你获取所有所需的变量,删除作业对象清理其数据,避免消耗不必要的资源。

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

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

对于更高级的选项批量,请参阅运行批处理作业并从工作程序中访问文件

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

准备的例子

使用以下命令准备并复制本示例的支持文件。金宝app

prepare金宝appSupportingFiles;

运行批处理作业

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

C = parcluster();

将代码放在函数中,并将其作为批处理作业提交批量。有关自定义函数的示例,请参阅支持函数金宝appmyFunction。指定的输出参数的预期数量,并与输入的功能的单元阵列。

如果代码使用并行池,则使用“池”名称 - 值对参数创建您指定工人的数量并行池。批量使用额外的辅助程序来运行函数本身。

默认情况下,批量将工作程序的初始工作目录更改为MATLAB客户机的当前文件夹。控制workers中的初始工作目录可能很有用。例如,如果集群使用不同的文件系统,因此路径不同(例如从Windows客户机向Linux集群提交时),您可能希望控制它。

  • 要保持工作者的初始工作目录并使用它们的默认值,请设置“CurrentFolder”“。”

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

此示例使用有三个工人平行池,并选择一个临时位置的初始工作目录。

作业=批次(C,@ myFunction的,1,{},...“池”,3,...“CurrentFolder”,tempdir);

批量将函数中的计算工作卸载给并行工作程序,这样在进行计算时可以继续在MATLAB中工作。

如果您想要阻止MATLAB直到任务完成,请使用等待在工作对象上的功能。

等待(工作);

要检索的结果,使用fetchOutputs在作业对象上。

如果你的代码中有一个错误,那么fetchOutputs抛出一个错误。您可以通过检查访问错误信息错误的属性任务对象在工作。在这个例子中,该代码取决于工人无法找到的文件。

getReport (job.Tasks (1) . error)
mydata2.dat 'ANS =“使用无法读取文件myFunction的(第4行)错误'。无此文件或目录。'

从工作人员处访问文件

默认情况下,批量自动分析代码并将所需的文件传输给工作人员。在某些情况下,必须显式地传输这些文件——例如,在运行时确定文件名称时。

在这个例子中,myFunction访问支持文件金宝appMYDATA.DAT,这批量自动检测和传输。该功能还访问mydata1.dat,但是它在运行时解析文件的名称,因此自动依赖项分析不会检测到它。

类型myFunction.m
函数X = myFunction的()A =负载( “MYDATA.DAT”);X =零(倒装(尺寸(A)));PARFOR I = 1:3 B =负载( “MYDATA” + I + “DAT”);X = X + A \ B;年底结束

如果数据是在一个位置,工人可以访问,则可以使用名称 - 值对参数“AdditionalPaths”到指定的位置。“AdditionalPaths将这条路径添加到工作人员的MATLAB搜索路径中,让他们可以看到这些数据。

pathToData = PWD;作业(2)=批次(C,@ myFunction的,1,{},...“池”,3,...“CurrentFolder”,TEMPDIR,...“AdditionalPaths”,pathToData);等待(工作(2));

如果数据是在工人们不能访问的位置,您可以通过使用文件传输给工人“AttachedFiles”名称-值对的论点。

作业(3)=批次(C,@ myFunction的,1,{},...“池”,3,...“CurrentFolder”,TEMPDIR,...“AttachedFiles”,“MYDATA”字符串(1:3)+ +“.dat”);

找到现有的工作

您可以在作业提交后关闭MATLAB,稍后检索结果。在关闭MATLAB之前,请记下作业ID。

(3).ID job3ID =工作
job3ID = 19

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

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

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

检索结果并清理数据

要检索批处理作业的结果,请使用fetchOutputs函数。fetchOutputs返回与功能运行的与所述输出单元阵列批量

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

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

删除(作业)明确工作

输入参数

全部折叠

由worker计算的MATLAB脚本,指定为字符向量或字符串。

例:批处理(“aScript”);

数据类型:烧焦|

集群,指定为parallel.Cluster对象,表示群集计算资源。要创建对象,请使用parcluster函数。

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

数据类型:parallel.Cluster

由worker计算的函数,指定为函数句柄或函数名。

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

数据类型:烧焦||function_handle

从评价函数预期的输出数FCN,指定为一个非负整数。

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

数据类型:||int8|INT16|INT32|Int64的|UINT8|UINT16|UINT32|uint64

输入函数的自变量FCN,指定为单元格数组。

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

数据类型:细胞

名称-值对的观点

的可选逗号分隔对名称,值参数。名称参数名和价值为对应值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数名1,值1,...,NameN,值N

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

在工人只是脚本或函数之前的工作区被调用,指定为逗号分隔的一对组成的“工作区”和一个1×1的结构体。该结构的字段名定义变量的名称,以及字段值被分配到工作区的变量。默认情况下,这个参数有一个字段在当前工作区,每一个变量批量是执行。此参数仅支持脚本的运行。金宝app

例:workspace.myVar = 5;J =批次( 'aScript', '工作区',工作区);

数据类型:结构体

群集配置文件用于识别集群,指定为逗号分隔的一对组成的“个人资料”和字符向量或字符串。如果省略此选项,则使用默认配置文件标识集群,并应用于作业和任务属性。

例:J =批次( 'aScript', '个人资料', '本地');

数据类型:烧焦|

在脚本或函数执行之前,在MATLAB中添加worker的搜索路径,指定为逗号分隔的对“AdditionalPaths”和字符向量,字符串数组,或字符向量的单元阵列。

默认的搜索路径可能不会对工人一样,因为它是在客户端上;路径差异可能是不同的当前工作文件夹的结果(CWD)、平台或网络文件系统访问。指定“AdditionalPaths”名称-值对参数有助于确保工作人员在正确的位置查找文件,例如代码文件、数据文件或模型文件。

您可以使用“AdditionalPaths”访问共享文件系统中的文件。注意,路径表示可以根据目标机器的不同而有所不同。“AdditionalPaths”必须是集群中的机器所看到的路径。例如,如果Z:\数据在您的本地Windows®/网络/数据你的Linux®集群,然后将后者添加到“AdditionalPaths”。如果你使用的数据存储,使用“AlternateFileSystemRoots”而不是对付其他表示。欲了解更多信息,请参阅设置数据存储以便在不同的机器或集群上进行处理(MATLAB)。

注意AdditionalPaths只有在使用相对路径或文件名而不是绝对路径引用文件时,才有助于查找文件。

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

数据类型:烧焦||细胞

要传递给worker的文件或文件夹,指定为逗号分隔的对“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’,假);

数据类型:逻辑

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

例:J =批次( 'aScript', 'EnvironmentVariables', “MY_ENV_VAR”);

数据类型:烧焦||细胞

要组成并行池的worker的数量,指定为逗号分隔的对“池”并且:

  • 的非负整数。

  • 非负整数的A 2-元件载体,其被解释为范围。所得平行池的大小是尽可能大的范围内所需的。

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

脚本或函数使用此池执行以下语句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