[Insight-users] SignedMaurerDistanceMapImageFilter performance
Bradley Lowekamp
blowekamp at mail.nih.gov
Mon Jul 2 12:02:35 EDT 2012
Would you by any chance be using an express Visual Studio version? Those compiler are missing a fair amount of optimization. I have not compared the difference myself though.
Brad
On Jul 2, 2012, at 11:38 AM, Sergio Vera wrote:
> Hello Bradley
>
> Thanks for your script
>
> I've tried your script and the timings are coherent with yours (although my desktop is slower than your laptop :) )
>
> The average time it took to execute SignedMaurerDistanceMap was 5.3353600223 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 6.62535580948 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 6.90300935124 seconds.
>
> I've modified it to read my image (it's only 300k but it seems too big for the list) and the results are definitely lower than 13 seconds, closer to the 7 seconds from Mevislab's ITK....
>
> The average time it took to execute SignedMaurerDistanceMap was 8.87152283895 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 9.38857726434 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 9.54250972999 seconds.
>
> Indeed it is strange that my code runs slower :( My executable being compiled in release mode, compiler flags are /02 and Visual studio is clearly put in release. Also, when I launch the debug version the distance map time is 114 seconds. However I'm not sure why it tools so long to compute the distance map..
>
> Thanks
>
> On Mon, Jul 2, 2012 at 4:07 PM, Bradley Lowekamp <blowekamp at mail.nih.gov> wrote:
> Hello Sergio,
>
> But are you compiling your program also in release mode? The filter is not part of the ITK code in the library, because it is a templated filter, it will be compiled in your application, so that is where it matters if you are in Release or debug mode.
>
> I wrote the following little SimpleITK python script, which uses the latest ITK 4.2rc04:
>
> import SimpleITK as sitk
> import os
> from timeit import Timer
>
> repeat = 10
>
> img = sitk.Image( [512,512,110], sitk.sitkUInt8 )
> img[255,255,55 ] = 1
>
> filter = sitk.SignedMaurerDistanceMapImageFilter()
>
> print "Defaults:"
> print filter
>
> t = Timer( lambda: filter.Execute( img ) )
>
> print "The average time it took to execute", filter.GetName(), "was", min(t.repeat( repeat=repeat,number=1 )), "seconds. "
>
> filter.InsideIsPositiveOff()
> filter.SquaredDistanceOff()
> filter.UseImageSpacingOn();
>
> t = Timer( lambda: filter.Execute( img ) )
>
> print "The average time it took to execute", filter.GetName(), "was", min(t.repeat( repeat=repeat,number=1 )), "seconds. "
>
> t = Timer( lambda: filter.Execute( ~img ) )
>
> print "The average time it took to execute", filter.GetName(), "was", min(t.repeat( repeat=repeat,number=1 )), "seconds. "
>
> Your large image didn't come attached, so I just created a trivial on to run performance. This is my results in my i7 laptop:
>
> Defaults:
> itk::simple::SignedMaurerDistanceMapImageFilter
> InsideIsPositive: 0
> SquaredDistance: 1
> UseImageSpacing: 0
>
> The average time it took to execute SignedMaurerDistanceMap was 2.05940294266 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 2.61217999458 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 2.7291328907 seconds.
>
>
> As I was running this multiple times, I appear to be getting a variation of ~.5 seconds due to what I am assuming is the temperature of my CPU, and intel's TuboBoost.
>
> Additionally, it's not clear which timings are using only one thread and which are using more. So I also ran the test with only one thread:
>
> The average time it took to execute SignedMaurerDistanceMap was 8.77108097076 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 9.40146708488 seconds.
> The average time it took to execute SignedMaurerDistanceMap was 9.63690400124 seconds.
>
> I tend to agree with Bill, there is something funny about how you compiled it.
>
> Brad
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>
>
>
> --
> Sergio Vera
>
> Alma IT Systems
> C/ Vilana, 4B, 4º 1ª
> 08022 Barcelona
> T. (+34) 932 380 592
> www.alma3d.com
========================================================
Bradley Lowekamp
Medical Science and Computing for
Office of High Performance Computing and Communications
National Library of Medicine
blowekamp at mail.nih.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120702/d527ed1c/attachment.htm>
More information about the Insight-users
mailing list