[Insight-developers] itk performance numbers

Bradley Lowekamp blowekamp at mail.nih.gov
Wed Jul 25 17:18:35 EDT 2012


Hello,

Continuing to glance at the class.... I also see the following member variables for the MeanSquares class:

  MeasureType *   m_ThreaderMSE;
  DerivativeType *m_ThreaderMSEDerivatives;

Where these are index by the thread ID and access simultaneously across the threads causes the potential for False Sharing, which can be a MAJOR problem with threaded algorithms.

I would think a good solution would be to create a per-thread data structure consisting of the Jacobin, MeasureType, and DerivativeType, plus padding to prevent false sharing, or equivalently assigning max data alignment to the structure.

Rupert, Would like to take a stab at this fix?

Brad


On Jul 25, 2012, at 4:31 PM, Rupert Brooks wrote:

> Sorry if this repeats - i just got a bounce from Insight Developers, so im trimming the message and resending....
> --------------------------------------------------------------
> Rupert Brooks
> rupert.brooks at gmail.com
> 
> 
> 
> On Wed, Jul 25, 2012 at 4:12 PM, Rupert Brooks <rupert.brooks at gmail.com> wrote:
> Aha.  Heres around line 183 of itkTranslationTransform.
> 
> // Compute the Jacobian in one position
> template <class TScalarType, unsigned int NDimensions>
> void
> TranslationTransform<TScalarType, NDimensions>::ComputeJacobianWithRespectToParameters(
>   const InputPointType &,
>   JacobianType & jacobian) const
> {
>   // the Jacobian is constant for this transform, and it has already been
>   // initialized in the constructor, so we just need to return it here.
>   jacobian = this->m_IdentityJacobian;
>   return;
> }
> 
> Thats probably the culprit, although the root cause may be the reallocating of the jacobian every time through the loop.
> 
> Rupert
> 
> <snipped>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-developers/attachments/20120725/657a5bbf/attachment.htm>


More information about the Insight-developers mailing list