forked from nf-core/configs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcambridge.config
More file actions
82 lines (67 loc) · 2.79 KB
/
cambridge.config
File metadata and controls
82 lines (67 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// nf-core/configs: Cambridge CSD3 cluster profile
// Available partitions:
// - icelake : 76 CPUs, 256 GB RAM
// - icelake-himem : 76 CPUs, 512 GB RAM
// - sapphire : 112 CPUs, 512 GB RAM
//
// The profile defaults to the broadly available `icelake` partition but allows
// users to override it with `--partition`. Walltime is inferred from the SLURM
// account name when possible: projects containing `-SL3-` use a 12 h cap,
// otherwise the profile assumes the common SL1/SL2 36 h limit.
params {
config_profile_description = 'Cambridge HPC CSD3 cluster profile.'
config_profile_contact = 'Raquel Manzano (rm889@cam.ac.uk) and Andries van Tonder (ajv37@cam.ac.uk)'
config_profile_url = 'https://docs.hpc.cam.ac.uk/hpc'
partition = 'icelake'
project = null
// Compatibility with nf-core schema validation across pipeline versions.
schema_ignore_params = 'partition,project,max_memory,max_cpus,max_time,csd_time,csd_parts,csd_selected,validationSchemaIgnoreParams'
validationSchemaIgnoreParams = 'partition,project,max_memory,max_cpus,max_time,csd_time,csd_parts,csd_selected,schema_ignore_params,validationSchemaIgnoreParams'
}
validation {
ignoreParams = ['partition', 'project', 'max_memory', 'max_cpus', 'max_time', 'csd_time', 'csd_parts', 'csd_selected', 'schema_ignore_params', 'validationSchemaIgnoreParams']
}
params.csd_time = {
params.project?.toUpperCase()?.contains('-SL3-') ? 12.h : 36.h
}.call()
params.csd_parts = [
icelake : [memory: 256.GB, cpus: 76, time: params.csd_time],
'icelake-himem': [memory: 512.GB, cpus: 76, time: params.csd_time],
sapphire : [memory: 512.GB, cpus: 112, time: params.csd_time]
]
params.csd_selected = {
def selected = params.csd_parts[params.partition]
if (!selected) {
System.err.println("ERROR: cambridge params.partition must be one of 'icelake', 'icelake-himem', or 'sapphire' (got '${params.partition}').")
System.exit(1)
}
selected
}.call()
params.max_memory = params.csd_selected.memory
params.max_cpus = params.csd_selected.cpus
params.max_time = params.csd_selected.time
singularity {
enabled = true
autoMounts = true
}
process {
resourceLimits = params.csd_selected
beforeScript = """
. /etc/profile.d/modules.sh
module purge
module load rhel8/default-${params.partition == 'sapphire' ? 'sar' : 'icl'}
"""
executor = 'slurm'
queue = params.partition
clusterOptions = { params.project ? "--account=${params.project}" : '' }
cache = 'lenient'
scratch = true
}
executor {
name = 'slurm'
queueSize = 200
pollInterval = '5 min'
queueStatInterval = '5 min'
submitRateLimit = '10 sec'
exitReadTimeout = '30 min'
}