如何在多个节点上发送作业?

时间:2019-04-11 07:17:07

标签: r parallel-processing slurm

我有一个要在多个节点上执行的R代码(SLURM)。这是代码:

...
res<-foreach(i = seq_len(nrow(combs))) %dopar% {
 G1 <- split[[combs[i,1]]]
 G2 <- split[[combs[i,2]]]
 bind <- cbind(data[,G1], data[,G2])
 rho.i <- cor_rho(bind)     #the function cor_rho I created  
 }
...

实际上,它是几个子矩阵的比较,在这些子矩阵中,我使用函数cor_rho计算了每个子矩阵之间的相关性。 我想在集群的一个节点上执行每个比较。

有帮助吗?

最佳

1 个答案:

答案 0 :(得分:1)

您需要从bash脚本中调用R脚本,然后将其提交给SLURM,以请求一定数量的内核。

如果您的R代码在r_analysis.R文件中,则可以这样创建submit_job.sh文件:

#! /bin/bash

Rscript r_analysis.R

最后,您提交作业(例如从命令行),以请求一定数量的CPU(在此示例中为8个)和内存/ CPU(在此示例中为4G):

sbatch --mem-per-cpu=4G --cpus-per-task=8 ./submit_job.sh