Build pipeline: viash-hub.htrnaseq.main-n8w4c
Source commit: 21831c2104
Source message: Fix well_demultiplex test
44 lines
1.5 KiB
Plaintext
44 lines
1.5 KiB
Plaintext
process {
|
|
// Default resources for components that hardly do any processing
|
|
memory = { 2.GB * task.attempt }
|
|
cpus = 1
|
|
|
|
// Retry for exit codes that have something to do with memory issues
|
|
errorStrategy = { task.exitStatus in 137..140 ? 'retry' : 'terminate' }
|
|
maxRetries = 3
|
|
maxMemory = null
|
|
|
|
// Resource labels
|
|
withLabel: singlecpu { cpus = 1 }
|
|
withLabel: lowcpu { cpus = 4 }
|
|
withLabel: midcpu { cpus = 10 }
|
|
withLabel: highcpu { cpus = 20 }
|
|
|
|
withLabel: lowmem { memory = { get_memory( 4.GB * task.attempt ) } }
|
|
withLabel: midmem { memory = { get_memory( 25.GB * task.attempt ) } }
|
|
withLabel: highmem { memory = { get_memory( 50.GB * task.attempt ) } }
|
|
withLabel: veryhighmem { memory = { get_memory( 75.GB * task.attempt ) } }
|
|
|
|
}
|
|
|
|
def get_memory(to_compare) {
|
|
if (!process.containsKey("maxMemory") || !process.maxMemory) {
|
|
return to_compare
|
|
}
|
|
|
|
try {
|
|
if (process.containsKey("maxRetries") && process.maxRetries && task.attempt == (process.maxRetries as int)) {
|
|
return process.maxMemory
|
|
}
|
|
else if (to_compare.compareTo(process.maxMemory as nextflow.util.MemoryUnit) == 1) {
|
|
return max_memory as nextflow.util.MemoryUnit
|
|
}
|
|
else {
|
|
return to_compare
|
|
}
|
|
} catch (all) {
|
|
println "Error processing memory resources. Please check that process.maxMemory '${process.maxMemory}' and process.maxRetries '${process.maxRetries}' are valid!"
|
|
System.exit(1)
|
|
}
|
|
}
|