<div dir="ltr">Hi Klaus,<div><br></div><div>Thanks for the info! </div><div><br></div><div>I eventually found that my simulation fits onto 19 processors for maxblocks=1000, 180 processors (vs. 30 nodes for maxblocks=500, 360 processors).</div><div>I'm thinking now that the reason it doesn't scale perfectly (i.e., from 30 nodes down to 15 nodes for 2x higher maxblocks and 2x fewer processors) is because the processor assignment is depends on several factors (Morton z-filling curve, data locality, etc.)</div><div>So, I think it is reasonable.</div><div><br></div><div>Thanks for the help!</div><div><br></div><div>Best,<br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr">--------<div>Ryan</div></div></div></div></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 3, 2019 at 8:24 AM Klaus Weide <<a href="mailto:klaus@flash.uchicago.edu">klaus@flash.uchicago.edu</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">On Fri, 26 Apr 2019, Ryan Farber wrote:<br>
<br>
> Hi Klaus,<br>
> <br>
> Thanks for your response! I think I've got a handle on things now, but I<br>
> typed out my thought process below in case it helps other people in the<br>
> future.<br>
> <br>
> > grid_space_gb = total_grid_vars*MAXBLOCKS*procs*(nxb+2*NGUARD)**NDIM /<br>
> > > bytes_per_GB<br>
> ><br>
> > It seems you have forgotten a factor of 8, for size of a double precision<br>
> > real in bytes.<br>
> ><br>
> > Good point! So I actually get ~730 GB memory required, though I'm<br>
> overestimating since you mentioned that NFLUXES doesn't require a full<br>
> block's worth of memory (why is that?). <br>
<br>
The flux arrays that are used directly by the Hydro unit are only <br>
declared / allocated for one block [they don't have something like <br>
',...,MAXBLOCKS)' in the dimensions], so they don't count here.<br>
<br>
There are various arrays, both inside the PARAMESH code and the <br>
higher-level Grid unit code, to store fluxes in connection with flux <br>
correction (flux conservation). Those do scale with MAXBLOCKS. But they <br>
are not declared for all cells, but only (more or less) for cell faces at <br>
block faces. See the following files for the gory details (search for <br>
NFLUXES or nfluxes):<br>
<br>
amr_initialize.F90<br>
Grid/GridMain/paramesh/Grid_data.F90<br>
Grid/GridMain/paramesh/Grid_init.F90<br>
<br>
<br>
<br>
(There is a line<br>
<br>
#define NVARS_TOTAL (NUNK_VARS + (NFACE_VARS * 3) + NFLUXES)<br>
<br>
in Flash.h but that doesn't seem to be very useful - I don't see <br>
NVARS_TOTAL actually being used for anything.)<br>
<br>
<br>
Klaus<br>
</blockquote></div>