<div dir="ltr"><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">Zhq, </span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">It is useful to do the estimation of memory for all the components</span></div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">of the pipeline.</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">Let's do this, following the FastMarchingImageFilter.cxx example:</span></div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></span></div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">Input Image 512*512*390 = 195 Mb  (assuming 16-bits pixel type),</span><div>
<span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></span><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">    but the reader takes : 400Mb because it keeps a buffer internally.</span></div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">    in the ImageIO class, something that we probably should fix..) <br></span><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br>
</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">Smoothing filter:  will take  additional: 400 Mb </span><br></div></div></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br>
</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">Gradient Magnitude ( with its internal helpers ) takes: 800Mb</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">  </span></div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">Sigmoid (since used float pixel type) takes: 400Mb</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br>
</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">...etc</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br>
</span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></span></div><div>A good way to do all this accounting is by using the class</div><div><br></div><div>              itk::MemoryProbesCollectorBase </div>
<div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">as in</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<br></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px">     itk::MemoryProbesCollectorBase mcollecter;</span><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<br></div><div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">     mcollecter.Start("smoothing");</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">     smoothing->Update();</div>
<div style="font-size:14.399999618530273px;line-height:18.399999618530273px">     mcollecter.Stop("smoothing");</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">     mcollecter.Report();</div>
<div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
and then do this for every intermediate Update() call to a</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">filter in the pipeline (you will have to add such calls).</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">This will give you a summary such as:</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">reader        400296  = 400Mb</font></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">smoothing     799156  = 800Mb</font></span></div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">gradient      798860  = 800Mb</font></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">sigmoid       399364  = 400Mb</font></span></div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">fastMarching  541604  = 540Mb</font></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace"><br>
</font></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">by the time we count all the memory consumption,</font></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">it is:</font></span></div>
<div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace"><br></font></span></div><div><span style="font-size:14.399999618530273px;line-height:18.399999618530273px"><font face="courier new, monospace">all          3040580  =   3Gb</font></span></div>
</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
To this, one should add the memory allocations of any other </div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">program running in your computer (including the OS).</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">Please find attached the example:</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<a href="https://github.com/InsightSoftwareConsortium/ITK/blob/master/Examples/Segmentation/FastMarchingImageFilter.cxx">https://github.com/InsightSoftwareConsortium/ITK/blob/master/Examples/Segmentation/FastMarchingImageFilter.cxx</a><br>
</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">but, modified with calls to the MemoryProbes collector.</div>
<div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">Introducing the memory probes in a similar way your code, </div>
<div style="font-size:14.399999618530273px;line-height:18.399999618530273px">may help to track where the memory consumption is going.</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div>
<div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">As Jon pointed out, using the <span style="font-family:arial,sans-serif;font-size:12.800000190734863px;line-height:normal">ReleaseDataFlagOn() will help,</span></div>
<div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px;line-height:normal">by releasing intermediate memory as the pipeline progresses.</span></div>
<div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px;line-height:normal"><br></span></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<span style="font-family:arial,sans-serif;font-size:12.800000190734863px;line-height:normal">You may want to add the calls</span></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px;line-height:normal"><br>
</span></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px;line-height:normal">reader->ReleaseDataFlagOn();</span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px;line-height:normal"><br>
</span></div><div><font face="arial, sans-serif">smoothing-></font><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">ReleaseDataFlagOn();</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">gradient-></span><font face="arial, sans-serif">ReleaseDataFlagOn();</font></div>
<div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">...etc...</font></div><div><font face="arial, sans-serif"><br></font></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">    Regards,</div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px"><br></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">           Luis</div></div><div style="font-size:14.399999618530273px;line-height:18.399999618530273px">
<br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jan 10, 2014 at 4:19 AM, Jon Haitz Legarreta <span dir="ltr"><<a href="mailto:jhlegarreta@vicomtech.org" target="_blank">jhlegarreta@vicomtech.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Dear zhq,<br>I'd dare to say that evein if your image fits into your memory, you may have multiple copies already in memory that prevent your last filter to have enough room for it to run.<br>
<br>
</div>You may want to check the available meory before that step, or you may try releasing the upstream filters' allocated memory turning on the ReleaseDataFlag (ReleaseDataFlagOn).<br><br></div>HTH,<br>JON HAITZ<br>
<br>
<div><div><br><div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On 10 January 2014 03:26, zhq <span dir="ltr"><<a href="mailto:15891495523@126.com" target="_blank">15891495523@126.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="h5"><div style="line-height:1.7;font-size:14px;font-family:arial">Dear all :<div>
<br></div><div>        Using the FastMarchingImageFilter to segment a vessel , I meet a error : Failed to allocate memory for image</div>
<div>        <img src="http://mail.126.com/js5/s?func=mbox:getMessageData&sid=*&mid=206:1tbizgUKSEq90PSB1QABsP&part=3" style="border:0px none;line-height:1.7"></div><div>        I find the wrong place using try-catch :</div>

<div><span style="white-space:pre-wrap">  </span>When the sentence : gradientMagnitude->Update(); is run , the error happens !</div><div>        My computer's memory is 12G , and the volume data is : 512*512*390  . I believe the memory is enough ! And the code has successfully been run once using the other data . </div>

<div>        Could somebody give me some advices ? Thanks vary much in advance !</div><div>zhq</div></div><br><br><span title="neteasefooter"><span><div><div style="border-top:1px solid rgb(204,204,204);padding:10px 5px;font-size:12px;color:rgb(102,102,102);line-height:22px">

来自网易手机号码邮箱<a href="http://shouji.163.com" style="color:rgb(0,0,255)" target="_blank">了解更多</a></div></div>
</span></span><br></div></div>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br></div></div></div></div></div>
<br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br></div>