Closed oiffrig closed 1 month ago
@oiffrig, I just had a chat with some colleagues from production who are running on LUMI and they need new options like "#SBATCH --partition=standard-g" and "#SBATCH --exclusive". At the moment, we always need to add manually the new options in pyflow, which is not very flexible. Couldn't we have a special key in the submit arguments (user_defined for instance) that would give a list of directives. For instance:
execution_contexts:
parallel:
nodes: 40
tasks_per_node: 8
user_defined:
- "#SBATCH --exclusive"
- "#SBATCH --partition=standard-g"
- "#TROIKA --my_troika_option=values"
It's the first design that comes out of my mind so happy to discuss if you have a better idea!
Could be an option, I don't have an issue with that. What I'm doing in Troika is allowing to configure a mapping that extends/overrides the set of directives. We could have something similar in pyflow, although such a mapping is very much host-dependent.
Also, Troika supports #TROIKA partition=foo
already, I just need to add it to the TroikaHost
That's a good point.. maybe we could extend the mapping in the constructor. We could then have a special configuration in wellies for atos or lumi for instance.
I was wondering, do you think it would be useful to pass all submit arguments to Troika, keeping the overrides where necessary? That way, if somebody wants to use a new Troika directive, they will not be limited by pyflow supporting it. We can easily keep the translation where needed.
I'm just wondering if we shouldn't just drop the translation and throw an error to force people to use the troika directives instead... It is the TroikaHost after all! EDIT: OK, maybe not an error but a deprecated warning ;)
(#31) Converts the Slurm directives in TroikaHost to Troika directives
WIP: directives kept as plain Slurm for now:
distribution
,reservation
are supported from Troika 0.2.2 only, support disabled for nowtmpdir
,sthost
are ECMWF-specific, and should be in the local Troika configuration rather than herehint
is not supported by Troika in its most general form, is it needed past--[no]multithread
?