为了在slurm-managed远程机器上运行代码,我在R脚本中使用了未来的、和furrr包。
在定义未来的拓扑结构时,我将一个模板文件传递给future.bacthtools::batchtools_slurm(),并使用resources =参数定义slurm作业的计算资源。
然后,当我运行furrr::future_pwalk()函数时,每个未来都使用相同的资源(即我在batchtools_slurm()中定义的资源)进行评估。
是否有一种方法让作业使用不同的资源,取决于传递给furrr::future_pwalk()的变量
提前感谢您的帮助!
发布于 2021-02-18 04:01:20
您可以手动调整未来的资源。
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 %>")'https://stackoverflow.com/questions/64610676
复制相似问题