如何使用Slurm在多个节点上拆分R回路?

时间:2019-05-19 20:00:17

标签: r slurm

我有一个R(RHO_COR.R)脚本,我想创建一个循环以便在几个节点上拆分作业。

我展示了我想创建循环的脚本部分。

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

res的不同结果存储在多个文件中。 combs是一个看起来像这样的向量(但是根据我的输入文件,它可以改变):

> combs
      [,1] [,2]
 [1,]    1    2
 [2,]    1    3
 [3,]    1    4
 [4,]    1    5
 [5,]    2    3
 [6,]    2    4
 [7,]    2    5
 [8,]    3    4
 [9,]    3    5
[10,]    4    5

我想在节点上发送combs的每一行。

这是我的错误代码:

#!/bin/bash
#SBATCH -o job-%A_task.out
#SBATCH --job-name=paral_cor
#SBATCH --partition=normal
#SBATCH --time=1-00:00:00
#SBATCH --mem=126G  
#SBATCH --cpus-per-task=32

#Set up whatever package we need to run with

module load gcc/8.1.0 openblas/0.3.3 R

# SET UP DIRECTORIES

OUTPUT="$HOME"/$(date +"%Y%m%d")_parallel_nodes_test
mkdir -p "$OUTPUT"

export FILENAME=~/RHO_COR.R

#Run the program

Rscript $FILENAME > "$OUTPUT"

我不想使用数组。我想知道是否创建一个seq_len(nrow(combs)的参数可以解决吗?

for i in my_argument
 do Rscript $FILENAME -i > "$OUTPUT"
done

0 个答案:

没有答案