Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 22 additions & 28 deletions conf/sage.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Config profile metadata
params {
config_profile_description = 'The Sage Bionetworks Nextflow Config Profile'
config_profile_contact = 'Bruno Grande (@BrunoGrandePhD)'
config_profile_contact = 'Rixing Xu (@rxu17)'
config_profile_url = 'https://github.com/Sage-Bionetworks-Workflows'

// Leverage us-east-1 mirror of select human and mouse genomes
Expand All @@ -12,6 +12,9 @@ params {
max_time = 240.h
single_cpu_mem = 6.GB

// Define task exit errors
exit_status_scaling = [143,137,104,134,139,247]

warning_message = {
System.out.println("WARNING: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
System.out.println("WARNING:")
Expand Down Expand Up @@ -60,47 +63,38 @@ process {
// Enable retries globally for certain exit codes
errorStrategy = { task.attempt <= 5 ? 'retry' : 'finish' }

cpus = { 1 * factor(task, 2) }
memory = { 6.GB * factor(task, 1) }
time = { 24.h * factor(task, 1) }
cpus = { task.exitStatus in params.exit_status_scaling ? Math.ceil(task.attempt/2) : 1 }
memory = { 6.GB * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
time = { 24.h * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }

// Process-specific resource requirements
withLabel: process_single {
cpus = { 1 * factor(task, 2) }
memory = { 6.GB * factor(task, 1) }
time = { 24.h * factor(task, 1) }
cpus = { task.exitStatus in params.exit_status_scaling ? Math.ceil(task.attempt/2) : 1 }
memory = { 6.GB * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
time = { 24.h * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
}
withLabel: process_low {
cpus = { 2 * factor(task, 2) }
memory = { 12.GB * factor(task, 1) }
time = { 24.h * factor(task, 1) }
cpus = { 2 * (task.exitStatus in params.exit_status_scaling ? Math.ceil(task.attempt/2) : 1) }
memory = { 12.GB * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
time = { 24.h * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
}
withLabel: process_medium {
cpus = { 8 * factor(task, 2) }
memory = { 32.GB * factor(task, 1) }
time = { 48.h * factor(task, 1) }
cpus = { 8 * (task.exitStatus in params.exit_status_scaling ? Math.ceil(task.attempt/2) : 1) }
memory = { 32.GB * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
time = { 48.h * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
}
withLabel: process_high {
cpus = { 16 * factor(task, 2) }
memory = { 64.GB * factor(task, 1) }
time = { 96.h * factor(task, 1) }
cpus = { 16 * (task.exitStatus in params.exit_status_scaling ? Math.ceil(task.attempt/2) : 1) }
memory = { 64.GB * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
time = { 96.h * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
}
withLabel: process_long {
time = { 96.h * factor(task, 1) }
time = { 96.h * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
}
withLabel: 'process_high_memory|memory_max' {
memory = { 128.GB * factor(task, 1) }
memory = { 128.GB * (task.exitStatus in params.exit_status_scaling ? task.attempt : 1) }
}
withLabel: cpus_max {
cpus = { 32 * factor(task, 2) }
}
}

// Function to finely control the increase of the resource allocation
def factor(task, slow_factor = 1) {
if ( task.exitStatus in [143,137,104,134,139,247] ) {
return Math.ceil( task.attempt / slow_factor) as int
} else {
return 1 as int
cpus = { 32 * (task.exitStatus in params.exit_status_scaling ? Math.ceil(task.attempt/2) : 1) }
}
}
Loading