diff --git a/conf/alliance_canada.config b/conf/alliance_canada.config index 3b963fcbe..cb12acbd3 100644 --- a/conf/alliance_canada.config +++ b/conf/alliance_canada.config @@ -1,11 +1,30 @@ params { - config_profile_description = 'Alliance Canada HPC config' - config_profile_contact = 'Jerry Li (@jerryakii)' + config_profile_contact = 'Cian Monnin (github/CMonnin)' config_profile_url = 'https://docs.alliancecan.ca/wiki/Nextflow' + // default to narval settings if no cluster_name defined + cluster_name = System.getenv('CC_CLUSTER') ?: 'narval' + + config_profile_description = params.cluster_name == 'narval' ? 'Alliance Canada (Narval) cluster profile provided by nf-core/configs.' : + params.cluster_name == 'fir' ? 'Alliance Canada (Fir) cluster profile provided by nf-core/configs.' : + params.cluster_name == 'nibi' ? 'Alliance Canada (Nibi) cluster profile provided by nf-core/configs.' : + params.cluster_name == 'rorqual' ? 'Alliance Canada (Rorqual) cluster profile provided by nf-core/configs.' : + params.cluster_name == 'trillium' ? 'Alliance Canada (Trillium) cluster profile provided by nf-core/configs.' : + 'Alliance Canada HPC config' + + max_cpus = params.cluster_name == 'nibi' ? 192 : + params.cluster_name == 'rorqual' ? 192 : + params.cluster_name == 'fir' ? 192 : + params.cluster_name == 'trillium' ? null : + 64 + max_memory = + params.cluster_name == 'narval' ? 249.GB : + params.cluster_name == 'nibi' ? 750.GB : + params.cluster_name == 'rorqual' ? 750.GB : + params.cluster_name == 'fir' ? 750.GB : + params.cluster_name == 'trillium' ? null : + 240.GB max_time = 168.h - max_cpus = 64 - max_memory = 240.GB } cleanup = true @@ -16,109 +35,42 @@ singularity { } apptainer { - autoMounts = true } + autoMounts = true +} // Group name for resource allocation must be supplied as environment variable process { executor = 'slurm' - clusterOptions = "--account=${System.getenv('SLURM_ACCOUNT')}" + clusterOptions = params.cluster_name == 'trillium' ? "--account=${System.getenv('SLURM_ACCOUNT')} --nodes=1": "--account=${System.getenv('SLURM_ACCOUNT')}" maxRetries = 1 errorStrategy = { task.exitStatus in [125,139] ? 'retry' : 'finish' } - cpu = 1 - time = '3h' + cpus = 1 + time = '1h' + +// NOTE: +// these resourceLimits are set to baseline CPU for each cluser +// Currently missing are configs for GPUs + resourceLimits = [ - memory: 240.GB, - cpus: 64, - time: 168.h - ] + cpus: params.cluster_name == 'nibi'? 192 : + params.cluster_name == 'rorqual' ? 192 : + params.cluster_name == 'fir' ? 192 : + params.cluster_name == 'trillium' ? null: + 64, + memory: params.cluster_name == 'narval' ? 249.GB : + params.cluster_name == 'nibi' ? 750.GB : + params.cluster_name == 'rorqual' ? 750.GB : + params.cluster_name == 'fir' ? 750.GB : + params.cluster_name == 'trillium' ? null : + 240.GB, + time: 168.h + ] + } executor { pollInterval = '60 sec' submitRateLimit = '60/1min' - queueSize = 100 -} - -// Cluster name is available as environment variable -// If not found, default to narval as it has the lowest limits -hostname = "narval" -try { - hostname = "${System.getenv('HOSTNAME')}" -} catch (java.io.IOException e) { - System.err.println("WARNING: Could not determine current cluster, defaulting to narval") + queueSize = params.cluster_name == 'trillium' ? 500 : 100 } -// Cluster Narval -if (hostname.startsWith("narval")) { - params.config_profile_description = 'Alliance Canada (Narval) cluster profile provided by nf-core/configs.' - params.max_memory = 249.GB - params.max_cpus = 64 - process { - resourceLimits = [ - memory: 249.GB, - cpus: 64, - time: 168.h - ] - } -} - -// Cluster Rorqual -if (hostname.startsWith("rorqual")) { - params.config_profile_description = 'Alliance Canada (Rorqual) cluster profile provided by nf-core/configs.' - params.max_memory = 750.GB - params.max_cpus = 192 - process { - resourceLimits = [ - memory: 750.GB, - cpus: 192, - time: 168.h - ] - } -} - -// Cluster Trillium -if (hostname.startsWith("tri")) { - params.config_profile_description = 'Alliance Canada (Trillium) cluster profile provided by nf-core/configs.' - params.max_memory = null - params.max_cpus = null - process { - clusterOptions = "--account=${System.getenv('SLURM_ACCOUNT')} --nodes=1" - resourceLimits = [ - time: 168.h - ] - } - executor { - queueSize = 500 - } -} - -// Cluster Nibi -if (hostname.contains("nibi")) { - params.config_profile_description = 'Alliance Canada (Nibi) cluster profile provided by nf-core/configs.' - params.max_memory = 750.GB - params.max_cpus = 192 - process { - resourceLimits = [ - memory: 750.GB, - cpus: 192, - time: 168.h - ] - } -} - -// Cluster Fir -// not sure what the hostname is so set it as a profile -profiles { - fir { - params.config_profile_description = 'Alliance Canada (Fir) cluster profile provided by nf-core/configs.' - params.max_memory = 750.GB - params.max_cpus = 192 - process { - resourceLimits = [ - memory: 750.GB, - cpus: 192, - time: 168.h - ] - } - } -}