2011-09-02 48 views
1

我一直在使用QSUB一个目录中每个文件的进程?

qsub -t 1-90000 do_stuff.sh 

提交我的任务孙GridEngine集群上,但现在的数据集发现自己(超级大的,太)这是不那么方便而得名。什么是最好的方式去做这件事?我可以尝试将它们全部重命名,但名称中包含需要保留的信息,这显然会带来许多问题。我可以将所有东西都预处理成jsons,但是如果只有qsub -all_contents_of_directory的方法,那将是理想的。

我是SOL吗?我应该去问题目录并找到。 -exec'qsub setupscript.sh {}'?

回答

0

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

1

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

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

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

1

我倾向于使用Makefile文件自动执行此东西:

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

all : $(OUTPUTFILES) 

%.out : %.in 
     @echo "mycommand here < $< > [email protected]" | qsub 

然后键入“做”,和所有的文件将被提交给qsub命令。当然,这会一次提交所有内容,这可能会给计算集群和系统管理员的血压造成不幸的后果。

如果删除“| qsub”,make的输出是要运行的命令列表。将该列表放入一个或多个qsub命令中,可以提高效率并减少qsub作业。我一直在使用GNU并行,但它需要一个qsub,直到完成任务。我写了一个封装器来做这件事,但它调用了很多qstat,这意味着系统上会有很多命令。我应该以某种方式对其进行修改,但这里并没有很多计算上的“好”选项。

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

相关问题