主要内容

与员工共享代码

因为作业的任务是在不同的机器上评估的,所以每台机器都必须访问评估其任务所需的所有文件。下面几节将解释共享代码的基本机制:

请注意

下面的示例演示了如何与使用批处理,请参阅运行批处理作业并从工作人员访问文件

工人直接访问文件

如果所有工作人员都可以访问网络上的相同驱动器,那么他们就可以访问驻留在这些共享资源上的必要文件。这是共享数据的首选方法,因为它最小化了网络流量。

您必须定义每个工作会话的搜索路径,以便它在正确的位置查找文件。你可以定义路径:

  • 通过使用工作的AdditionalPaths财产。这是设置路径的首选方法,因为它是特定于作业的。

    AdditionalPaths标识要添加到此作业的辅助会话的命令搜索路径顶部的文件夹。如果你也指定AttachedFiles,AttachedFiles是上面的AdditionalPaths在工人的道路上。

    当你指定AdditionalPaths在创建作业时,这些设置将与适用的集群概要文件中指定的设置相结合。设置AdditionalPaths在作业对象创建后,不会将新设置与配置文件设置合并,而是覆盖该作业的现有设置。

    AdditionalPaths默认为空。对于混合平台环境,字符向量可以指定这两个UNIX®和微软®窗户®风格的路径;那些不适合或不适合特定机器的设置将生成警告并被忽略。

    这个例子设置了MATLAB®在混合平台环境中使用中央存储库中的函数的工作路径/中心/函数和部门档案/ dept1 /函数,每个都有一个Windows UNC路径。

    c = parcluster ();%使用默认job1 = createJob (c);美联社= {/中心/函数的/ dept1 /函数的...\ \ OurDomain \ \ func中部的' \ \ OurDomain \ dept1 \ func '};job1。AdditionalPaths =美联社;
  • 通过将路径命令在任何适当的启动文件为工人:

    • matlabroot当地\工具箱\ \ startup.m

    • matlabroot\工具箱\ \用户\ jobStartup.m平行

    • matlabroot\工具箱\ \用户\ taskStartup.m平行

    对这些文件的访问可以通过工作传递给工人AttachedFilesAdditionalPaths财产。否则,所使用的每个文件的版本都是worker路径上的最高版本。

共享资源间的文件访问可以基于用户名的权限。您可以设置MATLAB作业调度程序和工作服务的用户名MATLAB并行服务器™软件运行通过设置MJSUSER的价值mjs_def文件,然后启动服务。对于微软(Microsoft)的Windows操作系统来说,也存在同样的问题MJSPASS为指定的用户提供帐户密码。有关服务默认设置和mjs_def文件的更多信息,请参考定义脚本默认值(MATLAB并行服务器)MATLAB并行服务器系统管理员指南。

向工作者会话传递数据

任务和作业对象上的许多属性都是为在客户端到调度程序再到工作程序之间传递代码或数据而设计的。这些信息可能包括任务评估所需的MATLAB代码,或处理输入数据或任务评估产生的输出数据。以下属性便于这种通信:

  • InputArguments—每个任务的此属性包含创建任务时指定的输入数据。该数据在worker执行其求值时传递给函数。

  • OutputArguments-每个任务的这个属性包含函数的计算结果。

  • JobDatajob对象的这个属性包含发送给每个评估该job任务的worker的数据。该属性有效地工作,因为每个作业只向工作者传递一次数据,如果该工作者正在为该作业评估多个任务,则可以节省时间。(注意:不要将此属性与用户数据属性在MATLAB客户端中的任何对象。信息用户数据仅在客户端可用,对调度器或工作者不可用。)

  • AttachedFiles- job对象的这个属性是一个单元格数组,你手动指定所有发送给工人的文件夹和文件。在worker上安装文件,并将属性中指定的条目添加到worker会话的搜索路径中。

    AttachedFiles包含工作人员为评估作业的任务而需要访问的文件夹和文件的列表。属性的值(默认为空)在集群概要文件或客户端会话中定义。将属性的值设置为字符向量的单元格数组。每个字符向量都是文件夹或文件的绝对或相对路径名。(注意:如果这些文件或文件夹在传输过程中发生了变化,或者其中任何一个文件夹是空的,则可能导致失败或错误。如果指定的路径名不存在,则生成错误。)

    当worker第一次计算特定任务的任务时,调度器将文件和文件夹传递给workerAttachedFiles财产。在工作机器上创建的文件夹结构与设置属性的客户端机器上访问的文件夹结构完全相同。属性值中列出的条目将被添加到worker会话中的命令搜索路径的顶部。(条目的子文件夹不会添加到路径中,即使它们包含在文件夹结构中。)要找出文件在工作机器上的位置,可以使用该函数getAttachedFilesFolder在工作程序上运行的代码中。

    当工作程序运行同一作业的后续任务时,它将使用该作业已经设置的文件夹结构AttachedFiles属性用于为该作业运行的第一个任务。

    当你指定AttachedFiles在创建作业时,设置将与适用概要文件中指定的设置相结合。设置AttachedFiles在作业对象创建后,不能将新设置与配置文件设置合并,而是覆盖该作业的现有设置。

    的转移AttachedFiles在一台机器上为该特定作业运行任务的每个工作者发生,而不管该机器上运行了多少工作者。正常情况下,当作业完成或下一个作业开始时,附加的文件将从worker机器中删除。

  • AutoAttachFiles——这个属性的工作对象使用一个逻辑值指定MATLAB来执行一个分析任务功能在手动工作和附加文件,以确定哪些代码工人,所必需的文件和自动将这些文件发送给工人。您可以使用概要文件管理器在集群概要文件中设置此属性值,也可以在命令行上的作业对象上以编程方式设置它。

    c = parcluster ();j = createJob (c);j.AutoAttachFiles = true;

    支持的自金宝app动附件代码文件格式为MATLAB文件(.m扩展名)、P-code文件(每分钟)和MEX-files (.mex).请注意,AutoAttachFiles不包括您工作的数据文件;使用AttachedFiles属性以显式地将这些文件转移给工人。

    使用listAutoAttachedFiles获取自动附加到作业的代码文件的列表。

    如果AutoAttachFiles设置是真正的对于启动并行池时使用的集群概要文件,MATLAB执行分析spmd块,parfor然后自动将这些文件附加到并行池中,以便工作人员可以使用这些代码。

请注意

在设置属性的单个调用中可以发送默认的最大数据量。这个极限适用于OutputArguments属性,以及作为输入参数传递给作业的数据AttachedFiles.如果超过了限制,就会得到一条错误消息。有关此数据传输大小限制的详细信息,请参见附件文件大小限制

通过MATLAB代码的启动和完成

作为MATLAB的一个会话,工作会话执行它的启动.m每次启动时都归档。你可以把startup.m在工人的MATLAB搜索路径上的任何文件夹中的文件,如工具箱/并行/用户

这些附加文件可以初始化和清理工作会话,因为它开始或完成任务的评估:

  • jobStartup.m当worker运行作业的第一个任务时,自动在worker上执行。

  • taskStartup.m每次worker开始评估任务时,自动在worker上执行。

  • poolStartup.m每当一个worker被包含在一个新启动的并行池中时,该worker将自动执行。

  • taskFinish.m在worker每次完成任务评估时自动执行。

文件夹中提供了这些文件的空版本:

matlabroot/工具箱/并行/用户

您可以编辑这些文件,以包含您希望worker在指定时间执行的任何MATLAB代码。

或者,您可以创建这些文件的自己的版本,并将它们作为AttachedFiles属性中的位置的路径名,或包含它们在AdditionalPaths财产。

中提供的版本优先AttachedFiles属性,然后指向AdditionalPaths财产。如果这些属性中没有包含这些文件中的任何一个,工作人员将使用工具箱/并行/用户工人的MATLAB安装文件夹。

相关的话题