CUDA Diffusion Modelling Toolbox (cuDIMOT)

CUDIMOT is a toolbox, part of FSL (FMRIB Software Library), for designing and implementing MRI nonlinear models on Graphics Processing Units (GPUs).

The toolbox includes:

  • An easy C interface for specifying your model parameters and functions.
  • Three nonlinear optimisation routines:
    • MCMC
    • Levenberg-Marquardt
    • Grid Search
  • Can use different models concatenating outputs/inputs
  • Gaussian and Rician noise modelling
  • Parameters bounds and Priors: Gaussian, Gamma, ARD, sin()
  • Bayesian information criterion (BIC) and Akaike information criterion (AIC)
  • Several diffusion MRI models implemented: Ball&Sticks, NODDI-Watson, NODDI-Bingham, Ball&Rackets
  • Can use multiple GPUs to fit a dataset

The only required libraries are FSL (FMRIB Software Library) and CUDA toolkit. You will need an NVIDIA GPU.*

Installation

If you want to use the toolbox for implementing your own models you can download it here:

cudimot.zip

Downloading individual cuDIMOT NODDI_Watson binaries and scripts

  • Create a directory for storing CUDIMOT binary files and set CUDIMOT variable with that path - for instance: export CUDIMOT=/home/moises/CUDIMOT
  • Download the correct NODDI_Watson file for your CUDA version
  • Unzip NODDI_Watson file
  • Copy all the uncompressed files from NODDI_Watson/bin/* directory to your $CUDIMOT/bin/* directory
  • To fit the model use: $CUDIMOT/bin/Pipeline_NODDI_Watson.sh [SubjectDirectory]
  • The pipeline uses SGE for sending jobs to a GPU queue (name of queue can be redefined in FSLGECUDAQ environment variable).
  • If you want to run the tool without using SGE, the environment variable SGE_ROOT should be unset: unset SGE_ROOT
  • If you have several GPUs, you can use the option -NJOBS X to create X different GPUs jobs, each one for processing a subpart of the dataset (this option can process the dataset very fast)
  • Requirements: NVIDIA GPU compute capability >= 3.0
  • Cuda 12 binaries require FSL 6.0.6 or later. $FSLDIR/lib and the Cuda 12 libraries must be in LD_LIBRARY_PATH

Version 0.2

Version 0.1

NODDI_Bingham binaries and scripts

  • You can also download cuDIMOT NODDI_Bingham binaries and scripts:
  • Please follow the same steps as for NODDI_Watson, but using NODDI_Bingham files
  • To fit the model use: $CUDIMOT/bin/Pipeline_NODDI_Bingham.sh [SubjectDirectory]

Version 0.2

Version 0.1

Implementing your own model

See separate page for information on how to use the tool for implementing your own model.

Also see information on fitting your model and debugging cuDIMOT

Citation

If you use cuDIMOT in publications, please cite this paper:

Hernandez-Fernandez M., Reguly I., Jbabdi S, Giles M, Smith S., Sotiropoulos S.N. “Using GPUs to accelerate computational diffusion MRI: From microstructure estimation to tractography and connectomes.” NeuroImage 188 (2019): 598-615.