Dear group,
I fail to set per-process resources in my Nextflow scripts. Whenever I use the "memory" directive, I get the following error:
N E X T F L O W ~ version 0.25.5
Launching `SampleQCI.nf` [adoring_bose] - revision: 23ead138ca
[warm up] executor > slurm
ERROR ~ No signature of method: nextflow.util.MemoryUnit.multiply() is applicable for argument types: (groovy.util.ConfigObject) values: [[:]]
Possible solutions: multiply(java.lang.Number)
-- Check script 'test.nf' at line: 295 or sie '.nextflow.log' file for more details This is one of my failing processes:
process rewrite_plink {
memory 8.GB
input:
file plink from raw_input
output:
file "out-{bed,bim,fam}" into pruned
script:
base = plink[0].baseName
"""
plink --bfile ${base} --make-bed --out out --allow-no-sex
"""
} I'm running this script on a SLURM-based cluster in singularity containers. After commenting out all memory and cpus directives, everything works well. That is, apart from the job scheduler killing my jobs every now and then for using too much memory. My configuration contains the following:
process {
executor = 'slurm'
memory = { 4.GB * task.attempt }
cpus = { 1 * task.attempt }
time = { 1.h * task.attempt }
errorStrategy = { task.exitStatus == 143 ? 'retry' : 'finish' }
maxRetries = 3
container = '.....'
}
What am I doing wrong?
Best,
Jan