主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

运行批量并行作业

运行批处理作业

要将工作从 MATLAB® 会话卸载到另一个会话的后台运行,您可以在脚本中使用 batch 命令。

  1. 要创建脚本,请输入:

    edit mywave
  2. 在 MATLAB 编辑器中,创建一个 for 循环:

    for i = 1:1024
      A(i) = sin(i*2*pi/1024);
    end
  3. 保存文件并关闭编辑器。

  4. 使用 MATLAB 命令行窗口中的 batch 命令在单独的 MATLAB 工作单元上运行脚本:

    job = batch('mywave')

    MATLAB client passing a batch command to the MATLAB worker.

  5. batch 不会阻止 MATLAB,您可以在进行计算时继续工作。如果需要阻止 MATLAB 直到作业完成,请在作业对象上使用 wait 函数。

    wait(job)
  6. 作业完成后,您可以检索并查看其结果。load 命令将在工作单元上创建的变量传输到客户端工作区,您可以在其中查看结果:

    load(job,'A')
    plot(A)
  7. 当作业完成后,永久删除其数据并从工作区中删除其引用:

    delete(job)
    clear job

batch 在本地工作单元或集群工作单元上运行您的代码,但不需要并行池。

您可以使用 batch 来运行脚本或函数。有关更多详细信息,请参阅 batch 参考页。

使用并行池运行批处理作业

您可以结合这些能力来卸载作业并在并行池中运行循环。此示例将两者结合起来,创建一个简单的批量 parfor 循环。

  1. 要创建脚本,请输入:

    edit mywave
  2. 在 MATLAB 编辑器中,创建一个 parfor 循环:

    parfor i = 1:1024
      A(i) = sin(i*2*pi/1024);
    end
  3. 保存文件并关闭编辑器。

  4. 使用 batch 命令运行 MATLAB 中的脚本。表明脚本应该使用并行池进行循环:

    job = batch('mywave','Pool',3)

    此命令指定三个工作单元(除了运行批处理脚本的工作程序之外)来评估循环迭代。因此,本示例总共使用了四个本地工作单元,其中包括一个运行批处理脚本的工作单元。总共涉及五个 MATLAB 会话,如下图所示。

    MATLAB client sending the batch command to the lead MATLAB worker to instruct three other workers to execute the script.

  5. 查看结果:

    wait(job)
    load(job,'A')
    plot(A)

    结果看起来与以前相同,但是在执行上有两个重要的区别:

    • 定义 parfor 循环并累积其结果的工作被 batch 卸载到另一个 MATLAB 会话。

    • 循环迭代从一个 MATLAB 工作单元分布到另一组同时运行的工作单元('Pool'parfor),因此循环运行速度可能比仅有一个工作单元执行的速度更快。

  6. 当作业完成后,永久删除其数据并从工作区中删除其引用:

    delete(job)
    clear job

从文件面板以批处理作业运行脚本

在“文件”面板中,您可以通过浏览到文件的文件夹、右键点击文件,然后选择将脚本作为批处理作业运行来运行一个 MATLAB 脚本作为批处理作业。批处理作业在默认集群配置文件所标识的集群上运行。下图显示了运行脚本文件 myScript.m 的选项:

Context menu that appears after you right-click a MATLAB script in the Files panel. The context menu shows the option to Run Script as Batch Job.

从“文件”面板以批处理方式运行脚本时,仅使用集群中的一个工作单元。因此即使脚本包含 parfor 循环或 spmd 代码块,它也不会在集群上打开额外的工作单元池。这些代码块在用于批处理作业的单个工作单元上执行。如果您的批处理脚本需要打开额外的工作单元池,您可以从命令行运行它,如使用并行池运行批处理作业中所述。

从“文件”面板运行批处理作业时,也会打开“作业监控程序”。作业监控程序是一种可以让您跟踪调度器队列中的作业的工具。有关作业监控程序及其功能的更多信息,请参阅 作业监控程序

另请参阅

主题