Skip to content

submit_slurm_job Reference

This guide assumes you are familiar with submitting NONMEM jobs using the default arguments, and are looking for more control over you job submission. We’ll cover each argument to submit_slurm_job and overriding the default. You should be able to combine any combination of arguments to suit your needs.

Using the partition & ncpu arguments

By default, submit_slurm_job uses the smallest partition available to you. This could be something like cpu2mem4gb. For models requiring more memory or CPUs, you can specify these arguments to better suit your needs. To view available partitions, refer to get_slurm_partitions.

specifying a higher memory partition

submit_job.R
library(slurmtools)
library(bbr)
mod <- bbr::read_model(file.path("path", "to", "nonmem", "models", "1001"))
submit_slurm_job(mod, partition = "cpu16mem128gb")

Using more cores with ncpu

Set ncpu to any number up to the number of cores in your partition. For instance, with the cpu16mem128gb partition, ncpu can be set from 1 to 16.

submit_job.R
library(slurmtools)
library(bbr)
mod <- bbr::read_model(file.path("path", "to", "nonmem", "models", "1001"))
submit_slurm_job(mod, partition = "cpu16mem128gb", ncpu = 8)

Using the overwrite argument

By default, submit_slurm_job will not overwrite previously run models. Set overwrite = TRUE to override this.

submit_job.R
library(slurmtools)
library(bbr)
mod <- bbr::read_model(file.path("path", "to", "nonmem", "models", "1001"))
submit_slurm_job(mod, overwrite = TRUE)

Using the dry_run argument

By default, dry_run = FALSE and the sbatch command is executed. Setting dry_run = TRUE allows you to preview the template file without submitting it.

submit_job.R
library(slurmtools)
library(bbr)
mod <- bbr::read_model(file.path("path", "to", "nonmem", "models", "1001"))
submit_slurm_job(mod, dry_run = TRUE)

This gives the following output

$cmd
sbatch
"/opt/slurm/bin/sbatch"
$args
[1] "/path/to/nonmem/models/submission-log/1001.sh"
$template_script
[1] "#!/bin/bash <rest of template omitted>"
$partition
[1] "cpu16mem64gb"

Using the slurm_job_template_path argument

By default, submit_slurm_job uses getOption('slurmtools.slurm_job_template_path') for the path to the template file (see Getting Started Guide if you’re unfamiliar with the slurmtools options). You can update this argument to use a different template file as needed.

submit_job.R
library(slurmtools)
library(bbr)
nonmem_path <- file.path("path", "to", "nonmem", "models")
mod <- bbr::read_model(file.path(nonmem_path, "1001"))
submit_slurm_job(
mod,
slurm_job_template_path = file.path(nonmem_path, "new-slurm-job.tmpl")
)

Using the submission_root argument

This directory is used to track submission scripts and output. It will be populated with the shell scripts created from filling in the template file when calling submit_slurm_job and the stdout/stderr from the bash script. If you would like to set it and forget it use the slurmtools option options('slurmtools.submission_root') (see the Getting Started Guide if you are unfamiliar with this option). If you’d like to set this at runtime simply provide the path to the directory you’d like to save the output to.

submit_job.R
library(slurmtools)
library(bbr)
nonmem_path <- file.path("path", "to", "nonmem", "models")
mod <- bbr::read_model(file.path(nonmem_path, "1001"))
submit_slurm_job(
mod,
slurm_job_template_path = file.path(nonmem_path, "new-slurm-job.tmpl")
)

Using the bbi_config_path argument

If you are using bbi to submit nonmem jobs this specifies the path to the bbi config file bbi.yaml. By default, submit_slurm_job uses the slurmtools option options('slurmtools.bbi_config_path) (see the Getting Started Guide if you are unfamiliar with this option). If you would like to use a different configuration for bbi you can specify the path to a new config file and use that.

submit_job.R
library(slurmtools)
library(bbr)
nonmem_path <- file.path("path", "to", "nonmem", "models")
mod <- bbr::read_model(file.path(nonmem_path, "1001"))
submit_slurm_job(
mod,
bbi_config_path = file.path(nonmem_path, "new-bbi.yml")
)

Using the slurm_template_opts argument

If additional arguments are needed in your template file, pass them via slurm_template_opts as a named list. For example, to set an email for notifications:.

submit_job.R
library(slurmtools)
library(bbr)
mod <- bbr::read_model(file.path("path", "to", "nonmem", "models", "1001"))
submit_slurm_job(
mod,
slurm_template_opts = list("email" = "matthews@a2-ai.com")
)

This will cause any instances of {{email}} in your template file to be replaced with matthews@a2-ai.com. If you are unfamiliar with template file structure, please see the guide on writing template files