3

我在我的 R 脚本中使用了futurefuture.batchtoolsfurrr包,以便在slurm管理的远程机器上运行代码。

当我定义我的未来拓扑时,我将一个模板文件传递给future.bacthtools::batchtools_slurm()并使用参数定义 slurm 作业的计算资源resources =

然后当我运行该furrr::future_pwalk()函数时,每个未来都使用相同的资源进行评估,即我在batchtools_slurm().

有没有办法让作业使用不同的资源,具体取决于传递给的变量furrr::future_pwalk()

提前感谢您的帮助!

4

1 回答 1

1

您可以事先调整未来的资源

library(future)
library("future.batchtools")
library(furrr)

slurm <- future::tweak(batchtools_slurm,
                       template = "slurm_batchtools.tmpl",
                       resources=list(
                         cores = 4
                       )
plan(slurm)

slurm_batchtools.tmpl 文件是

#!/bin/bash

#SBATCH --job-name=<%= job.name %>
#SBATCH --output=<%= log.file %>
#SBATCH --error=<%= log.file %>
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=<%= resources[["cores"]] %>
#SBATCH --mem-per-cpu=10000

<%= if (array.jobs) sprintf("#SBATCH --array=1-%i", nrow(jobs)) else "" %>
Rscript -e 'batchtools::doJobCollection("<%= uri %>")'
于 2021-02-18T04:01:20.570 回答