-->

设置SGE与不同节点上不同的输入文件上运行一个可执行(Setting SGE for running

2019-10-21 17:26发布

我曾经用SLURM调度集群的工作,但现在我或多或少被迫改为基于SGE-集群,和我想要得到它挂起。 我工作SLURM系统上的事情涉及到运行,使用N输入文件的可执行文件,并以这种方式设置SLURM配置文件,

slurmConf.conf SLURM configuration file
    0   /path/to/exec /path/to/input1
    1   /path/to/exec /path/to/input2
    2   /path/to/exec /path/to/input3
    3   /path/to/exec /path/to/input4
    4   /path/to/exec /path/to/input5
    5   /path/to/exec /path/to/input6
    6   /path/to/exec /path/to/input7
    7   /path/to/exec /path/to/input8
    8   /path/to/exec /path/to/input9
    9   /path/to/exec /path/to/input10

而在SLURM我的工作提交脚本包含此线;

srun -n $SLURM_NNODES --multi-prog $slconf
$slconf refers to a path to that configuration file

这种设置工作,因为我想要的 - 在同一时间有10个节点运行10级不同的输入可执行文件。 现在,我只是转移到SGE系统,我希望做同样的事情,但我试着去阅读使用手册,发现没有很喜欢SLURM。 你能告诉我如何实现SGE系统上同样的事情,一些轻?

非常感谢你!

Answer 1:

您可以使用网格引擎的“作业阵列”功能。

创建一个shell脚本sge_job.sh

#!/bin/sh
#
# sge_job.sh -- SGE job description script
#
#$ -t 1-10
/path/to/exec /path/to/input$SGE_TASK_ID

并提交这个脚本,以上海黄金交易所qsub

qsub sge_job.sh


Answer 2:

德米特里Chubarov的答案是优秀的,并进行最可靠的方法,因为它提交许多作业(> 1000)时,则以提交节点上的负担较小。 或者,你可以用qsub在for循环中:

for i in {1..10}
do
    echo "/path/to/exec /path/to/input${i}" | qsub
done

我有时使用上述任何时变化作为输入不容易作为一个范围内的整数的捕获。

例:

for f in `ls /some/path/input*`
do
    echo "/path/to/exec ${f}" | qsub
done


文章来源: Setting SGE for running an executable with different input files on different nodes