-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nodelist #200
Comments
See also this issue in the job-api-spec repo. |
In my tests on LLNL:
LLNL_COMPUTE_NODES is the best but not portable. |
So I posted this on Slack, but I'm adding here for posterity. It's from https://slurm.schedmd.com/srun.html.
It's a hack because the task of translating the Slurm hostfile into an mpirun hostfile is the task of a translator (i.e., parser + generator) not by running distributed job. But it's brilliant because the only LRM-specific thing is the string |
Point being, does |
It works if you add |
Note that this can consume a significant amount of time, whereas the interpretation of the system specific env variable and files is more complex and less portable, but also much faster (at scale). We do have some python code which generates a nodelist for ccm, cobalt, lsf, pbspro, slurm and torque, so we could extract this from RP (or rewrite, it's fairly simple). The code lives here -- have a look at the individual BTW: not all systems make it easy to obtain |
The guess is on whether it works or on why it doesn't? (i.e., I'm entirely clear on whether you tried without -c ALL_CPUS or not) |
That's what worries me, too. But there's a question we probably should ask. Is this time on the same order of magnitude as starting the actual job or is there a significant penalty not due to the srun, but due to the output collection? If the first, the maybe the penalty is acceptable given the portability. In all cases, and I know changes to the spec should be rare, but maybe it may make sense to protect this operation with a flag? |
Yeah it didn't work without |
I think the best approach would be to let different systems do different implementations. With LSF, maybe it makes sense to use |
I agree with that. |
Yes. If an executor has reasonable access to the hostlist, it should use that. We should also test and see what the delay of running hostname is compared to the time it takes to launch the user job so that we know whether it's worth investing into alternative methods for non-flux executors. |
Yeah, measuring this is useful. The time will depend on the number of nodes though, so we should be careful to measure this at scale. |
My preference would just be do the easy thing, whatever that is, and then update the implementation once someone starts complaining... |
A few days of work could save us a few hours of planning! :) |
Decide whether this should be part of 0.1.0. General 'feeling' is that this should not be but need general confirmation/agreement. As a side note, we should also decide on a release schedule after reaching 0.1.0. |
Agreed, seems reasonable to push to 0.2.0 release. |
A Python tool for slurm hostlists: https://www.nsc.liu.se/~kent/python-hostlist/ |
Nodelists have been supported since 0.9.4 |
Libensemble would like to have access to a nodelist on different systems. They also have some code for several schedulers that could be used as a basis for this.
The text was updated successfully, but these errors were encountered: