gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:13:31 27 4
gpt4 key购买 nike

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

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

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

R CMD BATCH test.R output

在 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)
}

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

最佳答案

有多种使用 Slurm 并行化 R 作业的方法。需要注意的几点:

  • 您可以使用具有多个核心的单个节点,在这种情况下 mclapply是一种不错的替代方案,因为原则上与 parLapply 相比,速度更快,内存效率更高。 .
  • 您可以使用 JOB arrays with Slurm ,这意味着您可以编写一个 R 脚本,Slurm 将指定选项 --array=1-[# of replicates] 多次运行。 .您可以使用 SLURM_ARRAY_TASK_ID 指定在每个作业中执行的操作。环境变量(您可以在 R 中使用 Sys.getenv("SLURM_ARRAY_TASK_ID") 捕获它)。并使用条件 if/else基于此的声明。
  • @george-ostrouchov 提到,您可以使用 MPI,为此您需要拥有 Rmpi包已安装,但有时可能会有点痛苦。
  • 您可以尝试的另一件事是使用并行包创建 SOCKET 集群对象。这将是一个多节点集群,允许您使用 parLapply 跨越计算。和其他跨多个节点。

  • 我确实有一个教程,其中解释了这些选项以及如何使用 slurmR包(我正在处理,很快在 CRAN 上)或 rslurm (已经在 CRAN 上)。可以看教程 here .

    关于r - 如何配置批处理脚本以使用 future.batchtools (SLURM) 并行化 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57222482/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com