-
Notifications
You must be signed in to change notification settings - Fork 103
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
The Neighbor Exchange Algorithm for Allgather #822
The Neighbor Exchange Algorithm for Allgather #822
Conversation
Can one of the admins verify this patch? |
ok to test |
2a24add
to
9d9c3da
Compare
bot:retest |
6c33bb3
to
18669f0
Compare
@Sergei-Lebedev should we add here ranks reordering? I assume it would improve performance substantially since each neighbor with default mapping will always cross cores... |
this algorithm won't work with reordering, if need reordering we should fallback to ring |
d7034c7
to
22040c3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @ikryukov for the revisions! It looks good to me. Can you just fix the last comment please?
226348e
to
369b138
Compare
initial implementation
369b138
to
7b9acf2
Compare
What
Implementation of Neighbor Exchange Allgather algorithm described in this paper: https://ieeexplore.ieee.org/document/1592302
Based on original implementation from OpenMPI: https://github.com/open-mpi/ompi/blob/8514e717215a42ddb6db065c3baae3a2779a072a/ompi/mca/coll/base/coll_base_allgather.c#L624
Why ?
According to mentioned paper:
For the TCP/IP protocol, an algorithm that incorporates pair-wise exchange is the best for minimizing TCP/IP traffic
and this algorithm require N / 2 steps instead of N - 1 like in ring.