<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 24, 2017 at 9:36 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="">"Kong, Fande" <<a href="mailto:fande.kong@inl.gov">fande.kong@inl.gov</a>> writes:<br>
<br>
> On Sun, Jul 23, 2017 at 5:31 PM, Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br>
><br>
>> Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> writes:<br>
>><br>
>> >    Anything stopping us from making a PETSc release?<br>
>><br>
>> I need to finish/test the SF support for MPIUNI that you asked me to do<br>
>> in June.<br>
>><br>
>> I've also been meaning to add hashtable support for assembly when people<br>
>> don't preallocate.  I think we should make it automatic.  It isn't much<br>
>> code and would save the weekly assembly performance emails and would<br>
>> help a lot for model coupling where our preallocation interfaces (for<br>
>> off-diagonal blocks) are terrible and the requisite user code is<br>
>> arguably dirtier than assembly itself.<br>
>><br>
><br>
><br>
> I am so interested in this.  I am having hard time to make the<br>
> preallocation right for users because they have all kinds of crazy physics<br>
> that coupling different PDEs together based on their own rules.  So if we<br>
> could make the preallocate work automatically, it would be great.<br>
><br>
> If we have this code in, the preallocation is not necessary for users any<br>
> more?  Still worthwhile to  have the right preallocation if possible?<br>
<br>
</span>Correct.  The hash needs to be converted to a matrix so the maximum<br>
memory usage is about double that of precise preallocation in advance.<br></blockquote><div><br><br></div><div>Will  the memory be released in the hash after assembling the matrix? <br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
But this is only the first assembly, which is usually done before<br>
setting up preconditioners and Krylov spaces so in most cases would not<br>
significantly affect the maximum memory usage of the application.<br></blockquote><div><br></div><div>If the nonzero structure changes over Newton iterations, and the maximum memory usage of the application may be larger than that with the precise preallocation. <br><br></div><div><br></div><div>Fande,<br></div><div> </div></div><br></div></div>