<div dir="ltr">I agree having a well-defined interface to access the info is good. But I was wondering how to take advantage of this interface and what kinds of users need it (e.g., system admins, tool developers, application programmers, MPI developers). I list my understanding of these users.<div>
*system admin: select proper parameters to build an optimized MPI library for their platform. However, to this end, giving the manual of a MPI implementation is enough.</div><div>*tool developer: The T in MPI_T is for tools. But who is the user of such a tool? Yes, a tool can give profiling data of applications. But how to gain insights from the profiling data, and then refine the execution environment, or even do code refactoring? Can it be automatic?</div>
<div>*application programmer: The example Anh Vo gives is good. But we need to justify the extra coding complexity.</div><div>*MPI developer: (I have no idea)</div><div><br></div><div class="gmail_extra">
<div><div dir="ltr">--Junchao Zhang</div></div>
<br><br><div class="gmail_quote">On Thu, Oct 24, 2013 at 5:39 PM, Todd Gamblin <span dir="ltr"><<a href="mailto:tgamblin@llnl.gov" target="_blank">tgamblin@llnl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><div>On Oct 24, 2013, at 3:31 PM, Junchao Zhang <<a href="mailto:jczhang@mcs.anl.gov" target="_blank">jczhang@mcs.anl.gov</a>></div><div> wrote:</div><div><br><blockquote type="cite">
<div dir="ltr">I would call it "selective MPI parameter setting". <div>But users need to know to what extent the size is "<span style="font-size:13px;font-family:arial,sans-serif">slightly larger", and be notified doing so is indeed better.</span><div>
BTW, I'm confused if this case often happens, why not implement it in MPI instead of bothering MPI_T?</div></div></div></blockquote><div><br></div></div><div>Even if MPI uses this information for automatic tuning, tools still want to be able to measure this information. Not all of us live in MPI, and having a well-defined interface for access to information like this from *outside* MPI was the whole point of the MPI_T interface.</div>
<div><br></div><div>-Todd</div><div><div><div><br></div><div><br></div><br><blockquote type="cite"><div dir="ltr"><br></div><div class="gmail_extra"><div><div dir="ltr">--Junchao Zhang</div></div>
<br><br><div class="gmail_quote">On Thu, Oct 24, 2013 at 4:50 PM, William Gropp <span dir="ltr"><<a href="mailto:wgropp@illinois.edu" target="_blank">wgropp@illinois.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">Here's a very simple one that applications sometimes do - if your messages are small but slightly larger than the eager threshold, you can often improve performance by increasing the eager threshold. Some MPI implementations have provided environment variables to do just that; with MPI_T, this can be done within the program, and scoped for the parts of the application that need it. And using MPI_T, you might be able to discover is this is indeed a good idea. <div>
<div><br></div><div>Bill</div><div><span><font color="#888888"><br><div>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">
<div><div style="font-size:12px">William Gropp</div><div style="font-size:12px">Director, Parallel Computing Institute</div><div style="font-size:12px">Deputy Director for Research</div><div style="font-size:12px">Institute for Advanced Computing Applications and Technologies</div>
</div></div></span><span style="font-size:12px">Thomas M. Siebel Chair in Computer Science</span><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">
<div><div style="font-size:12px">University of Illinois Urbana-Champaign</div></div><div><br></div></div></span><br></span><br>
</div></font></span><div><div>
<br><div><div>On Oct 24, 2013, at 3:42 PM, Anh Vo wrote:</div><br><blockquote type="cite"><span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div lang="EN-US" link="blue" vlink="purple">
<div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">I am also not aware of any applications/tools doing such things yet. But that’s an example of how MPI_T might benefit the developers of those applications/tools. But right now I don’t of any commercial users of MPI_T<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">--Anh<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><b><span style="font-size:10pt;font-family:Tahoma,sans-serif">From:</span></b><span style="font-size:10pt;font-family:Tahoma,sans-serif"><span> </span>mpiwg-tools [mailto:<a href="mailto:mpiwg-tools-bounces@lists.mpi-forum.org" target="_blank">mpiwg-tools-bounces@lists.mpi-forum.org</a>]<span> </span><b>On Behalf Of<span> </span></b>Junchao Zhang<br>
<b>Sent:</b><span> </span>Thursday, October 24, 2013 1:41 PM<br><b>To:</b><span> </span><<a href="mailto:mpiwg-tools@lists.mpi-forum.org" target="_blank">mpiwg-tools@lists.mpi-forum.org</a>><br><b>Subject:</b><span> </span>Re: [mpiwg-tools] Using MPI_T<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
OK. I believe it is an advanced topic. I'm not aware of applications doing such cool things.<u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
If you happen to know an application that would benefit from MPI_T, I would like to implement it. <u></u><u></u></div></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<br clear="all"><u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">--Junchao Zhang<u></u><u></u></div>
</div><p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:12pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></p><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
On Thu, Oct 24, 2013 at 3:30 PM, Anh Vo <<a href="mailto:Anh.Vo@microsoft.com" style="color:blue;text-decoration:underline" target="_blank">Anh.Vo@microsoft.com</a>> wrote:<u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">I would say it depends on the situation. In most cases I would imagine the applications/tools would do the aggregation. And yes, in my example the processes need to communicate to know the message pressure</span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> </span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">--Anh</span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> </span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><b><span style="font-size:10pt;font-family:Tahoma,sans-serif">From:</span></b><span style="font-size:10pt;font-family:Tahoma,sans-serif"><span> </span>mpiwg-tools [mailto:<a href="mailto:mpiwg-tools-bounces@lists.mpi-forum.org" style="color:blue;text-decoration:underline" target="_blank">mpiwg-tools-bounces@lists.mpi-forum.org</a>]<span> </span><b>On Behalf Of<span> </span></b>Junchao Zhang<br>
<b>Sent:</b><span> </span>Thursday, October 24, 2013 1:27 PM<br><b>To:</b><span> </span><<a href="mailto:mpiwg-tools@lists.mpi-forum.org" style="color:blue;text-decoration:underline" target="_blank">mpiwg-tools@lists.mpi-forum.org</a>><br>
<b>Subject:</b><span> </span>Re: [mpiwg-tools] Using MPI_T</span><u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">Hi, Anh,<u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
I think your example is to use feedback to do throttling. <u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
A further question is: should we do it at application level (since you mentioned aggregation) or do it in MPI runtime?<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
The example also implies processes need to communicate to know pressure of each other.<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
Thanks.<u></u><u></u></div></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><br clear="all"><u></u><u></u></div>
<div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">--Junchao Zhang<u></u><u></u></div></div><p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:12pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u><u></u></p><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">On Thu, Oct 24, 2013 at 2:40 PM, Anh Vo <<a href="mailto:Anh.Vo@microsoft.com" style="color:blue;text-decoration:underline" target="_blank">Anh.Vo@microsoft.com</a>> wrote:<u></u><u></u></div>
<div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Hi Junchao,</span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">One example is monitoring the length of the unexpected message queues. Basically, when an MPI process receives an incoming message from another MPI process and it has not posted a receive for such message yet, the message is typically copied into an unexpected receive queues. When the process posts a receive, it loops through the unexpected queue and sees whether any of the messages in the queue would match with this receive. If the unexpected queue is too long, you would spend a lot of time looping through the queue. Extra memcpy operations are also needed for unexpected receive (vs the case where the message arrives and there’s already a posted receive for it)</span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> </span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">By monitoring the length of the unexpected receive queue, the user can adjust the rate of message flow. For example, if the other side processes messages fast enough, you can keep sending lots of small data (such as heart beat or piggyback), but in the case where the other side is slow processing messages (thus end up with high queue depth for unexpected queue), it might be more beneficial to compress the message or aggregate them before sending</span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> </span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">--Anh</span><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><a name="141edcc3e7c54c71_141ec9f55f3264a8_141ec7a9ccd7a7dd_141ec291a1a154cb_141ebfb403c3b527__MailE"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> </span></a><u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><b><span style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span style="font-size:11pt;font-family:Calibri,sans-serif"><span> </span>mpiwg-tools [mailto:<a href="mailto:mpiwg-tools-bounces@lists.mpi-forum.org" style="color:blue;text-decoration:underline" target="_blank">mpiwg-tools-bounces@lists.mpi-forum.org</a>]<span> </span><b>On Behalf Of<span> </span></b>Junchao Zhang<br>
<b>Sent:</b><span> </span>Thursday, October 24, 2013 12:31 PM<br><b>To:</b><span> </span><<a href="mailto:mpiwg-tools@lists.mpi-forum.org" style="color:blue;text-decoration:underline" target="_blank">mpiwg-tools@lists.mpi-forum.org</a>><br>
<b>Subject:</b><span> </span>[mpiwg-tools] Using MPI_T</span><u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u><u></u></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">Hello,<u></u><u></u></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
The standard talks about the motivation of MPI_T as "MPI implementations often use internal variables to control their operation and performance. Understanding and manipulating these variables can provide a more efficient execution environment or improve performance for many applications."<u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"> I could imagine that through performance variables, users can know MPI internal states during application execution. But how to use that to improve performance? What EXTRA advantages does MPI_T bring? I don't get the idea.<u></u><u></u></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"> Can someone shed light on that?<u></u><u></u></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
Thank you.<u></u><u></u></div><div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">--Junchao Zhang<u></u><u></u></div>
</div>
</div></div></div></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><br>_______________________________________________<br>
mpiwg-tools mailing list<br><a href="mailto:mpiwg-tools@lists.mpi-forum.org" style="color:blue;text-decoration:underline" target="_blank">mpiwg-tools@lists.mpi-forum.org</a><br><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools" style="color:blue;text-decoration:underline" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools</a><u></u><u></u></div>
</div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"> <u></u><u></u></div></div></div></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<br>_______________________________________________<br>mpiwg-tools mailing list<br><a href="mailto:mpiwg-tools@lists.mpi-forum.org" style="color:blue;text-decoration:underline" target="_blank">mpiwg-tools@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools" style="color:blue;text-decoration:underline" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools</a><u></u><u></u></div></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div></div></div>_______________________________________________<br>mpiwg-tools mailing list<br><a href="mailto:mpiwg-tools@lists.mpi-forum.org" target="_blank">mpiwg-tools@lists.mpi-forum.org</a><br><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools</a></div>
</span></blockquote></div><br></div></div></div></div></div><br>_______________________________________________<br>
mpiwg-tools mailing list<br>
<a href="mailto:mpiwg-tools@lists.mpi-forum.org" target="_blank">mpiwg-tools@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools</a><br></blockquote></div><br></div>
_______________________________________________<br>mpiwg-tools mailing list<br><a href="mailto:mpiwg-tools@lists.mpi-forum.org" target="_blank">mpiwg-tools@lists.mpi-forum.org</a><br><a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools</a></blockquote>
</div></div></div><br><div>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">
______________________________________________________________________<br>Todd Gamblin, <a href="mailto:tgamblin@llnl.gov" target="_blank">tgamblin@llnl.gov</a>, <a href="http://people.llnl.gov/gamblin2" target="_blank">http://people.llnl.gov/gamblin2</a><br>
CASC @ Lawrence Livermore National Laboratory, Livermore, CA, USA</div></span></div></span></span>
</div>
<br></div><br>_______________________________________________<br>
mpiwg-tools mailing list<br>
<a href="mailto:mpiwg-tools@lists.mpi-forum.org" target="_blank">mpiwg-tools@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-tools</a><br></blockquote></div><br></div></div>