在一个 pbs 作业中处理多个节点

Handle multiple nodes in one pbs job

我想同时让 5 个节点 运行 为我的 5 个样本分别执行相同的作业。与其手动编写和提交 5 个 pbs 文件,请问在一个 pbs 文件中处理它的常用方法是什么?

2016 年 5 月 12 日的一些更新:
  1. 就像@dbeer 指出的那样,pbsdsh 似乎是标准方法,如果作业彼此相同,那将非常方便。对于我的特殊情况,我需要为每个样本生成 .sh 文件并仔细命名它们,以便我可以利用 $PBS_VNODENUM。以下是一些有用的示例代码:

https://wikis.nyu.edu/display/NYUHPC/PBSDSH

http://hpc-uit.readthedocs.io/en/latest/help/faq.html#how-can-i-run-in-parallel-without-using-mpi

http://arc-ts.umich.edu/software/torque/job-arrays/

关于类似问题的现有 post:PBS/TORQUE: how do I submit a parallel job on multiple nodes?

  1. 然而,我最终使用 python 为每个样本生成 pbs 文件,并在同一个 python 文件中循环单独地对它们进行 qsub。我不认为这是太多的额外工作。只需确保在每次提交之间有系统休眠时间。 (Here是使用python提交pbs的例子)

在 Torque 中处理这个问题的真正基本方法(假设 pbs 在这种情况下是 Torque)如果你想 运行 每个节点上的主机名你可以有一个脚本 dash.sh:

#!/bin/bash

/usr/local/bin/pbsdsh hostname # change path if you have a non-default installation

然后:

qsub dash.sh -l nodes=5

不带参数的 pbsdsh 将在作业的 $PBS_NODEFILE 中指定的主机上为作业中的每个执行槽启动一个主机名实例。有不同的参数来控制它的行为,这些可以在 pbsdsh 的联机帮助页中找到。