【问题标题】:Run PBS script and post-process output within bash script在 bash 脚本中运行 PBS 脚本和后处理输出
【发布时间】:2013-08-22 14:21:21
【问题描述】:

我有一堆作业要提交到 PBS 队列,之后应该在本地对输出进行后处理。由于作业相似(而且我不想经常手动更改它),我自己编写了一个 bash 脚本,它在本地生成一个 PBS 作业脚本,然后提交作业。 我的问题如下:如何让我的 bash 脚本等到 PBS 作业完成然后开始后处理? (不断检查作业的状态不是一种选择。)我有什么可能这样做?

非常感谢所有提示、提示或解决方案!

编辑:如评论中所示(谢谢),一些编辑:

  • PBS = 便携式批处理系统
  • 文档可在此处获得:http://resources.altair.com/pbs/documentation/support/PBSProUserGuide12.1.pdf
  • 我考虑了可能的解决方案,但想出了以下一个不起作用的解决方案:我可以让我的 bash 脚本等待所请求的时间作为工作的挂钟时间。但是,有两个复杂性:首先,作业可能不需要那么多时间并提前终止,因此 bash 脚本等待时间过长;其次,作业可能会被排队并且不会立即执行,因此 bash 脚本可能等待的时间太短。

编辑 2: 由于我不确定我是否总是可以按照下面的建议以交互方式运行,所以我考虑了以下问题:我让 PBS 作业脚本在完成之前创建一个(空)文件。我的 bash 脚本每隔几分钟(例如)检查该文件是否存在(使用 while 循环)。如果存在,我知道该作业已终止,可以通过删除刚刚创建的(空)文件开始后处理。这样,我最多只能延迟几分钟,并且不需要任何资源。这绝对不是理想的,而是一种解决方法。 任何更实用的想法都会受到高度赞赏。

感谢任何想法,即使与 PBS 没有直接关系。

卡里

【问题讨论】:

  • 考虑为pbs(在美国意味着公共广播系统)的文档添加一个链接。请注意,pbs 只有 18 个关注者,因此这可能不是一种广泛理解的技术。也就是说,S.O.不是免费的编码服务,您应该尝试解决您的问题并在您的问题中发布该代码(格式正确)。祝你好运。

标签: bash jobs pbs


【解决方案1】:

我不相信 PBSPro 支持这一点,但 TORQUE(另一种 PBS 衍生产品)有一个您可能感兴趣的 -x 选项。您可以提交这样的工作:

qsub -I -x <executable>

这将以交互方式运行您的作业并运行可执行文件,并将所有输出定向到您的终端,并且该作业将在该可执行文件终止后立即执行。然后您就可以开始后处理了。 PBSPro 可能有类似的功能,但我在这里描述的是 TORQUE。

【讨论】:

  • 谢谢!这听起来不仅对上述问题非常有用。但是,我不确定我是否可以始终以交互方式运行该作业。我一定会看看的!
【解决方案2】:

这与an answer I wrote to a different question 有关。我可以使用校园高性能计算中心的几台机器。在至少一个集群上,允许从父 PBS 脚本调用qsub。这允许按照this page 中的描述进行作业链接。因此,您也许可以使用类似以下骨架的解决方案:

# ...do your PBS stuff
# launch your code on the cluster that creates, say "JOBID.txt"
parallel -j0 mycode.sh

# you may need to use PBS environment variables to figure out what your output file is called
filename=$${PBS_JOBID%%.*}.txt # e.g., this would be like the JOBID.txt I wrote above

# next, use qsub to launch the post-processing script
echo "${PBS_O_WORKDIR}/postprocess.pbs $filename" | qsub

posprocess.pbs 会将要处理的文件名作为参数。在我链接到的答案中,这对我来说可以在完成后将 PBS 标准输出文件复制到另一个文件。但是,我不确定可能的竞争条件,您可能需要使用 -W depend= qsub 选项,类似这样(未测试):

echo "-W depend=afterok:$PBS_JOBID postprocess.pbs $filename" | qsub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多