NAC: Optimized registration in Slicer <ul><li>Goals </li></ul><ul><ul><li>Optimize ITK registration framework </li></ul></...
Optimize registration <ul><ul><li>Threaded base classes: interpolators, transforms, and metrics </li></ul></ul><ul><ul><ul...
Optimize registration <ul><ul><li>Extend ImageToImageMetric base class </li></ul></ul><ul><ul><ul><li>Samples </li></ul></...
Optimize registration <ul><li>Other optimizations </li></ul><ul><ul><li>Memset </li></ul></ul><ul><ul><li>Floor </li></ul>...
Monitor <ul><li>RealTimeHighPriorityTimer </li></ul><ul><ul><li>SetPriority, SetThreadAffinity </li></ul></ul><ul><li>Batc...
Results
NAC: Optimized registration in Slicer <ul><li>Slicer Modules </li></ul><ul><ul><li>BWHITKOptimization/Code/Applications/Sl...
Upcoming SlideShare
Loading in...5
×

Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176

762

Published on

http://hdl.handle.net/1926/566

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
762
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176

  1. 1. NAC: Optimized registration in Slicer <ul><li>Goals </li></ul><ul><ul><li>Optimize ITK registration framework </li></ul></ul><ul><ul><ul><li>Targets: </li></ul></ul></ul><ul><ul><ul><ul><li>Multi-processor and multi-core, shared memory systems </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Medium and large-size problems </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Transforms, Interpolators, and metrics </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Thread, pre-compute, and integrate </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Maximize backward compatibility </li></ul></ul></ul><ul><ul><li>Monitor project’s progress </li></ul></ul><ul><ul><li>Deliver as Slicer3 modules </li></ul></ul>
  2. 2. Optimize registration <ul><ul><li>Threaded base classes: interpolators, transforms, and metrics </li></ul></ul><ul><ul><ul><li>TransformPoint(itk::Point, unsigned int threadID) </li></ul></ul></ul><ul><ul><ul><li>GetValue(itk::Point, unsigned int threadID) </li></ul></ul></ul><ul><ul><ul><li>Reduce creation/destruction of local vars </li></ul></ul></ul><ul><ul><ul><li>Increase memory requirements (minimal) </li></ul></ul></ul>
  3. 3. Optimize registration <ul><ul><li>Extend ImageToImageMetric base class </li></ul></ul><ul><ul><ul><li>Samples </li></ul></ul></ul><ul><ul><ul><ul><li>Random, entire image, or passed as list </li></ul></ul></ul></ul><ul><ul><ul><li>Detect BSpline transform </li></ul></ul></ul><ul><ul><ul><ul><li>pre-compute weights, relevant control points, and rigid transform of samples </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Integrate transform and metric </li></ul></ul></ul></ul><ul><ul><ul><li>Detect BSpline interpolator </li></ul></ul></ul><ul><ul><ul><ul><li>Optimize derivative computation </li></ul></ul></ul></ul><ul><ul><ul><li>Threaded metric computation </li></ul></ul></ul><ul><ul><ul><ul><li>ThreadedPreProcess </li></ul></ul></ul></ul><ul><ul><ul><ul><li>ThreadedProcessSample </li></ul></ul></ul></ul><ul><ul><ul><ul><li>ThreadedPostProcess </li></ul></ul></ul></ul>
  4. 4. Optimize registration <ul><li>Other optimizations </li></ul><ul><ul><li>Memset </li></ul></ul><ul><ul><li>Floor </li></ul></ul><ul><ul><li>Do not use MUTEX </li></ul></ul><ul><ul><li>Limit amount of data distribution and integration when threads created/destroyed </li></ul></ul><ul><li>Method-specific optimizations </li></ul><ul><ul><li>E.g., MattesMIMetric </li></ul></ul><ul><ul><ul><li>JointPDF – one per thread during process sample </li></ul></ul></ul><ul><ul><ul><li>JointPDF – re-integrated using one region per thread </li></ul></ul></ul>
  5. 5. Monitor <ul><li>RealTimeHighPriorityTimer </li></ul><ul><ul><li>SetPriority, SetThreadAffinity </li></ul></ul><ul><li>BatchMake </li></ul><ul><ul><li>GetCPUInfo </li></ul></ul><ul><ul><ul><li># of cores, speed, etc </li></ul></ul></ul><ul><ul><li>GetMemoryInfo </li></ul></ul><ul><ul><ul><li>Physical memory </li></ul></ul></ul><ul><ul><li>SendToBatchBoard </li></ul></ul><ul><ul><ul><li>Parameters, results </li></ul></ul></ul><ul><ul><li>Available as commands, function calls, and CMake variables </li></ul></ul><ul><li>BatchBoards </li></ul>
  6. 6. Results
  7. 7. NAC: Optimized registration in Slicer <ul><li>Slicer Modules </li></ul><ul><ul><li>BWHITKOptimization/Code/Applications/SlicerRegistrationModules </li></ul></ul><ul><ul><li>Same GUI as current registration modules </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×