7

目前,我有一个驱动程序,它运行数千个“有效负载”程序实例并对输出进行一些后处理。驱动程序当前使用shell()函数从多个线程直接调用有效负载程序。该shell()函数在当前工作目录中执行一个命令,阻塞直到命令完成运行,并返回该命令发送到标准输出的数据。这在单个多核机器上运行良好。我想修改驱动程序以将qsub作业提交到大型计算集群,以获得更多并行性。

有没有办法让qsub命令将其结果输出到标准输出而不是文件并阻塞直到作业完成?基本上,我希望它尽可能地像“正常”执行命令一样,这样我就可以在尽可能少地修改我的驱动程序的情况下并行化到集群。

编辑:我认为所有的网格引擎都非常标准化。如果他们不是并且这很重要,我正在使用 Torque。

4

3 回答 3

4

您没有提及您正在使用什么排队系统,但 SGE 支持 qsub 的“-sync y”选项,这将导致它阻塞,直到作业完成或退出。

于 2011-05-12T20:19:08.413 回答
2

在 TORQUE 中,这是使用 -x 和 -I 选项完成的。qsub -I 指定它应该是交互式的,而 -x 表示只运行指定的命令。例如:

qsub -I -x myscript.sh

在 myscript.sh 完成执行之前不会返回。

于 2012-03-13T22:36:46.443 回答
1

在 PBS 中,您可以使用qsub -Wblock=true <command>

于 2016-09-16T06:15:39.717 回答