<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Martin,<div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;"><span id="OLK_SRC_BODY_SECTION" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="">[For MPI] We therefore picked an approach where the tool registers itself once it gets invoked somehow (e.g., in library initialization routines) and then MPI can do the actual initialization of all registered tools during MPI_Init. This allows as many tools to register themselves as needed.</div><div class=""><br class=""></div><div class="">However, when I brought this up at the last OMPT call, you mentioned that this would cause problem with linking since the runtime system may not be visible, yet, when the registration call gets loaded. When we talked about this today, it wasn’t clear to us anymore, though, why this would be a problem, since the call the registration function simply could load the runtime (assuming its a shared library). Can you elaborate a bit more of why this is problematic?</div></div></div></span></div></blockquote><div class=""><br class=""></div>Here’s why we chose the design for OpenMP where the OpenMP library invokes a function that the tool provides:</div><div class=""><br class=""></div><div class="">The initial design for the OpenMP Tools API had the library publish various routines as part of its API (e.g., ompt_set_callback) and the tool would invoke these operations to register itself. When we tried using this design to profile UMT - an OpenMP application written at LLNL, this approach failed. The attached document has the details. </div><div class=""><br class=""></div><div class="">I would be happy to elaborate or provide test cases to explain the problem further, if there are unresolved questions from the MPI tools group. The issue described in the attached document may not be a problem in practice for MPI applications. The ingredients that would cause the problem are (1) the MPI library is not linked into an executable, (2) the executable dlopens  a dynamically loaded library that uses MPI. In that case, a preloaded tool wouldn’t be able to see the MPI library and register itself because of dynamic library symbol visibility rules. </div><div class=""><div class=""><br class=""></div><div class=""><div apple-content-edited="true" class="">
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="font-size: 12px;" class=""><font face="Courier" class="">--<br class="">John Mellor-Crummey         Professor<br class="">Dept of Computer Science    Rice University<br class="">email: <a href="mailto:johnmc@rice.edu" class="">johnmc@rice.edu</a>      phone: 713-348-5179</font><br class=""></div></div></span></div></span>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Jul 2, 2015, at 11:55 AM, Schulz Martin <<a href="mailto:schulzm@llnl.gov" class="">schulzm@llnl.gov</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;" class=""><div class=""><div class=""><div class="">Oops, my autocomplete caught the old MPI list name.</div><div class=""><br class=""></div><div class="">Please reply to this email not the first one.</div><div class=""><br class=""></div><div class="">Thanks!</div><div class=""><br class=""></div><div class="">Martin</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div style="font-family: Consolas; font-size: 12px;" class="">________________________________________________________________________</div><div style="font-family: Consolas; font-size: 12px;" class="">Martin Schulz, <a href="mailto:schulzm@llnl.gov" class="">schulzm@llnl.gov</a>, <a href="http://scalability.llnl.gov/" class="">http://scalability.llnl.gov/</a></div><div style="font-family: Consolas; font-size: 12px;" class="">CASC @ Lawrence Livermore National Laboratory, Livermore, USA</div><div class=""><br class=""></div></div></div></div><div class=""><br class=""></div><span id="OLK_SRC_BODY_SECTION" class=""><div style="font-family: Calibri; font-size: 11pt; text-align: left; border-width: 1pt medium medium; border-style: solid none none; padding: 3pt 0in 0in; border-top-color: rgb(181, 196, 223);" class=""><span style="font-weight:bold" class="">From: </span> Schulz Martin <<a href="mailto:schulzm@llnl.gov" class="">schulzm@llnl.gov</a>><br class=""><span style="font-weight:bold" class="">Date: </span> Thursday, July 2, 2015 at 9:50 AM<br class=""><span style="font-weight:bold" class="">To: </span> John Mellor-Crummey <<a href="mailto:johnmc@rice.edu" class="">johnmc@rice.edu</a>><br class=""><span style="font-weight:bold" class="">Cc: </span> ext-omptools <<a href="mailto:omp-tools@openmp.org" class="">omp-tools@openmp.org</a>>, MPI3 Tools Tools <<a href="mailto:mpi3-tools@lists.mpi-forum.org" class="">mpi3-tools@lists.mpi-forum.org</a>><br class=""><span style="font-weight:bold" class="">Subject: </span> [Omp-tools] Tool initialization question<br class=""></div><div class=""><br class=""></div><div class=""><meta http-equiv="Content-Type" content="text/html; charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-size: 14px; font-family: Calibri, sans-serif;" class=""><div class="">Hi John,</div><div class=""><br class=""></div><div class="">(I am cc-ing both the MPI and the OMP tool lists, since this affects both – sorry for any duplicate emails this will cause)</div><div class=""><br class=""></div><div class="">We had an MPI tools group call this morning and talked once again about tool initialization. The current proposals for the two standards are currently different:</div><div class=""><br class=""></div><div class="">In OpenMP, we rely on a known symbol that the OpenMP runtime looks for and then calls when it is ready to initialize the tool. We talked about this for MPI, but didn’t go with it, since this prevents the ability to allow multiple tools.</div><div class=""><br class=""></div><div class="">We therefore picked an approach where the tool registers itself once it gets invoked somehow (e.g., in library initialization routines) and then MPI can do the actual initialization of all registered tools during MPI_Init. This allows as many tools to
 register themselves as needed.</div><div class=""><br class=""></div><div class="">However, when I brought this up at the last OMPT call, you mentioned that this would cause problem with linking since the runtime system may not be visible, yet, when the registration call gets loaded. When we talked about this today, it wasn’t clear to
 us anymore, though, why this would be a problem, since the call the registration function simply could load the runtime (assuming its a shared library). Can you elaborate a bit more of why this is problematic?</div><div class=""><br class=""></div><div class="">Anyone else remember details on this and wants to comment as well? If the registration option doesn’t work is there a third way that we could adopt for both standards that fulfills all criteria?</div><div class=""><br class=""></div><div class="">Thanks!</div><div class=""><br class=""></div><div class="">Martin</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div style="font-family: Consolas; font-size: 12px;" class="">________________________________________________________________________</div><div style="font-family: Consolas; font-size: 12px;" class="">Martin Schulz, <a href="mailto:schulzm@llnl.gov" class="">schulzm@llnl.gov</a>, <a href="http://scalability.llnl.gov/" class="">http://scalability.llnl.gov/</a></div><div style="font-family: Consolas; font-size: 12px;" class="">CASC @ Lawrence Livermore National Laboratory, Livermore, USA</div><div class=""><br class=""></div></div></div></div></span>
!DSPAM:8504,55956d1417521104631228!

</div>


</div></blockquote></div></div></div></body></html>