48f824327c
The rdma_frag attached to the send request was not correctly released
upon request completion, leaking until MPI_Finalize. A quick solution
would have been to add RDMA_FRAG_RETURN at different locations on the
send request completion, but it would have unnecessarily made the
sendreq completion path more complex. Instead, I added the length to
the RDMA fragment so that it can be completed during the remote ack.
Be more explicit on the comment.
The rdma_frag can only be freed once when the peer forced a protocol
change (from RDMA GET to send/recv). Otherwise the fragment will be
returned once all data pertaining to it has been trasnferred.
NOTE: Had to add a typedef for "opal_atomic_size_t" from master into
opal/threads/thread_usage.h into this cherry pick (it is in
opal/include/opal_stdatomic.h on master, but that file does not exist
here on the v4.0.x branch).
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
(cherry picked from commit
|
||
---|---|---|
.. | ||
configure.m4 | ||
help-mpi-pml-ob1.txt | ||
Makefile.am | ||
owner.txt | ||
pml_ob1_comm.c | ||
pml_ob1_comm.h | ||
pml_ob1_component.c | ||
pml_ob1_component.h | ||
pml_ob1_cuda.c | ||
pml_ob1_hdr.h | ||
pml_ob1_iprobe.c | ||
pml_ob1_irecv.c | ||
pml_ob1_isend.c | ||
pml_ob1_progress.c | ||
pml_ob1_rdma.c | ||
pml_ob1_rdma.h | ||
pml_ob1_rdmafrag.c | ||
pml_ob1_rdmafrag.h | ||
pml_ob1_recvfrag.c | ||
pml_ob1_recvfrag.h | ||
pml_ob1_recvreq.c | ||
pml_ob1_recvreq.h | ||
pml_ob1_sendreq.c | ||
pml_ob1_sendreq.h | ||
pml_ob1_start.c | ||
pml_ob1.c | ||
pml_ob1.h | ||
post_configure.sh |