Difference between revisions of "ITK Registration Optimization"
From NAMIC Wiki
Line 1: | Line 1: | ||
+ | = Goals = | ||
+ | |||
+ | There are two components to this research | ||
+ | # Identify registration algorithms that are suitable for non-rigid registration problems that are indemic to NA-MIC | ||
+ | # Develop implementations of those algorithms that take advantage of multi-core and multi-processor hardware. | ||
+ | |||
+ | == Algorithmic Requirements and Use Cases == | ||
+ | |||
+ | * Requirements | ||
+ | ** relatively robust, with few parameters to tweak | ||
+ | ** runs on grey scale images | ||
+ | ** has already been published | ||
+ | ** relatively fast (ideally speaking a few minutes for volume to volume). | ||
+ | ** not patented | ||
+ | ** can be implemented in ITK and parallelized. | ||
+ | |||
+ | * Use-cases | ||
+ | *# '''Intersubject mapping''' [[Intersubject|example data set]] (Kilian) | ||
+ | *# '''fMRI to hi-res brain morphology mapping''' [[FMRI-to-hires|example data set]] (Steve Pieper) | ||
+ | *# '''DTI: components of the diffusion tensor''' [[DTI-non-rigid]] (Sylvain) | ||
+ | |||
+ | == Performance Requirements and Use Cases == | ||
+ | |||
+ | * Requirements | ||
+ | ** Single and multi-core machines | ||
+ | ** Single and multi-processor machines | ||
+ | ** AMD and Intel - Windows, Linux, and SunOS | ||
+ | |||
+ | * Use-cases | ||
+ | ** <list specific machines here> | ||
+ | |||
+ | = Workplan = | ||
+ | |||
+ | # Quantify current performance and bottlenecks | ||
+ | ## Identify timing tools (cross platform, multi-threaded) | ||
+ | ## For each use-case | ||
+ | ### Centralized data and provide easy access | ||
+ | ### Identify relevant registration algorithm(s) | ||
+ | ### Develop traditional ITK-style implementations | ||
+ | ### Develop timing tests using implementations and data | ||
+ | ## Across use-cases | ||
+ | ### Identify ITK classes/functions common to implementations (e.g., interpolation/resampling) | ||
+ | ### Develop timing tests specific to these common sub-classes | ||
+ | ## Compute performance on multiple platforms | ||
+ | |||
+ | = Progress Highlights = | ||
+ | |||
+ | # Quantify current performance and bottlenecks | ||
+ | ## Identify timing tools | ||
+ | ##* We have chosen [http://www.cs.uoregon.edu/research/tau/home.php| TAU] for the performance quantification tool | ||
+ | ##* Summary of select performance quantification tools is available here | ||
+ | |||
+ | |||
+ | = Performance Measurement = | ||
* [http://www.intel.com/cd/software/products/asmo-na/eng/vtune/vlin/239145.htm Intel's VTune for Linux] ($) | * [http://www.intel.com/cd/software/products/asmo-na/eng/vtune/vlin/239145.htm Intel's VTune for Linux] ($) | ||
* [http://www.cs.uoregon.edu/research/tau/home.php TAU] | * [http://www.cs.uoregon.edu/research/tau/home.php TAU] |
Revision as of 04:44, 7 January 2007
Home < ITK Registration OptimizationContents
Goals
There are two components to this research
- Identify registration algorithms that are suitable for non-rigid registration problems that are indemic to NA-MIC
- Develop implementations of those algorithms that take advantage of multi-core and multi-processor hardware.
Algorithmic Requirements and Use Cases
- Requirements
- relatively robust, with few parameters to tweak
- runs on grey scale images
- has already been published
- relatively fast (ideally speaking a few minutes for volume to volume).
- not patented
- can be implemented in ITK and parallelized.
- Use-cases
- Intersubject mapping example data set (Kilian)
- fMRI to hi-res brain morphology mapping example data set (Steve Pieper)
- DTI: components of the diffusion tensor DTI-non-rigid (Sylvain)
Performance Requirements and Use Cases
- Requirements
- Single and multi-core machines
- Single and multi-processor machines
- AMD and Intel - Windows, Linux, and SunOS
- Use-cases
- <list specific machines here>
Workplan
- Quantify current performance and bottlenecks
- Identify timing tools (cross platform, multi-threaded)
- For each use-case
- Centralized data and provide easy access
- Identify relevant registration algorithm(s)
- Develop traditional ITK-style implementations
- Develop timing tests using implementations and data
- Across use-cases
- Identify ITK classes/functions common to implementations (e.g., interpolation/resampling)
- Develop timing tests specific to these common sub-classes
- Compute performance on multiple platforms
Progress Highlights
- Quantify current performance and bottlenecks
- Identify timing tools
- We have chosen TAU for the performance quantification tool
- Summary of select performance quantification tools is available here
- Identify timing tools
Performance Measurement
- Intel's VTune for Linux ($)
- TAU
- Threadmon: Thread usage/blockage
- TotalView ($)
- PerfSuite (POSIX Threads)
- GProf work-around for multi-threaded apps
- References on multi-threaded profiling and code optimization