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
> [snip]

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
> MPI.

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
> errors.


Understood.  That's the nature of the beast, unfortunately.  :-\

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to