[FLASH-USERS] FLASH memory usage: Static, Dynamic and Machine Specific
Klaus Weide
klaus at flash.uchicago.edu
Thu Aug 11 12:41:22 EDT 2016
On Wed, 10 Aug 2016, Rahul Kashyap wrote:
> Yes, I forgot to mention that I'm using new multipole implementation with
> 60 poles.
>
> I have attached a small txt files with short summary on three runs which
> very well describes my problem. 1024 proc have been used for all runs with
> fixed lrefinemax and base blocks. I get three differenet error for three
> different maxblocks value.
>
> My understanding was that reasonable use of maxblocks avoids any such
> memory failures.
Rahul,
It appears that the total memory required by
PARAMESH Grid + multipole solver ( + Particles + other units )
is just too much; I suspect that this is PRIMARILY due to the memory
requirements of the Multipole(_new) solver.
There are several large arrays allocated, see in particular statements
like
allocate (gr_mpoleScratch (1:gr_mpoleMaxLM,1:gr_mpoleMaxQ ),...)
in gr_mpoleAllocateRadialArrays.F90, where gr_mpoleMaxQ may be very large
and gr_mpoleMaxLM ~ gr_mpoleMaxL ** 2 ( == 60**2 in your case?).
Unfortunately this memory is required for each process, you cannot reduce
this by running on more procs.
It makes sense in general to try to reduce the memory required by the
PARAMESH Grid by lowering maxblocks, but this can go only so far;
maxblocks has to leave room for "a few" more blocks than the number
actually required by the distributed grid. These additional slots
are needed for temporary storage during processing by some internal
PARAMESH routines for things like block redistribution. I don't
know of a reliable way to predict how low "a few" can go in a given
case, so this has to be determined empirically. Apparently,
this was too low in your maxblocks=5 case.
It may be possible to tweak the maxblocks value further, possibly in
connection with also modifying the values of maxblocks_alloc and
maxblocks_tr (see amr_initialize.F90 and paramesh_dimensions.F90),
in order to allow the Grid domain initialization to proceed with
maxblocks < 10; but this may then still not give you enough free memory
for the multipole solver (and particles, etc).
So you should investigate ways to lower the memory requirements of the
Poisson solver; you may have to lower the resolution (not sure which
runtime parameters to change), or perhaps use a different implementation.
Klaus
More information about the flash-users
mailing list