-
Notifications
You must be signed in to change notification settings - Fork 882
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
Alltoall{,v,w} IN_PLACE fixes #9668
Alltoall{,v,w} IN_PLACE fixes #9668
Conversation
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.
My bad, I must have switched to something else in the middle of the patch, because I correctly use the extent for the Alltoall, but not for alltoallv. Nice catch.
I went back to my commit and realized that I used the wrong tag for the Alltoall. Would you mind making that change as well ?
Doh! I should have checked that. Will update. |
Moving to draft. This fixes the IBM |
8c1691b
to
ab201da
Compare
I found the issue. We are issuing 2 receives per iteration (depending on the counts for the 2 neighbors), and we need to wait for both of them to complete before moving to the next iteration. Thus, if
|
ab201da
to
7e83c94
Compare
b9012a3 accidently set the message tags for the alltoall and alltoallv in place algorithms to the alltoallw tag. Undo that change. Signed-off-by: Brian Barrett <bbarrett@amazon.com>
b9012a3 used the alltoallw interpretation of rdisps instead of the alltoall/alltoallv interpretation. According to the MPI standard, the byte displacement is recvbuf + rdispls[i] * extent(recvtype) for alltoall and alltoallv, but is recvbuf + rdispls[i] for alltoallw. Signed-off-by: Brian Barrett <bbarrett@amazon.com>
Without waiting for the last receive before going to the next iteration we might overwrite data if the current left neighbor become the right at the next iteration. Start with an MPI_REQUEST_NULL request. If the request is not NULL and the first rcounts is 0, the ompi_request_wait will segfault. Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
7e83c94
to
6802702
Compare
@bosilca can you re-review after the cleanups? |
b9012a3 used the alltoallw interpretation of rdisps instead of the
alltoall/alltoallv interpretation. According to the MPI standard,
the byte displacement is recvbuf + rdispls[i] * extent(recvtype) for
alltoall and alltoallv, but is recvbuf + rdispls[i] for alltoallw.
The tag used for alltoallv_in_place was also accidently changed to
TAG_ALLTOALLW in the same commit, so change that back to
TAG_ALLTOALLV.
Signed-off-by: Brian Barrett bbarrett@amazon.com