主要内容

与员工共享代码

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

请注意

这是一个演示如何与使用批处理,请参阅运行批处理作业并从工作者访问文件

员工直接访问文件

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

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

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

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

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

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

    本例设置了MATLAB®混合平台环境中的工作者路径,以使用两个中心存储库中的函数/中心/函数还有部门档案/ dept1 /函数,它们都有一个Windows UNC路径。

    C = parcluster();%使用默认值job1 = createJob(c);Ap = {/中心/函数的/ dept1 /函数的...\ \ OurDomain \ \ func中部的' \ \ OurDomain \ dept1 \ func '};job1。AdditionalPaths = ap;
  • 通过把路径命令在任何适当的启动文件中:

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

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

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

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

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

将数据传递给和传递给Worker会话

任务和作业对象上的许多属性设计用于从客户机到调度程序再到工作者之间传递代码或数据。这些信息可以包括任务评估所需的MATLAB代码,或者用于处理任务评估结果的输出数据的输入数据。以下属性有助于这种通信:

  • InputArguments—每个任务的此属性包含创建任务时指定的输入数据。当工作者执行其评估时,这些数据被传递到函数中。

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

  • JobData- job对象的这个属性包含被发送给每个worker的数据,该worker负责评估该job的任务。此属性工作效率很高,因为每个作业只将数据传递给一个worker一次,如果该worker正在为作业评估多个任务,则可以节省时间。(注意:不要将此属性与用户数据属性在MATLAB客户端中的任何对象上。信息用户数据只在客户机中可用,对调度程序或工作程序不可用。)

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

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

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

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

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

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

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

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

    自动附件万博1manbetx支持的代码文件格式为MATLAB文件(.m扩展)、P-code文件(每分钟)和MEX-files (.mex).请注意,AutoAttachFiles不包括用于作业的数据文件;使用AttachedFiles属性显式地将这些文件传输到工作者。

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

    如果AutoAttachFiles设置是真正的对于启动并行池时使用的聚类配置文件,MATLAB对spmd块,parfor-loops和其他附加文件,以确定执行所需的其他代码文件,然后自动将这些文件附加到并行池,以便工作线程可以使用这些代码。

请注意

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

通过MATLAB代码启动和完成

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

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

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

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

  • poolStartup.m每次在新启动的并行池中包含一个工作线程时,该工作线程都会自动执行。

  • taskFinish.m每次工作线程完成任务评估时,自动在工作线程上执行。

这些文件的空版本在以下文件夹中:

matlabroot/工具箱/并行/用户

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

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

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

相关的话题