[Mpi3-tools] Reviving old proposal: finding tools DLLs
jsquyres at cisco.com
Mon Feb 13 10:45:59 CST 2012
On Feb 13, 2012, at 11:26 AM, John DelSignore wrote:
> The new scheme seems to do a reasonable job at separating out 32-bit vs 64-bit libraries, but it has no provisions for cross or heterogeneous debugging. When the debugger is loading a MQD DLL for a target process, it want to find a library that can be validly loaded into the debugger's address space and is appropriate for the target process. It says. "For example, a tool can attempt to dynamically load each of the files in the array; the file that loads successfully is likely a good candidate to be used by the tool." It's the "likely a good candidate" part that makes me concerned.
> If we take the LANL Roadrunner machine as an extreme example, the debugger might be targeting a mixture of Linux-x86_64 and Linux-Cell processes, call this the "target platform" for a given target process. Also, various debugger processes may be running on Linux-x86_64 and Linux-Cell, call this the "debugger platform" for a given debugger process. Note that it is not necessarily the case that the "target platform" is the same as "debugger platform" when the MQD DLL is loaded.
> To cover the cross or heterogeneous debugging cases, I think the debugger needs to search the list of DLLs looking for one that is appropriate for both the "debugger platform" and the "target platform". The current proposal allows the debugger to find one that is appropriate for the "debugger platform", but it may not be the right DLL for the "target platform". Perhaps we need a way to be more explicit about the debugger and target platforms for each entry in the vector. Do we care about solving this problem?
I think I was intentionally fuzzy in this text to let the tool decide what is best.
The text in that paragraph is couched in language like "For example, ...". Did you want to make it softer?
> Another issue I see with the current definition is where the DLL name variables live, which is currently defined to live in the MPI process itself. I was wondering is there was any benefit to allowing (but not requiring) the DLL name variables to live in the MPI starter, rather than the MPI processes. Most implementations currently put MPIR_dll_name in the MPI process, but that may require the debugger to read the variable from each MPI process, which creates scalability issues if the debugger wants to load the DLL at a single point in its front-end process. I'd be interested to hear if other feel this is an issue.
Mmm. Good point.
The PDF I sent earlier was talking about the general technique of an argv-style array. I think the intent was to specifically list a) the variable name, and b) the location of that variable in the sections about each DLL (e.g., in the MPIR document, and in the MQD DLL verbiage that hasn't been written yet).
However, there is a sentence in the PDF I sent that should probably be changed:
However, the tool that wishes to make use of these interfaces typically only has knowledge of the MPI process itself – it may not know where the supplemental tool interface implementations can be found.
Should probably be changed to:
However, the tool that wishes to make use of these interfaces typically only has knowledge of ***an MPI "starter" process, or the set of MPI processes*** itself – it may not know where the supplemental tool interface implementations can be found.
...and then adjust the rest of the text where we state "The MPI process..."
jsquyres at cisco.com
For corporate legal information go to:
More information about the mpiwg-tools