Sean,

It's for performance reasons to prevent false sharing. This was a significant 
bottle neck in the v3 Mattes Mutual Information metric, so it was quite worth 
the effort.

Is this the cause for any failing tests? Or is this just a warning, that the 
alignment will be ignored?

Here are some performance improvements number I posted to the developer's list 
for that patch:


MeanSquares:
Threads 3.2             4.2             4.2+patch       patch percentage of 3.20
1               0.3615  0.8214  0.4071          113%
2               0.3222  0.6055  0.3365          104%
4               0.3249  0.4448  0.3293          101%
8               0.1703  0.3093  0.1943          114%
12              0.1457  0.2031  0.1322          91%
24*             0.1062  0.1332  0.0949          89%

MutualInformation:
Threads 3.2             4.2             4.2+patch       patch percentage of 3.20
1               0.1467  0.6103  0.3353          228%
2               0.1036  0.3747  0.1774          171%
4               0.0847  0.2175  0.1262          149%
8               0.0655  0.1291  0.0681          104%
12              0.0551  0.1035  0.0486          88%
24*             0.0460  0.0829  0.0526          114%

*Hyperthreading


There is likely a better, and likely more complicated way to achieve the same 
results, which can not be done until after 4.4 release. I would object to 
hastily removing, this optimization.

Brad




On May 21, 2013, at 11:07 AM, Sean McBride <[email protected]> wrote:

> Hi all,
> 
> My Rogue7 dashboard has a few warnings from clang's -Wover-aligned:
> 
> <http://open.cdash.org/viewBuildError.php?type=1&buildid=2911702>
> 
> I'm not a language lawyer, but these look legit to me.  Since I build as 
> C++11 I fall into:
> 
> #define ITK_CACHE_LINE_ALIGNMENT 64
> 
> # define itkAlignedTypedef( alignment, oldtype, newtype )   \
>  typedef oldtype newtype alignas(alignment)
> 
> The standard says this about operator new: "The pointer returned shall be 
> suitably aligned so that it can be converted to a pointer of any complete 
> object type with a fundamental alignment requirement."  std::max_align_t has 
> the strictest fundamental alignment, and, on my system anyway, it's smaller 
> than 64.
> 
> Is ITK_CACHE_LINE_ALIGNMENT only for performance?  Maybe it should be removed?
> 
> Thanks,
> 
> -- 
> ____________________________________________________________
> Sean McBride, B. Eng                 [email protected]
> Rogue Research                        www.rogue-research.com 
> Mac Software Developer              Montréal, Québec, Canada
> 
> 
> _______________________________________________
> 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://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-developers

_______________________________________________
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://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-developers

Reply via email to