Your SlideShare is downloading. ×
0
Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176
Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176
Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176
Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176
Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176
Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176
Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems-4176
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

746

Published on

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

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
746
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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. 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. 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. Results
  • 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>

×