Open jgolob opened 1 month ago
Note that since a label is essentially a shorthand for a group of process directives, you can accomplish the same by making those process directives dynamic. For example since you mentioned memory and queue:
process {
memory = { task.attempt > 1 ? 16.GB : 8.GB }
queue = { task.attempt > 1 ? 'high-memory' : 'regular' }
}
@bentsherman Absolutely.
But with dynamic labels my hope is to keep the details of an HPC / computational environment abstracted away in the config file, and not hard-wired into each process definition.
For example, queue
names will not have a regular pattern (particularly academic / private clouds).
You can already do that, the example I gave is what you would put in the config file
New feature
I would propose allowing dynamic definition of the
label
directive in a process, to allow the following to be a valid directive in a process definition:Usage scenario
It would support the very common use case when needing more memory than is available in one queue to switch not just the memory requested but also the queue (and potentially even engine). Specific examples would be:
This would require the appropriate entries in the config file, but allow for this to be done once for all processes and workflows.
Suggest implementation
I am no wizard at groovy or java and have no specific suggestion. I apologize.