主要内容

运行批处理并行作业

运行批处理作业

从MATLAB中卸载工作®会话在另一个会话中运行在后台,可以使用批处理命令。

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

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

    if (i = 1, i = 1, i = 1, i = 1, i = 1);结束
  3. 保存文件并关闭编辑器。

  4. 使用批处理在MATLAB命令窗口中运行你的脚本在一个单独的MATLAB工作者:

    作业=批处理(“mywave”)

  5. 批处理不会阻塞MATLAB,您可以继续工作,而计算发生。如果您需要阻塞MATLAB直到工作完成,使用等待函数在job对象上执行。

    等待(工作)
  6. 作业完成后,您可以检索并查看其结果。的负载command将worker中创建的变量转移到客户端工作区,在那里你可以查看结果:

    负载(工作,“一个”图(一)
  7. 作业完成后,永久删除其数据并从工作区中删除其引用:

    删除(工作)清晰工作

批处理在本地工作器或集群工作器上运行代码,但不需要并行池。

您可以使用批处理运行脚本或函数。要了解更多信息,请参见批处理参考页面。

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

您可以将功能组合卸载作业并在并行池中运行循环。此示例结合了两个创建简单批处理parfor循环。

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

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

    parforif (i = 1, i = 1, i = 1, i = 1, i = 1);结束
  3. 保存文件并关闭编辑器。

  4. 在MATLAB中运行脚本批处理命令。指示脚本应该为循环使用并行池:

    作业=批处理(“mywave”,“池”3)

    该命令指定三个工作人员(除了运行批处理脚本的人员)来评估循环迭代。因此,这个示例总共使用了四个本地工作者,包括一个运行批处理脚本的工作者。总共有五个MATLAB会话,如下图所示。

  5. 查看结果:

    等待(工作)加载(工作,“一个”图(一)

    结果看起来和以前一样,但是,在执行上有两个重要的区别:

    • 定义的工作parfor循环和累积其结果被卸载到另一个MATLAB会话批处理

    • 循环迭代从一个MATLAB工作者分配到另一组同时运行的工作者(“池”parfor),因此这个循环可能比只有一个worker执行它运行得更快。

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

    删除(工作)清晰工作

从当前文件夹浏览器运行脚本作为批处理作业

在当前文件夹浏览器中,可以通过浏览文件的文件夹、右键单击文件并选择,将MATLAB脚本作为批处理作业运行以批处理作业的形式运行脚本。批处理作业在默认集群概要文件标识的集群上运行。下图显示了运行脚本文件的菜单选项script1.m:

在浏览器中以批处理方式运行脚本只需要集群中的一个worker。所以即使脚本包含parfor循环或spmd块时,它不会在集群上打开额外的工作池。这些代码块在用于批处理作业的单个工作器上执行。如果批处理脚本需要打开额外的工作人员池,您可以从命令行运行它,如中所述使用并行池运行批处理作业

在浏览器中运行批处理作业时,还会打开作业监视器。作业监视器是一种工具,它允许您在调度器队列中跟踪作业。有关作业监视器及其功能的更多信息,请参见监控工作

另请参阅

相关话题