如何配置批处理脚本以使用 future.batchtools (SLURM) 并行化 R 脚本

Mic*_*l K 5 parallel-processing hpc future r slurm

我试图使用 future.batchtools 包在 SLURM HPC 上并行化 R 文件。虽然脚本在多个节点上执行,但它只使用 1 个 CPU 而不是可用的 12 个。

到目前为止,我尝试了不同的配置(参见附上的代码),但都没有达到预期的结果。我的 bash 文件配置如下:

#!/bin/bash
#SBATCH --nodes=2
#SBATCH --cpus-per-task=12

R CMD BATCH test.R output
Run Code Online (Sandbox Code Playgroud)

在 R 中,我使用 foreach 循环:

# First level = cluster
# Second level = multiprocess 
# https://cran.r-project.org/web/packages/future.batchtools/vignettes/future.batchtools.html
plan(list(batchtools_slurm, multiprocess))

# Parallel for loop
result <- foreach(i in 100) %dopar% {
       Sys.sleep(100)
return(i) 
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以指导我如何为多个节点和多个核心配置代码,我将不胜感激。

Geo*_*hov 0

由于您正在批量运行并使用多个节点,因此请考虑将 MPI 与mclapply的多核分支结合起来。这些更接近硬件中实际发生的情况,并提供每个节点的 R 实例数量和每个实例的核心使用之间的控制。示例 SLURM 和 PBS 脚本以及随附的 R 批处理脚本位于https://github.com/RBigData/mpi_balance中,说明了如何平衡多核和多节点并行性。