On Mar 14, 2012, at 1:06 PM, Patrik Jonsson wrote:
> I think I tracked it down, though. The problem was in the boost.mpi
Yuck! Glad you tracked it down.
> I do have a more general question, though: Is there a good way to back
> out the location of the request object if I stop deep in the bowels of
You mean if you stop a debugger deep in the middle of Open MPI, e.g., inside an MPI_Test?
Yes and no. Open MPI does a lot of sub-classing of structs for opaqueness -- an MPI_Request, for example, is a struct ompi_request_t, which is very small. A point-to-point non-blocking request will have its own struct that has an ompi_request_t as the first member.
We do this because there are many different types of requests, and they all have to be handled by MPI_Test (etc.).
So: yes, if you cast the request to the right struct type and print it in gdb, you can see all the arguments that were passed to the original Isend (or whatever). But it is a little involved to know what type to cast it to, etc.
> As I understand it, just because the user-level call is a certain
> MPI_Test doesn't mean that under the hood it's working on other
> requests, but this nonlocality makes it difficult to track down
Understood. That's the nature of the beast, unfortunately. :-\
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/