<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hello,<div><br></div><div>It sounds like you are doing your own threading, and you have multiple threads trying to execute the pipeline. ITK expects only one thread to be executing or updating the pipeline. The pipeline is not thread safe in the way you appear to be assuming. This would explain the sporadic crashing.</div><div><br></div><div>Brad</div><div><br><div><div>On Oct 22, 2009, at 3:54 PM, Pete79 wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br>Luis, hi.<br><br><br>Luis Ibanez wrote:<br><blockquote type="cite"><br></blockquote><blockquote type="cite">The Resample image filter already knows how to distribute<br></blockquote><blockquote type="cite">its load over multiple threads. &nbsp;There is no benefit in you<br></blockquote><blockquote type="cite">trying to do that distribution manually.<br></blockquote><blockquote type="cite"><br></blockquote><br>There is a benefit in a way I'm also using a bunch of my own subroutines<br>that perform heavy computations after affine transforms of let's say 2000<br>regions per image are completed. Therefore, I do prefer to keep a local<br>affine transformed image object in each thread and further feed it to my<br>subroutines rather than process sequentially (although with multithreading)<br>all regions, keep pointers to 2000 images and then pass them to my custom<br>threads when launched ... if you get my drift.<br><br><br><br><blockquote type="cite">You can easily verify this by running any of the many<br></blockquote><blockquote type="cite">examples in the directory:<br></blockquote><blockquote type="cite"><br></blockquote><br>Thanks, I am really familiar with them by now, though there is nothing<br>challenging about the whole case. I know that when images are large, it can<br>basically split the load into multiple jobs.<br><br><br><br><blockquote type="cite">Please let us know what you find.<br></blockquote><blockquote type="cite"><br></blockquote><br>This may be the most startling, but it looks I've tracked down the bug that<br>was sporadically happening - &nbsp;let's say once a 1000 files processed. I<br>cannot vouch I'm 100% sure my code is bug-free, but I was fiddling and<br>testing behaviour of the code on a large dataset to be sure that I can<br>reproduce these crashes, and ...<br><br>when I chucked out RegionOfInterestImageFilter and replaced it with my<br>custom code, all problems disappeared finally (at least I cannot spot<br>nothing wrong at the moment).<br><br>The code in the custom thread subroutine used to be as follows:<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>// &lt;== for picking up a desired ROI<br><span class="Apple-tab-span" style="white-space:pre">        </span>ITKLabROIFSPT pfROIOfLabsIm=ITKLabROIFT::New();<br><span class="Apple-tab-span" style="white-space:pre">        </span>ITKOrigBWROIFSPT pfROIOfOrigBWIm=ITKOrigBWROIFT::New();<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>// &lt;== inputs of ROI filters are set up for every instance of a filter<br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfLabsIm-&gt;SetInput(piLabsInC);<br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfOrigBWIm-&gt;SetInput(piOrigBWC);<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>// &lt;== sets up ROI of a ROI filter<br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfLabsIm-&gt;SetRegionOfInterest(xRegPairOfSegs);<br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfOrigBWIm-&gt;SetRegionOfInterest(xRegPairOfSegs);<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfLabsIm-&gt;SetNumberOfThreads(1);<br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfOrigBWIm-&gt;SetNumberOfThreads(1);<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfLabsIm-&gt;Update();<br><span class="Apple-tab-span" style="white-space:pre">        </span>pfROIOfOrigBWIm-&gt;Update();<br><br>I've made sure I wasn't requesting a region outside of image dimensions, but<br>it still kept crashing once a blue moon when launched in a thread (even when<br>it was left out solely alone in the thread code).<br><br>I just replaced it with:<br><span class="Apple-tab-span" style="white-space:pre">        </span>// &lt;== for picking up desired ROI <br><span class="Apple-tab-span" style="white-space:pre">        </span>ITKLabsInImSPT piROIOfLabsIm;<br><span class="Apple-tab-span" style="white-space:pre">        </span>CloneImage&lt;ITKLabsInImT, ITKLabsInImT&gt;(piLabsInC, xRegPairOfSegs,<br>piROIOfLabsIm);<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>ITKOrigBWImSPT piROIOfOrigBWIm;<br><span class="Apple-tab-span" style="white-space:pre">        </span>CloneImage&lt;ITKOrigBWImT, ITKOrigBWImT&gt;(piOrigBWC, xRegPairOfSegs,<br>piROIOfOrigBWIm);<br><br><br>And the CloneImage is defined more or less as the following:<br><span class="Apple-tab-span" style="white-space:pre">        </span>NewImage&lt;ITKOutputImT&gt;(rpiOutputImC, rxRegInputImC);<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>ITKInputImItT itITKInputIm_i(piInputImC, rxRegInputImC);<br><span class="Apple-tab-span" style="white-space:pre">        </span>ITKOutputImItT itITKOutputIm_i(rpiOutputImC, rxRegInputImC);<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>for (itITKInputIm_i.GoToBegin(), itITKOutputIm_i.GoToBegin();<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> !itITKInputIm_i.IsAtEnd(); ++itITKInputIm_i, ++itITKOutputIm_i)<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>itITKOutputIm_i.Set(itITKInputIm_i.Get());<br><br>It allocates desired ROI image and links with a smart pointer, sets up a ROI<br>for iterator which copies from a source to destination.<br><br>From that moment on all issues have gone away.<br><br>Further, I consider ROI filter is rather straightforward, cannot see where I<br>could have made an error, if any really. What do you reckon? Any chance the<br>whole mishandling happened inside ROI filter? If so, that'd amount to a bug<br>...<br><br><br>Many Thanks,<br>Peter<br>-- <br>View this message in context: <a href="http://www.nabble.com/ResampleImageFilter-and-ITK_USE_OPTIMIZED_REGISTRATION_METHODS-tp25967879p26016179.html">http://www.nabble.com/ResampleImageFilter-and-ITK_USE_OPTIMIZED_REGISTRATION_METHODS-tp25967879p26016179.html</a><br>Sent from the ITK - Users mailing list archive at <a href="http://Nabble.com">Nabble.com</a>.<br><br>_____________________________________<br>Powered by <a href="http://www.kitware.com">www.kitware.com</a><br><br>Visit other Kitware open-source projects at<br><a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br><br>Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ<br><br>Follow this link to subscribe/unsubscribe:<br>http://www.itk.org/mailman/listinfo/insight-users<br></div></blockquote></div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">========================================================</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">Bradley Lowekamp<span class="Apple-converted-space">&nbsp;</span><span class="Apple-converted-space">&nbsp;</span></font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font class="Apple-style-span" face="Arial"><span class="Apple-style-span" style="font-family: Arial; "><span class="Apple-style-span" style="font-family: Arial; ">Lockheed Martin&nbsp;</span></span></font><font face="Helvetica" size="3" style="font: 12.0px Helvetica">Contractor for</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">Office of High Performance Computing and Communications</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">National Library of Medicine<span class="Apple-converted-space">&nbsp;</span></font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica"><a href="mailto:blowekamp@mail.nih.gov">blowekamp@mail.nih.gov</a></font></p><br class="Apple-interchange-newline"></span></span>
</div>
<br></div></body></html>