On Feb 11, 2010, at 4:13 PM, Eugene Loh wrote: > In the MPI standard, the portion discussing the PMPI profiling interface says: > > 3. document the implementation of different language > bindings of the MPI interface if they are layered on top > of each other, so that the profiler developer knows > whether she must implement the profile interface for > each binding, or can economise by implementing it > only for the lowest level routines. > > http://www.mpi-forum.org/docs/mpi22-report/node313.htm#Node313 > > Do we have such documentation anywhere? I don't see this in the OMPI FAQ. > > I played with this some. I wrote a Fortran program that called MPI_Send. I > wrote a Fortran wrapper that intercepted MPI_Send and called PMPI_Send. I > wrote a C wrapper that did the same thing. It appears that both wrappers got > called. So, it looks like we should advise users to provide *only* C > wrappers (unless they *also* want to intercept at the Fortran level). > > Yes/no?
Yes. Mostly. I believe there are a small number of exceptions to this... (/me checks...) Ah yes, here's one: MPI_ERRHANDLER_CREATE() in Fortran does *not* call MPI_Errhandler_create(). Instead, it calls the back-end ompi_errhandler_create() function. There's obscure reasons for this that are pretty uninteresting. To be clear: if you profile this function in both C and Fortran and call it in Fortran, you *won't* see the corresponding C profile function invoked. I don't know if there's an easy way to generate a full list of functions like this -- it might involve a troll through ompi/mpi/f77/*_f.c to see which ones call MPI_* functions for their back-end functionality vs. which ones don't. I think most call MPI_* functions. -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/