<div dir="ltr"><div><div><div>It was sort of arbitrary. I want to conduct a performance spectrum (dofs/sec) study where at least 1k processors are used on various HPC machines (and hopefully one more case with 10k procs). Assuming all available cores on these compute nodes (which I know is not the greatest idea here), 1032 Ivybridge (24 cores/node) on Edison best matches Cori's 1024 Haswell (32 core/node).<br><br></div>How do I determine the shape of the DMDA? I am guessing the number of MPI processes needs to be compatible with this?<br><br></div>Thanks,<br></div>Justin<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 2, 2017 at 11:29 AM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Justin Chang <<a href="mailto:jychang48@gmail.com">jychang48@gmail.com</a>> writes:<br>
<br>
> Thanks guys,<br>
><br>
> So I want to run SNES ex48 across 1032 processes on Edison,<br>
<br>
</span>How did you decide on 1032 processes?  What shape did the DMDA produce?<br>
Of course this should work, but we didn't explicitly test that in the<br>
paper since we were running on BG/P.<br>
<br>
  <a href="https://github.com/jedbrown/tme-ice/tree/master/shaheen/b" rel="noreferrer" target="_blank">https://github.com/jedbrown/<wbr>tme-ice/tree/master/shaheen/b</a><br>
<div class="HOEnZb"><div class="h5"><br>
> but I keep getting segmentation violations. These are the parameters I<br>
> am trying:<br>
><br>
> srun -n 1032 -c 2 ./ex48 -M 80 -N 80 -P 9 -da_refine 1 -pc_type mg<br>
> -thi_mat_type baij -mg_coarse_pc_type gamg<br>
><br>
> The above works perfectly fine if I used 96 processes. I also tried to use<br>
> a finer coarse mesh on 1032 but the error persists.<br>
><br>
> Any ideas why this is happening? What are the ideal parameters to use if I<br>
> want to use 1k+ cores?<br>
><br>
> Thanks,<br>
> Justin<br>
><br>
> On Fri, Mar 31, 2017 at 12:47 PM, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br>
><br>
>><br>
>> > On Mar 31, 2017, at 10:00 AM, Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br>
>> ><br>
>> > Justin Chang <<a href="mailto:jychang48@gmail.com">jychang48@gmail.com</a>> writes:<br>
>> ><br>
>> >> Yeah based on my experiments it seems setting pc_mg_levels to $DAREFINE<br>
>> + 1<br>
>> >> has decent performance.<br>
>> >><br>
>> >> 1) is there ever a case where you'd want $MGLEVELS <= $DAREFINE? In<br>
>> some of<br>
>> >> the PETSc tutorial slides (e.g., <a href="http://www.mcs.anl.gov/" rel="noreferrer" target="_blank">http://www.mcs.anl.gov/</a><br>
>> >> petsc/documentation/tutorials/<wbr>TutorialCEMRACS2016.pdf on slide 203/227)<br>
>> >> they say to use $MGLEVELS = 4 and $DAREFINE = 5, but when I ran this, it<br>
>> >> was almost twice as slow as if $MGLEVELS >= $DAREFINE<br>
>> ><br>
>> > Smaller coarse grids are generally more scalable -- when the problem<br>
>> > data is distributed, multigrid is a good solution algorithm.  But if<br>
>> > multigrid stops being effective because it is not preserving sufficient<br>
>> > coarse grid accuracy (e.g., for transport-dominated problems in<br>
>> > complicated domains) then you might want to stop early and use a more<br>
>> > robust method (like direct solves).<br>
>><br>
>> Basically for symmetric positive definite operators you can make the<br>
>> coarse problem as small as you like (even 1 point) in theory. For<br>
>> indefinite and non-symmetric problems the theory says the "coarse grid must<br>
>> be sufficiently fine" (loosely speaking the coarse grid has to resolve the<br>
>> eigenmodes for the eigenvalues to the left of the x = 0).<br>
>><br>
>> <a href="https://www.jstor.org/stable/2158375?seq=1#page_scan_tab_contents" rel="noreferrer" target="_blank">https://www.jstor.org/stable/<wbr>2158375?seq=1#page_scan_tab_<wbr>contents</a><br>
>><br>
>><br>
>><br>
</div></div></blockquote></div><br></div>