主要内容

应用回调MATLAB作业调度器作业和任务

MATLAB®作业调度器能够在MATLAB作业调度器集群中的作业或任务更改为特定状态时触发客户端会话中的回调。

在MATLAB作业调度器集群中,表示作业和任务的客户端对象包括以下属性:

回调的财产 对象 集群概要管理器字段 描述
QueuedFcn 工作只 JobQueuedFcn

指定将作业提交给MATLAB作业调度器队列时在客户端中执行的函数

RunningFcn 工作或任务

JobRunningFcn

TaskRunningFcn

指定作业或任务开始执行时在客户端中执行的函数

FinishedFcn 工作或任务

JobFinishedFcn

TaskFinishedFcn

指定作业或任务完成执行时在客户端中执行的函数

您可以在集群配置文件管理器中将每个属性设置为任何有效的MATLAB回调值,参见表和添加和修改集群概要文件.回调遵循Handle Graphics的相同行为®,将进行调用的对象(作业或任务)和事件数据的空参数传递给回调函数。

这些属性仅适用于设置它们的客户端MATLAB会话。以后访问相同作业或任务对象的会话不继承以前会话的设置。您可以在命令行中将这些属性应用于现有的作业和任务,但是集群配置文件设置仅在第一次创建这些对象时应用。

请注意

回调属性仅在使用MATLAB作业调度器集群时可用。

例1。在命令行创建回调

这个例子展示了如何在客户端会话命令行创建作业和任务回调。

创建并保存回调函数clientTaskCompleted.m在MATLAB客户端的路径上,内容如下:

函数clientTaskCompleted(任务,eventdata) disp ([“完成任务:”num2str (task.ID)))

创建一个作业并设置它QueuedFcnRunningFcn,FinishedFcn属性,使用将信息发送到显示的匿名函数的函数句柄。

C = parcluster(“MyMJS”);j = createJob(c,“名字”“Job_52a”);j.QueuedFcn = @(job,eventdata)的名字“现在”job.State]);j.RunningFcn = @(job,eventdata) disp([job,eventdata])的名字“现在”job.State]);j.FinishedFcn = @(作业,事件数据)disp([作业,事件数据])的名字“现在”job.State]);

创建一个任务FinishedFcn是独立函数的函数句柄。

createTask (j @rand 1, {2,4},...“FinishedFcn”, @clientTaskCompleted);

运行作业并注意来自作业和任务回调的输出消息。

提交(j)
Job_52a now queued Job_52a now running Finished task: 1 Job_52a now Finished

要对给定集群上的任何作业和任务使用相同的回调,您应该在集群配置文件中设置这些属性。有关在概要文件管理器中编辑概要文件的详细信息,请参见发现集群并使用集群概要文件.这些属性设置适用于使用此概要文件派生的集群创建的任何作业和任务。顺序很重要,必须按照以下顺序进行:

  1. 在概要文件管理器中为概要文件设置回调属性值。

  2. 使用集群配置文件在MATLAB中创建集群对象。

  3. 使用集群对象创建作业,然后创建任务。

例2。在集群配置文件中设置回调

此示例展示如何使用概要文件管理器设置多个作业和任务回调属性。

在配置文件管理器中编辑MATLAB作业调度器集群配置文件,以便将回调属性设置为前面示例中的相同值。保存配置文件看起来像这样:

创建并保存回调函数clientTaskCompleted.m在MATLAB客户端的路径上,具有如下内容。(如果您为前面的示例创建了这个函数,则可以使用它。)

函数clientTaskCompleted(任务,eventdata) disp ([“完成任务:”num2str (task.ID)))

为集群、作业和任务创建对象。然后提交作业。所有回调属性都是在创建对象时从概要文件中设置的。

C = parcluster(“MyMJS”);j = createJob(c,“名字”“Job_52a”);createTask (j @rand 1, {2,4});提交(j)
Job_52a now queued Job_52a now running Finished task: 1 Job_52a now Finished

提示

  • 您应该避免在回调函数中运行可能导致冲突的代码。例如,如果作业中的每个任务都有一个对其结果进行绘图的回调,则无法保证任务完成的顺序,因此绘图可能会相互覆盖。同样,FinishFcn的回调可能会在FinishFcn所有任务的回调都已完成。

  • 提交的意见书批处理使用适用的作业和任务回调。并行池可以触发由其集群概要文件定义的作业回调。