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

  • 711 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
711
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

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