QSIPrep: Eddy CUDA on single powerful GPU vs two slower GPUs for multiple subjects

Summary of what happened:

Dear all,

We are about to buy a workstation for processing our DWI data and I’m wondering whether it’s better to have one powerful GPU (e.g. RTX 5000 PRO Blackwell 48 GB) vs. having two or three lesser (but still powerful) GPUs (eg. RTX 4000 PRO Blackwell 24 GB) for the same price.

We want to run the CUDA version of eddy within qsiprep on several patients at the same time.

I would like to kindly ask for guidance on this matter.

Thank you very much.

Command used (and if a helper script was used, a link to the helper script or the command generated):

N/A

Version:

QSIPrep v26.1.0.dev13+ge84d1f9a4

Environment (Docker, Singularity / Apptainer, custom installation):

Docker

Data formatted according to a validatable standard? Please provide the output of the validator:

N/A

Relevant log outputs (up to 20 lines):

N/A

Screenshots / relevant information:


Hi @samuelholly,

I am not sure we’ve ever benchmarked something like this, but my intuition would be that the two GPU solution would be faster for running all of your subjects because any difference in the per-subject time would only be from Eddy. I can’t imagine any Eddy speed-ups from the stronger GPU out weighing the chance to run twice as many subjects in parallel.

Best,

Steven

1 Like

Dear Steven,

thank you for the reply. Just to be sure, you can run eddy_cuda on just one subject per GPU at a time. Is that correct?

Best regards

Samuel

Hi @samuelholly,

That might depend on what kind of system you are using and the specs of the GPU. I imagine dedicated job schedulers like SLURM could allocate multiple subjects to a GPU if it has enough resources. I do not know about running on a local machine though.

Best,

Steven

1 Like

FWIW It is possible to run multiple invocations of eddy_cuda (more generally any CUDA executable) on a single GPU, as long as the GPU has enough memory.

2 Likes

@paulmccarthy thank you, it’s valuable information. I was unsure because when I ran qsiprep on my current machine, it printed “Free GPU slots: 0/1“ while running eddy_cuda, so I got the impression that you cannot run more than one patient at a time.

Thank you both.

@samuelholly I’m not 100% sure, but there is a chance that GPUs on shared systems (e.g. HPCs/clusters) can be configured to only allow a certain number of jobs. Most of my experience is using a local GPU, where there doesn’t seem to be any limit to the number of processes that can use it.

@paulmccarthy thank you very much, we will try and see :slight_smile: