[mpiwg-tools] Questions for the tools community
Jeff Squyres (jsquyres)
jsquyres at cisco.com
Fri Sep 6 08:37:15 CDT 2019
On Sep 6, 2019, at 6:56 AM, John DelSignore <John.DelSignore at roguewave.com<mailto:John.DelSignore at roguewave.com>> wrote:
TotalView definitely supports F90/F95 array and pointer variables, which under the covers are implemented as some sort of descriptor object. The descriptor formats vary from platform to platform and compiler to compiler, but usually a descriptor consists of an lower bound, upper bound, stride, pointer to the data, and perhaps flags. The debug info (DWARF, STABS, etc.) also varies, so it can be complicated, but we handle the debug information such that the user sees the right data.
I'm not familiar with what you mean by "Fortran descriptors as choice buffers". I don't know much about Fortran 03/08 and I don't know if a "choice buffer" a Fortran thing or an MPI-specific Fortran thing. Googling the term seems to turn up hits that imply that it's an MPI/Fortran thing, but I'm not sure. A brief explanation would help. AFAICT, depending on what the compiler does with "Fortran descriptors as choice buffers", a tool that already supports Fortran descriptors might "just work", but without a concrete example I can't say for sure.
Yes, I mean "choice buffers" in the MPI Forum sense of the word: a buffer that is the application's choice. For example, the send buffer in MPI_Send(...) is what we typically call a "choice buffer."
In MPI-3.0, there's two kinds of Fortran support:
a) if you support choice buffers as naked pointers (i.e., the way it has always been in MPI), or
b) if you support the standardized Fortran descriptor (which includes things you mention: base, bound, stride, ...etc.).
If the MPI implantation supports Fortran descriptors, applications can behave a little differently. Additionally, the MPI spec mandates that if an MPI implementation supports a), then it has to have back-end symbols A. But if an implementation supports b), then it has to have back-end symbols B (where A != B). This is because the treatment of the choice buffers in the back-end symbol for MPI_SEND differs between A and B.
Since MPI-related tools have used interposition for years (e.g., to intercept calls by the application to MPI_Send and replace it with their own MPI_Send), and since very few MPI implementations have supported Fortran descriptors for choice buffers, most (all?) such tools are interposing symbols based on a). I am wondering if any interposition-type tools support b).
I ask because Open MPI is investigating supporting Fortran descriptors, which means that we are looking at supporting b) + B.
jsquyres at cisco.com<mailto:jsquyres at cisco.com>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the mpiwg-tools