KCL-BMEIS / niftyreg

This project contains command line tools to perform rigid, affine and non-linear registration of nifti or analyse images as well as utilities

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GPU availability

skgtohn opened this issue · comments

Dear NiftyReg Developers,

I am currently using NiftyReg version 1.5.70rc1 for my image registration tasks on a shared compute cluster. I am interested in leveraging the power of the GPU for my computations.

From the project documentation, I understand that certain algorithms (like reg_f3d and reg_aladin) have GPU-accelerated versions (reg_f3d_gpu and reg_aladin_gpu). However, in my current NiftyReg installation, I do not see these GPU versions listed when I check the commands in my installation's bin directory.

While browsing the GitHub issue tracker for NiftyReg, I noticed several threads related to GPU functionality. It appears that GPU support may have been removed in recent versions, which raised my curiosity about the current status of GPU functionality in NiftyReg.

Could you kindly provide an update on the availability of GPU-accelerated functionality within NiftyReg?

Best
Curtis

Hi Curtis,

Initially NiftyReg only had one algorithm, namely the default reg_f3d, a re-implementation of the classical Free-Form Deformation from Rueckert et al., that was implemented using C(++) and CUDA. As I added more variations of reg_f3d such as symmetric and stationary velocity field parametrisations as well as other measures of similarity and regularisations, it became complicated to maintain all platforms as they were effectively duplicating the code and yielded different results. I thus deprecated all GPU based implementation at the time.
Recently, we undertook the task of refactoring it all to use a platform/kernel/content approach and thus re-enable the CUDA kernels. As I am keen to have the CPU and GPU version producing the same results, it takes quite a bit of time and we are not finished yet. Should you want to look were we are up to, you can use the branch mentioned in issue #92. The largest part of the work has been done and hopefully we will be able to merge soon-ish.