GPUs offer the opportunity for accelerating the execution of certain ITK filters.
In collaboration with Interactive Supercomputing we are looking into the possibility of adding GPU acceleration to particular algorithms in ITK.
The methodology suggested so far, is to take advantage of the Factory mechanism built-in ITK to create specialized versions of specific image filter. These specialized versions will take advantage of a GPU-based implementation.
Since the acceleration requires to hand-craft the code, this will only be implemented for a few selected algorithms that are considered to be critical for the benefit of the ITK community.
By the end of 2008, the first version of the OpenCL standard was published. Quoting the OpenCL site:
OpenCL (Open Computing Language) is the first open, royalty-free standard for general-purpose parallel programming of heterogeneous systems. OpenCL provides a uniform programming environment for software developers to write efficient, portable code for high-performance compute servers, desktop computer systems and handheld devices using a diverse mix of multi-core CPUs, GPUs, Cell-type architectures and other parallel processors such as DSPs.
OpenCL may be useful to have a more generic approach to writing parallel code for ITK, and a refactoring of the current multi-threading mechanism could be possible.
We are looking for your feedback to define the list of algorithms that are good candidates for GPU acceleration.
Please add here the types of applications that you would consider to be good candidates for creating GPU-based specialized implementations.
- Deformable registration
- Level Sets
- Hessian-based vessel enhancement (ie. Hessian Recursive Gaussian and Hessian 3D To Vesselness Measure)
- Image smoothing