使用选项--array作为Slurm中的参数

时间:2019-05-03 11:30:26

标签: slurm

是否可以使用--array选项作为参数?我的意思是,我在使用数组的地方有一个R代码。数组的数量取决于执行R代码的文件。我想将数组的数目作为参数传递到sbatch my_code.R命令行中,以便从不修改我的Slurm代码:例如,对于具有550.000列的文件,我将需要10个数组,一个具有1.000的文件.000列将需要19个数组,等等。我必须得到类似“ sbatch --array 1-nb_of_arrays_needed my_code.R”的内容。目的是使我的代码可供所有人使用,而无需用户更改代码#SBATCH --array=x-y

我的R代码(我没有完整显示):

data<-read.table(opt$file, h=T, row.names=1, sep="\t")+1

ncol=ncol(data)
nb_arrays=ncol/55000
nb_arrays=round(nb_arrays)
opt$number=nb_arrays

...

最佳

1 个答案:

答案 0 :(得分:0)

您的R脚本仅在计划作业后才启动。要进行计划,必须提交它,并且要提交,它必须知道--array的参数。

因此,您有两种选择:

将R脚本分成两个部分:一部分将在提交作业之前运行,另一部分将在作业启动时运行。第一部分将计算阵列中必要的作业数(并可能自动提交作业阵列),而第二部分将进行实际计算。

如果只希望使用一个R脚本,则可以根据环境中是否存在SLURM_JOB_ID变量来区分行为。如果不存在,则计算作业数,然后提交(如果存在),进行实际计算。

另一种选择是将提交作业中的--array设置为一个较大的值,并且当数组中的第一个作业开始时,它将计算所需的作业数,并取消多余的作业。 / p>