-
Notifications
You must be signed in to change notification settings - Fork 50
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
use case: heterogeneous clusters #4143
Comments
Thanks @ryanday36! There are (at least) three gaps here:
These gaps assume an approach using properties or tags associated with sets of resources. There are possibly other solutions here, including "partitioning" resources based on queues or similar (since we have no concept of partitions in Flux at this point.) One benefit of associating properties with resources is that "tagging" a resource with a given string could be potentially be used to implement a kind of partition support (e.g. by tagging a set of resources with a partition name or setting a (Sorry if the above was not at all helpful, just thought I'd get the discussion started) |
Ok, in a series of offline chats with @garlick we've come up with some ideas for the 3 gaps above: First, @garlick's suggestion to make this first cut as simple as possible is to introduce string "properties" at the execution target (broker rank, i.e. node) level only at this stage. This allows for the simple proposal introduced at a high level below.
Long term, it would probably be preferable to encode resource constraints like required properties in the Another point: if we get this working, we could give all nodes an implicit property of their hostname. Then with support for NOT, we could get a way to exclude hosts by name (#2413). |
@dongahn, if you have a chance, could you briefly comment if the above strategy will work for Fluxion property matching? If not, happy to quickly iterate on a simple solution that will work for us near term. |
@grondo: this is a good start! A few things to consider that can potentially make our short term effort be a bit more future proof.
|
Yes, If I understand the question correctly, in this proposal an execution target can have an arbitrary number of simple string properties.
At the flux-core and Rv1 level, we would treat Users could then use the constraint
Yes, a constraint could be any string, which opens the door to support more advanced logic down the road (e.g. I'm thinking that
Ok, you can check out my |
Yes.
This would even be better! I don't see us having to support multiple different types of GPUs on a node in anytime soon, though. Now that I think about this, in general we can treat the suffix string that comes after
Exactly! |
@grondo: I just played with your branch to see if I can easily propagate the rank-level properties to the resource types that comes after |
WIP is here |
@ryanday36 mentioned in flux-framework/flux-accounting#207:
I wanted to be sure to cross-reference that comment here, since up at the top of this issue @grondo suggested:
I don't think we've quite gotten to the tooling detail yet, but it would seem to make sense to give |
That might be tricky given the proposal for job constraints in flux-framework/rfc#314. Also, if the jobspec contains a request for a "queue" in some scheduler specific space in the jobspec, the jobspec might only encode the queue name itself not the property constraints associated with that queue, which is only known by the scheduler. I think there was some plan for a conformant scheduler to annotate jobs with the queue name, since by default no jobs would have this encoded in jobspec for query by the |
This has already been implemented in fluxion: I think the plan was to have a way to sort the job listing by the scheduler-annotated string queue names. Other properties can be piggybacked. |
Ok, it does appear that However, any requested queue is currently encoded in jobspec under the opaque, scheduler-specific
which seems user unfriendly. Additionally, all jobs enqueued which have not yet had an Because of these two issues, perhaps we should elevate the requested |
A correction on my part: it is actually Regardless, formatting queue into those RFCs make sense to me. fluxion annotates (or can annotate if not already) each queue unspecified job with the queue name where it is scheduled. It is already I like what you are proposing. We should formalize queue so that conforming schedulers can annotate a default queue name or flux-core front end can add one if the scheduler doesn't do it. |
Closing this issue with the landing of generic resource properties in flux-core 0.38.0 and the RFCs. Do we need to open new issue(s) on flux-core tooling for multiple queues? |
I believe so. It's been long enough I can't remember if there was already an existing ticket. But good to have a new ticket to keep track of things. |
use case: We have a cluster with multiple generations of nodes that we would like to schedule using a Flux system instance. The cluster has 82 nodes with 4 AMD MI50 gpus per node and 82 nodes with 4 AMD MI60 gpus per node. Users should be able to specify whether they want their job / instance to go on nodes with mi60 gpus or mi50 gpus. Ideally, they should also be able to specify specific combinations or that they don't care which generation of gpu they get.
The text was updated successfully, but these errors were encountered: