Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] why mx_forget in mca_btl_mx_prepare_dst?
From: Brice Goglin (Brice.Goglin_at_[hidden])
Date: 2009-10-21 04:33:30


I am debugging a crash with OMPI 1.3.3 BTL over Open-MX. It's crashing
will trying to store incoming data in the OMPI receive buffer, but OMPI
seems to have already freed the buffer even if the MX request is not
complete yet. It looks like this is caused by mca_btl_mx_prepare_dst()
posting the receive and then calling mx_forget() immediately. The OMPI
r17452 by George introduced this. Commit log says "Improve the
performance of the MX BTL. Correct the fake PUT protocol." I don't
understand how this works.

mx_forget() is supposed to be used when you don't care anymore about a
message or a request, not really for performance purpose. It should not
help much in "normal" cases since you usually need to know when the
receive request is completed before you can actually use the received
data. And completion order is not guaranteed anyway, so it's hard to
guess when a request will complete if mx_forget() disabled the actual
completion notification.

Are you calling mx_forget() because you have another way to know when
the message will be received? If so, how?

When does OMPI free the fragment that is passed to mx_irecv in