主要内容

支持的调度器的程序独立作业金宝app

创建和运行作业

本节详细介绍使用群集上支持作业调度的并行计算工具箱™软件的典型编程会话的步骤。金宝app金宝app支持的调度包括MATLAB®作业调度程序,平台LSF®(负载共享工具),微软®Windows HPC Server(含CCS), PBS Pro®或TORQUE调度器。

本节假设您有一个MATLAB作业调度程序LSF®,PBS临,扭矩,或Windows HPC服务器(包括CCS和HPC Server 2008的)调度安装并在网络上运行。所有这些集群类型的,基本的工作程序顺序是一样的:

注意,客户端会话用于与MATLAB作业调度器交互的对象仅是对实际包含在MATLAB作业调度器中的数据的引用,而不是客户端会话。在创建了作业和任务之后,您可以关闭客户端会话并重新启动它,并且您的作业仍然存储在MATLAB job Scheduler中。你可以使用findJob函数或工作MATLAB的作业调度群集对象的属性。

定义并选择概要文件

群集配置文件识别群集的类型使用和它的特定性能。在一个配置文件,你确定有多少工人作业可以访问,在作业数据存储,其中MATLAB被访问和许多其它集群属性。确切的性质通过簇的类型确定。

本节中的步骤都假设名称为MyProfile的概要文件标识了您想要使用的集群,以及所有必要的属性设置。通过正确使用概要文件,不管集群类型如何,其余的编程都是相同的。在定义或导入配置文件后,可以在配置文件管理器GUI中将其设置为默认配置文件,或者使用以下命令:

parallel.defaultClusterProfile (“MyProfile”

关于不同集群类型及其属性的几点注意事项:

笔记

在共享文件系统中,所有节点都需要访问集群对象中指定的文件夹JobStorageLocation财产。

因为Windows HPC Server需要一个共享的文件系统,所以所有节点都需要访问集群对象中指定的文件夹JobStorageLocation财产。

在共享文件系统中,许多计算机上的MATLAB客户端可以访问网络上相同的作业数据。一次只能在一台客户端计算机上设置特定作业或任务的属性。

当在非共享文件系统中使用LSF调度器时,调度器可能会报告作业处于完成状态,即使LSF调度器可能还没有完成作业文件的传输。

查找集群

您可以使用parcluster函数来标识一个集群,并在本地MATLAB会话中创建一个表示集群的对象。

要查找特定的集群,请使用集群概要文件来匹配您想要使用的集群的属性。在这个例子中,我的简历定义特定集群的概要文件的名称。

c = parcluster (“MyProfile”);

创建一个工作

你创造了一个工作createJob函数。尽管此命令在客户端会话执行,它实际上创建群集上的工作,c,并创建一个作业对象,job1在客户端会话。

job1 = createJob (c)
作业属性:ID:1种类型:独立的用户名:mylogin国家:待定SubmitDateTime:的startDateTime:RunningDuration:0天0小时0米0 NumThreads:1个AutoAttachFiles:附加真正的自动配置文件:列表文件AttachedFiles:{} AutoAddClientPath:假AdditionalPaths:{}关联任务:编号未决:0号运行:0号成品:错误的0任务ID:[]警告的任务ID:[]

需要注意的是作业的状态属性是待办的.这意味着作业还没有排队等待运行,所以现在可以向它添加任务。

集群的显示现在包括一个待定作业:

c
乔丹集群属性:名称:my_mjs简介:MyProfile修改:假主持人:myhost.mydomain.com用户名:灰暗NumWorkers: 1 NumThreads: 1 NumBusyWorkers: 0 NumIdleWorkers: 1 JobStorageLocation:数据库myhost.mydomain.com ClusterMatlabRoot: C: \ apps \ matlab SupportedReleases: R2021b操作系统:windows AllHostAddresses:金宝app0:0:0 SecurityLevel: 0 (No security) HasSecureCommunication: false RequiresClientCertificate: false requireslinelicensing: false Associated Jobs: Number Pending: 1 Number Queued: 0 Number Running: 0 Number Finished: 0

控件可以将文件传输给工作人员AttachedFiles作业对象的。有关详细信息,请参见与员工共享代码

创建任务

创建作业之后,可以使用的CreateTask函数。任务定义了工作人员在作业运行期间要评估的功能。通常,一项工作的任务都是相同的。在本例中,每个任务将生成一个由随机数组成的3 × 3矩阵。

createTask(job, @rand, 1, {3,3});createTask(job, @rand, 1, {3,3});createTask(job, @rand, 1, {3,3});createTask(job, @rand, 1, {3,3});createTask(job, @rand, 1, {3,3});

任务财产job1现在任务对象的5×1矩阵。

job1.Tasks
5 x1任务数组:ID状态FinishDateTime函数错误警告  ------------------------------------------------------------------------- 1 1等待兰德0 0 2 2等待兰德0 0 3 3等待兰德0 0 4 4等待兰德0 0 5 5等待兰德0 0

或者,您可以通过一个调用来创建5个任务的CreateTask通过提供限定的输入参数给每个任务5个单元阵列的单元阵列。

T = createTask (job1 @rand 1, {{3 3} {3} {3} {3} {3}});

在这种情况下,T是任务对象的5乘1矩阵。

作业提交到作业队列

要运行作业并对其任务进行评估,可以使用提交函数。

提交(JOB1)

作业管理器分发的任务job1其注册人员进行评估。

每个工人进行任务评估的步骤如下:

  1. 收到AttachedFilesAdditionalPaths从作业。将文件,并相应修改路径。

  2. 跑过jobStartup第一次评估这项工作的任务。可以在中指定此函数AttachedFilesAdditionalPaths.当使用MATLAB作业调度,如果同一个工作评估这项工作后续任务,jobStartup不会在任务之间运行。

  3. 跑过taskStartup函数。可以在中指定此函数AttachedFilesAdditionalPaths.这每一项任务评估之前运行,工人执行,因此它可以对每个作业工人出现多次。

  4. 如果工人是形成新的并行池的一部分,跑了poolStartup函数。(这在执行时,会发生parpool或运行时,其它类型的作业即形式和使用并行池,如.)

  5. 接收用于评估的任务函数和参数。

  6. 评估任务功能,把结果放置在任务的OutputArguments财产。任何错误信息都包含在任务中错误财产。

  7. 跑过taskFinish函数。

检索的工作结果

每个任务的评估结果存储在该任务对象的OutputArguments属性为单元格数组。使用的函数fetchOutputs从作业中的所有任务中检索结果。

等待(job1)结果= fetchOutputs(job1);

显示每个任务的结果。

结果{1:5}
0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 0.4447 0.9218 0.4057 0.6154 0.7382 0.9355 0.7919 0.1763 0.9169 0.4103 0.3529 0.1389 0.8936 0.8132 0.2028 0.0579 0.0099 0.1987 0.6038 0.0153 0.9318 0.2722 0.7468 0.4660 0.1988 0.4451 0.4186 0.8462 0.6721 0.6813 0.5252 0.8381 0.3795 0.2026 0.0196 0.8318

在调度程序中管理对象

因为作业和任务的所有数据都驻留在集群作业存储位置中,所以即使创建它们的客户端会话已经结束,这些对象也会继续存在。以下章节描述了如何访问这些对象以及如何永久删除它们:

当客户端会话结束时会发生什么

当您关闭的并行计算工具箱软件客户端会话,所有在工作区中的对象将被清除。然而,在对象MATLAB并行服务器™软件或其他群集资源留在原地。当客户端会话结束时,只有本地的引用对象丢失,而不是实际的工作和任务集群中的数据。

因此,如果您提交作业到集群作业队列执行,您可以退出MATLAB的客户端会话,作业将被集群执行。您可以在其他客户端会话后取回作业结果。

恢复对象

“并行计算工具箱”软件的客户端会话可以访问中的任何对象MATLAB并行服务器软件,无论是当前客户端会话还是另一个客户端会话创建了这些对象。

属性在客户端会话中创建集群对象parcluster函数。

c = parcluster (“MyProfile”);

当你通过对象访问群集c,可以创建引用该集群中包含的所有作业的对象。作业可以在集群对象中访问工作属性,它是一个作业对象数组:

all_jobs = c.Jobs

你可以在数组中建立索引all_jobs找到一个具体的工作。

或者,您可以使用findJob函数在集群中搜索任何作业或由其任何属性标识的特定作业,例如状态

all_jobs = findJob (c);finished_jobs = findJob (c,“状态”“完成”

该命令返回一个作业对象数组,其中引用集群上所有已完成的作业c

重置回调属性(马铃薯作业调度器)

当重新启动客户端会话,你失去任何回调属性的设置(例如,FinishedFcn属性)的工作或任务。这些属性通常用来获得对它们的对象状态的改变客户端会话通知。当你在一个新的客户端会话创建的对象引用现有的工作或任务,必须如果你打算使用它们重置这些回调的性质。

永久移除对象

集群中的作业即使在它们完成之后,并且在MATLAB作业调度器停止并重新启动之后,仍然会继续存在。下面将介绍从集群中永久移除作业的方法:

删除选定的对象。从MATLAB客户端会话的命令行,你可以调用删除函数用于任何作业或任务对象。如果删除作业,也将删除该作业中包含的所有任务。

例如,查找并删除集群中属于该用户的所有已完成作业

c = parcluster (“MyProfile”) finished_jobs = findJob(c,“状态”“完成”“用户名”'的Joep'删除(finished_jobs)清晰finished_jobs

删除功能永久地从集群中删除这些作业。的清晰的函数从本地MATLAB工作区中删除对象引用。

开始一个马铃薯来自清洁状态的作业调度程序。当MATLAB作业调度器启动时,默认情况下,它会以所有作业完整的方式恢复前一个会话。或者,MATLAB作业调度器可以从一个干净的状态开始,删除所有以前的历史记录。从干净状态开始将永久地从特定主机上指定名称的MATLAB作业调度程序中删除所有作业和任务数据。

作为网络管理功能,在抹杀的国旗的startjobmanager脚本在从干净的状态开始(MATLAB并行服务器)MATLAB并行服务器系统管理员指南。