<div dir="ltr">Hi Mpich dev community, <div><br></div><div>Based on what we're seeing, I can guess it concurrently broadcasts for 23 processes, then serially goes to the next set of processes (4 processes in this case).  This remains more true as I increase the # of processes- more and more processes are serially broadcasted after the first set of processes.  Some processes are finished before some enter- so there does seem to be a limitation on MPI_Bcast() on how many concurrent processes are being broadcasted at a time.  Does this explain why there's a timing drop as the # of processes grows?<br></div><div><br></div><div>If so, possible fixes: multiple communicators simultaneously (I think), or MPI_Reduce()-  but MPI_Reduce() will eventually run into a limitation as well?   </div><div><br></div><div>Am I correct?  Thank you,</div><div><br></div><div>Best,</div><div>Brent</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jan 16, 2021 at 7:05 PM Brent Morgan <<a href="mailto:brent.taylormorgan@gmail.com">brent.taylormorgan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Rajeev,<div><br></div><div>For the 27 processes, it consists of 27 physical cores, 7 devices.</div><div><br></div><div>I understand Gather may overall be slower, but that should result in a smaller slope of a linear speedup...  The observed results leads to a timing 2x of what is expected for 27 processes.</div><div></div><div><img src="cid:ii_kk0hp7xy1" alt="image.png" width="562" height="246"><br></div><div><br></div><div>One thing I notice is that, in line 126 of my sent code, ranks 20-24 is processed *after* ranks 1-19, 25-27.  Printing things out above line 126, ranks 20-24 is printed always after 1-19, 25-27, and a pause; it's as if the program broadcasts 23 (instead of 27) ranks at a time.  There is nothing faulty about my devices/cores, as this behavior is consistent when I switch nodes in the hostname file.<br></div><div><br></div><div>Best,</div><div>Brent</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jan 16, 2021 at 6:44 PM Thakur, Rajeev <<a href="mailto:thakur@anl.gov" target="_blank">thakur@anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif">There is no limitation. Gather concatenates data at the root so all the data needs to be sent. Reduce calculates intermediate sums in a binomial tree fashion, so if you are summing a
 single number, only a single number is communicated. There are many papers on collective communication algorithms.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif">When you run 27 processes, are there 27 physical cores for them to run concurrently? If not, the performance measurements will not show speedups.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif"><u></u> <u></u></span></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">Brent Morgan <<a href="mailto:brent.taylormorgan@gmail.com" target="_blank">brent.taylormorgan@gmail.com</a>><br>
<b>Date: </b>Saturday, January 16, 2021 at 7:37 PM<br>
<b>To: </b>"Thakur, Rajeev" <<a href="mailto:thakur@anl.gov" target="_blank">thakur@anl.gov</a>><br>
<b>Cc: </b>Robert Katona <<a href="mailto:robert.katona@hotmail.com" target="_blank">robert.katona@hotmail.com</a>>, "Zhou, Hui" <<a href="mailto:zhouh@anl.gov" target="_blank">zhouh@anl.gov</a>>, "<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>" <<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>><br>
<b>Subject: </b>Re: [mpich-devel] mpich3 error<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Why isn’t the sum all computed after doing a gather to the root- is there a limitation of 27 processes (7 devices) for gather?  We thought a collector could handle much more,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Best,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Brent<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Sat, Jan 16, 2021 at 2:18 PM Thakur, Rajeev <<a href="mailto:thakur@anl.gov" target="_blank">thakur@anl.gov</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif">It uses a different algorithm and communicates much less data. The sum is not all computed after doing a gather to the root.</span><u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif"> </span><u></u><u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">Brent Morgan <<a href="mailto:brent.taylormorgan@gmail.com" target="_blank">brent.taylormorgan@gmail.com</a>><br>
<b>Date: </b>Saturday, January 16, 2021 at 2:58 PM<br>
<b>To: </b>"Thakur, Rajeev" <<a href="mailto:thakur@anl.gov" target="_blank">thakur@anl.gov</a>><br>
<b>Cc: </b>Robert Katona <<a href="mailto:robert.katona@hotmail.com" target="_blank">robert.katona@hotmail.com</a>>, "Zhou, Hui" <<a href="mailto:zhouh@anl.gov" target="_blank">zhouh@anl.gov</a>>, "<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>"
 <<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>><br>
<b>Subject: </b>Re: [mpich-devel] mpich3 error</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">We will try MPI_Reduce which will improve our code, but it will not solve the underlying problem. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Best,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Brent<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">On Sat, Jan 16, 2021 at 1:31 PM Thakur, Rajeev <<a href="mailto:thakur@anl.gov" target="_blank">thakur@anl.gov</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif">Your mail all the way below says “</span><span style="font-size:13.5pt;font-family:-webkit-standard,serif;color:black">We
 are using MPI_Gather collector for merely calculating the sum of the result of N processes”. Why don’t you use MPI_Reduce instead then?</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:-webkit-standard,serif;color:black"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:-webkit-standard,serif;color:black">Rajeev</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-family:"Lucida Grande",sans-serif"> </span><u></u><u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">Brent Morgan via devel <<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>><br>
<b>Reply-To: </b>"<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>" <<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>><br>
<b>Date: </b>Saturday, January 16, 2021 at 1:38 PM<br>
<b>To: </b>"Zhou, Hui" <<a href="mailto:zhouh@anl.gov" target="_blank">zhouh@anl.gov</a>><br>
<b>Cc: </b>Brent Morgan <<a href="mailto:brent.taylormorgan@gmail.com" target="_blank">brent.taylormorgan@gmail.com</a>>, "<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>" <<a href="mailto:devel@mpich.org" target="_blank">devel@mpich.org</a>>,
 Robert Katona <<a href="mailto:robert.katona@hotmail.com" target="_blank">robert.katona@hotmail.com</a>><br>
<b>Subject: </b>Re: [mpich-devel] mpich3 error</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">Hi Hui, Mpich community,<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks for the response.  You're right, I'll provide a toy program that replicates the code structure (and results).  The toy program is calculating a sum value from each process-
 the value isn't too important for this toy program.  The timing, however, is the only thing important in our demonstration.  It exactly replicates what we are observing for our actual program.  This directly relates to the MPI functionality- we can't find
 out what the issue is.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><img border="0" width="1336" height="584" style="width: 13.9166in; height: 6.0833in;" id="gmail-m_8781102945559366983gmail-m_1726859872026926220_x0000_i1026" src="cid:1770e07bec44cff311"><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I have attached the code.  Is something wrong with our implementation?  It starts with the main() function.  Thank you very much for any help,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Best,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Brent<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">PS My subscription to
<a href="mailto:discuss@mpich.org" target="_blank">discuss@mpich.org</a> is pending currently.<u></u><u></u></p>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">On Sat, Jan 16, 2021 at 12:24 PM Brent Morgan <<a href="mailto:brent.taylormorgan@gmail.com" target="_blank">brent.taylormorgan@gmail.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<div>
<p class="MsoNormal">Hi Hui, Mpich community,<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks for the response.  You're right, I'll provide a toy program that replicates the code structure (and results).  The toy program is calculating a sum value from each process-
 the value isn't too important for this toy program.  The timing, however, is the only thing important in our demonstration.  It exactly replicates what we are observing for our actual program.  This directly relates to the MPI functionality- we can't find
 out what the issue is.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><img border="0" width="1336" height="584" style="width: 13.9166in; height: 6.0833in;" id="gmail-m_8781102945559366983gmail-m_1726859872026926220_x0000_i1025" src="cid:1770e07bec44cff311"><u></u><u></u></p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
<div>
<div>
<div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<div>
<div>
<p class="MsoNormal">I have attached the code.  Is something wrong with our implementation?  It starts with the main() function.  Thank you very much for any help,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Best,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Brent<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, Jan 15, 2021 at 10:43 PM Zhou, Hui <<a href="mailto:zhouh@anl.gov" target="_blank">zhouh@anl.gov</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<div>
<div>
<p class="MsoNormal">Your description only mentions MPI_Gather. If there is indeed problem with MPI_Gather, then you should be able to reproduce the issue with a sample program. Share with us and we
 can better assist you. If you can’t reproduce the issue with a simple example, then I suspect there are other problems that you are not able to fully describe. We really can’t help much without able to see the code.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">That said, I am not even sure what is the issue you are describing. 100 process MPI_Gather will be slower than 50 process MPI_Gather. And since it is a collective, if one of your
 process is delayed due to some computations or else, the whole collective will take longer to finish just due to waiting for the late process. You really need tell us what your program is doing in order for us to even offer an intelligent guess.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<div>
<p class="MsoNormal">-- <br>
Hui Zhou<u></u><u></u></p>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal" style="margin-bottom:12pt"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">Brent Morgan <<a href="mailto:brent.taylormorgan@gmail.com" target="_blank">brent.taylormorgan@gmail.com</a>><br>
<b>Date: </b>Friday, January 15, 2021 at 10:42 PM<br>
<b>To: </b>Zhou, Hui <<a href="mailto:zhouh@anl.gov" target="_blank">zhouh@anl.gov</a>>,
<a href="mailto:discuss@mpich.org" target="_blank">discuss@mpich.org</a> <<a href="mailto:discuss@mpich.org" target="_blank">discuss@mpich.org</a>><br>
<b>Cc: </b>Robert Katona <<a href="mailto:robert.katona@hotmail.com" target="_blank">robert.katona@hotmail.com</a>><br>
<b>Subject: </b>Re: [mpich-devel] mpich3 error</span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">Hi MPICH community,<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">My team has downloaded mpich 3.3.2 (using ch3 as default) and implemented MPI, and for small # of processes (<50), everything worked fine for our MPI implementation.  For >=50 processes,
 there was a ch3 error and crashed the program after a random amount of seconds (sometimes 10seconds, sometimes 100seconds).  So we compiled mpich 3.3.2 with ch4 (instead of default ch3) using '--with-device=ch4:ofi` flag and this got rid of the error- but
 for >12 processes, the speed would slow down to 2x slower suddenly.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Upon Hui's suggestion, we upgraded to mpich 3.4 and compiled with '--with-device=ch4:ofi` flag (where ch4 is default for mpich 3.4).  Everything worked fine until we hit 20 processes;
 after >=20 processes, the 2x slowdown is happening again.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">We have tried 1 communicator and multiple communicators in an attempt to make the MPI implementation faster, but there's no significant difference in observations.  We are using
 MPI_Gather collector for merely calculating the sum of the result of N processes, but we can't seem to maintain stability within MPI as we increase N processes.  Is there something we are missing that is ultimately causing this error?  We are at a loss here,
 thank you.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Best,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Brent<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>

</blockquote></div>
</blockquote></div>