1

我一直在使用

qsub -t 1-90000 do_stuff.sh

在 Sun GridEngine 集群上提交我的任务,但现在发现自己使用的数据集(也超大的)不太方便命名。解决这个问题的最佳方法是什么?我可以尝试将它们全部重命名,但名称包含需要保留的信息,这显然会带来很多问题。我可以将所有内容预处理为 jsons,但如果有办法只使用 qsub -all_contents_of_directory,那将是理想的。

我是索尔吗?我应该去有问题的目录并找到 . -exec 'qsub setupscript.sh {}'?

4

4 回答 4

1

我倾向于使用 Makefiles 来自动化这些东西:

INPUTFILES=$(wildcard *.in)
OUTPUTFILES=$(patsubst %.in,%.out,$(INPUTFILES))

all : $(OUTPUTFILES)

%.out : %.in
        @echo "mycommand here < $< > $@" | qsub 

然后输入'make',所有文件都会提交给qsub。当然,这将一次性提交所有内容,这可能会对您的计算集群和系统管理员的血压造成不利影响。

如果删除“| qsub”,make 的输出是要运行的命令列表。将该列表输入一个或多个 qsub 命令,您将提高效率并减少 qsub 作业。为此,我一直在使用 GNU 并行,但它需要一个 qsub 阻塞直到工作完成。我写了一个包装器来做到这一点,但是它经常调用 qstat,这意味着对系统的大量访问。我应该以某种方式对其进行修改,但是这里没有很多计算上的“好”选项。

于 2012-02-15T23:35:27.387 回答
1

使用另一个脚本提交作业 - 这是我使用的示例,我希望作业名称中包含目录名称。“run_openfoam”是特定目录中的 pbs 脚本。

#!/bin/bash
cd $1
qsub -N $1 run_openfoam

您可以调整此脚本以适合您的工作,然后通过命令行上的循环运行它。因此,您无需提交作业数组,而是为作为第一个参数传递给此脚本的每个目录名称提交作业。

于 2012-02-05T01:05:37.467 回答
0

我无法理解您的 qsub 命令中的“-t 1-90000”。我对 qsub 手册的搜索没有显示这样的“-t”选项。

于 2011-11-11T04:18:14.897 回答
0

创建一个文件,其中包含数据集的列表 find . -print >~/list_of_datasets 脚本:

#!/bin/bash
exec ~/setupscript.sh $(sed -n -e "${SGE_TASK_ID}p" <~/list_of_datasets)

qsub -t 1-$(wc -l ~/list_of_datasets) job_script

于 2015-07-19T13:49:11.123 回答