Thanks Jed, <div><br></div><div>To get this right, I thought I should get a zero value for the code below: </div><div><br></div><div><meta name="qrichtext" content="1"><style type="text/css">
p, li { white-space: pre-wrap; }
</style>
<meta name="qrichtext" content="1"><style type="text/css">
p, li { white-space: pre-wrap; }
</style>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><b>    PetscLogDouble mem1, mem2;</b></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></pre><pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">

<b>    PetscMemoryGetCurrentUsage(&amp;mem1);</b></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><b>    PetscMemoryGetCurrentUsage(&amp;mem2);</b></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><b>    printf(&quot;mem1:%f mem2:%f memory:%d\n&quot;, mem1, mem2, (int)(mem2 - mem1));</b></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><b><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-family: arial; font-weight: normal; white-space: normal; "><div>

<br></div><div>What I get is not zero! </div><div></div></span></b></pre><pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><b><meta http-equiv="content-type" content="text/html; charset=utf-8"><div style="font-family: arial; font-weight: normal; white-space: normal; ">

<div>&quot;mem1:3047424.000000 mem2:3076096.000000 memory:28672&quot;</div></div><div style="font-family: arial; font-weight: normal; white-space: normal; "><br></div><div style="font-family: arial; font-weight: normal; white-space: normal; ">

I ran the code with/without the runtime flag -malloc. Also, PETSc is complied without debugging. </div><div style="font-family: arial; font-weight: normal; white-space: normal; ">I am confused. Apparently, even when I allocate some memory using PetscMalloc() or malloc() between the two </div>

<div><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-family: arial; font-weight: normal; white-space: normal; "><pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">

<b>    PetscMemoryGetCurrentUsage(&amp;mem1);</b></pre><pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; "><b>      /* some memory allocation using malloc or PescMalloc()</b></pre>

<pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; "><b>    PetscMemoryGetCurrentUsage(&amp;mem2);</b></pre></span></div><div style="font-family: arial; font-weight: normal; white-space: normal; ">

<br></div><div style="font-family: arial; font-weight: normal; white-space: normal; ">I still get the same number. </div><div style="font-family: arial; font-weight: normal; white-space: normal; "><br></div><div style="font-family: arial; font-weight: normal; white-space: normal; ">

Thanks for your help,</div><div style="font-family: arial; font-weight: normal; white-space: normal; ">Mohamad</div><div style="font-family: arial; font-weight: normal; white-space: normal; "><br></div></b></pre><div class="gmail_quote">

On Wed, Sep 28, 2011 at 3:26 AM, Jed Brown <span dir="ltr">&lt;<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><div class="gmail_quote">On Tue, Sep 27, 2011 at 23:29, Mohamad M. Nasr-Azadani <span dir="ltr">&lt;<a href="mailto:mmnasr@gmail.com" target="_blank">mmnasr@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>I am a bit puzzled by how this function works. </div><div>I was trying it on this simple example:</div><div><br></div><div><span style="font-family:monospace;white-space:pre-wrap">    PetscMemoryGetMaximumUsage(&amp;mem1);</span></div>





<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">    PetscMalloc(1*sizeof(double), &amp;aa);</pre>
<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></pre><pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">    PetscMemoryGetMaximumUsage(&amp;mem2);</pre>



<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></pre><div> </div><div>The difference I get for (mem2-mem1) is zero. </div></blockquote></div><br></div><div>The maximum usage is actually only updated when objects are destroyed. You can call PetscMemoryGetCurrentUsage() to see how much is used by everything used by the application (not just PETSc). When using tracing malloc (default in debug mode or when run with -malloc). You can use PetscMallocGetCurrentUsage() and PetscMallocGetMaximumUsage() at any time and it should be a current measure of what PETSc has allocated (not just after destroying objects), but does not measure anything allocated directly by the application (e.g. by calling malloc directly, C++ new, Fortran arrays).</div>


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