Есть ли способ изменить ресурсы кластера, выделенные в будущем, при использовании функции furrr?

Я использую пакеты future, future.batchtools и furrr в своем скрипте R для запуска кода на slurm -управляемая удаленная машина.

Когда я определяю свою будущую топологию, я передаю файл шаблона в future.bacthtools::batchtools_slurm() и определяю вычислительные ресурсы для заданий slurm с аргументом resources =.

Когда я затем запускаю функцию furrr::future_pwalk(), каждое будущее оценивается с помощью одних и тех же ресурсов, а именно тех, которые я определил в batchtools_slurm().

Есть ли способ, чтобы задания использовали разные ресурсы, в зависимости от переменной, переданной в furrr::future_pwalk()?

Заранее благодарю за любую помощь!


person Johannes Koch    schedule 30.10.2020    source источник


Ответы (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 %>")'
person Stefano Vespucci    schedule 18.02.2021