-
Notifications
You must be signed in to change notification settings - Fork 900
coll/HAN: Don't DQ HAN dynamic @ intra-node subcomm + typo fixes #10458
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
Conversation
Can one of the admins verify this patch? |
ok to test |
Fixing the typos is good, but enabling HAN at the node level needs to be backed by some evidence. Why is this necessary ? In which case this leads to improved performance ? |
This doesn't actually allow HAN to run at the node-level, but rather HAN's intra-node subcommunicator. (note the added INTRA_NODE check in the diff) When mca_coll_han_comm_create_new creates the inter/intra comms, it sets the INTRA_NODE/INTER_NODE info keys. These sub-comms also use HAN (#10456). HAN's dynamic functions detect if the current communicator is a sub-communicator, via the info key (topo_lvl), and they delegate to the respective component. |
The first part of the check will only succeed if all processes are local (aka spawned by the same RTE daemon). I don't think that can happen for an INTRA comm. |
This is the path that I have in mind:
|
In the current code the step 7 will be skipped, and the control is going directly from your step 6 to your step 8. This brings me back to my original question, is there a realistic need to give the control back to HAN on our own communicators ? The only reason I can see, is if we want to support multiple levels, but I might have missed something. |
Oh I understand, I believe step 7 is necessary in order for HAN to decide which component/module should be called for the intra-node level. Unlike the non-dynamic path where this is decided at split-time, in the dynamic it is decided when the collective is called. Without this change, the component that gets used for the intra-node level is the one with the next higer priority, and the |
I did some extra tests for completeness (2 nodes, 2 ranks each) Before change:
After change:
The thought occurs, whether HAN's dynamic function should be invoked each time a collective is called, or if the underlying module's function should be called directly instead. I'm not certain what kind of overhead the dynamic functions impose, some things do get cached, so they will only add overhead the first time. I believe we could in HAN-dynamic, instead of just call another function according to the rules, also update the communicator to not go through HAN in future calls. |
There are two conigurations type in han. If we only use configuration through MCA parameters, yes we can update function pointers of c_coll in communicator structure at first dynamic call. If we use a configuration file, module called can vary regarding message size. In that case, updating c_coll function pointers is not possible. To add more value to dynamic choice of han, there is an example where it is usefull: |
Ah okay make sense, I wasn't aware of the possibility for message-size-based selection |
No the two PRs don't currently overlap |
Cool. Where are we on this PR, then? |
IMO, it's ready and good to go. @bosilca, did my explanations above address the concerns? Edit: To clarify the relation of this PR with #10456:
|
@gkatev Can you rebase this PR so that it picks up the new CI? Thanks! |
Signed-off-by: George Katevenis <[email protected]>
Should we also apply this to 5.0.x? (let me know and I will make a PR) |
HAN disables itself when running in a single node, but that shouldn't include the subcommunicator created by HAN-dynamic.
See also #10438.
Tested on v5.0.x
Signed-off-by: George Katevenis [email protected]