Dear FreeSurfer users,
I am using Freesurfer 6.0 and Tracula 6.0 for processing MRI and DTI scans. The second step of the trac-all pipeline performs the ball-and-stick fit with the bedpost function from FSL. Documentation for FSL suggests that the use of GPUs can considerably speed this process (from ~15 hours on a single-threaded machine to 30 minutes on GPU; see bulletpoint 7 under processing pipeline at https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FDT/UserGuide#Processing_pipeline).
Using GPU requires calling "bedpostx_gpu" (instead of "bedpostx") on a machine with a NVIDIA GPU and CUDA toolkit, both of which I have access to. The "bedpostx_gpu" function has, otherwise, the same flags as "bedpostx".
While there is another post on the FreeSurfer forum on this topic (https://www.mail-archive.com/freesurfer@nmr.mgh.harvard.edu/msg54498.html), the answer there does not refer to how "bedpostx_gpu" can be used.
Is there a way to call on "bedpostx_gpu" instead of "bedpostx" in the second step of the trac-all pipeline? More precisely, is there a way to adjust the command:
trac-all -bedp -c dmrirc
to take advantage of GPU capabilities?
Alternatively, is the source code for the "trac-all" binary available? For example, if is there a bash script that performs the same steps as the "trac-all -bedp -c dmrirc" available, then GPU capabilities can be exploited by running that script except replacing "bedpostx" with "bedpostx_gpu".
Thank you.
Best,
Chintan
Hi Chintan - Freesurfer is open source, so all of our source code is available, but trac-all is actually a shell script, so you can find it under $FREESURFER_HOME/bin/.
TRACULA just expects the output files of bedpostX, and does not care if they were generated on GPUs or CPUs. Just provide the $subjectID/dmri directory (created by the first step of trac-all) as the argument to either version of bedpostX. After it's done, you can skip to the 3rd step of trac-all.
Hope this helps,
a.y ________________________________ From: freesurfer-bounces@nmr.mgh.harvard.edu [freesurfer-bounces@nmr.mgh.harvard.edu] on behalf of Mehta, Chintan [chintan.mehta@yale.edu] Sent: Monday, October 16, 2017 5:31 PM To: freesurfer@nmr.mgh.harvard.edu Subject: [Freesurfer] TRACULA bedpostx step with gpu
Dear FreeSurfer users,
I am using Freesurfer 6.0 and Tracula 6.0 for processing MRI and DTI scans. The second step of the trac-all pipeline performs the ball-and-stick fit with the bedpost function from FSL. Documentation for FSL suggests that the use of GPUs can considerably speed this process (from ~15 hours on a single-threaded machine to 30 minutes on GPU; see bulletpoint 7 under processing pipeline at https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FDT/UserGuide#Processing_pipeline).
Using GPU requires calling "bedpostx_gpu" (instead of "bedpostx") on a machine with a NVIDIA GPU and CUDA toolkit, both of which I have access to. The "bedpostx_gpu" function has, otherwise, the same flags as "bedpostx".
While there is another post on the FreeSurfer forum on this topic (https://www.mail-archive.com/freesurfer@nmr.mgh.harvard.edu/msg54498.html), the answer there does not refer to how "bedpostx_gpu" can be used.
Is there a way to call on "bedpostx_gpu" instead of "bedpostx" in the second step of the trac-all pipeline? More precisely, is there a way to adjust the command:
trac-all -bedp -c dmrirc
to take advantage of GPU capabilities?
Alternatively, is the source code for the "trac-all" binary available? For example, if is there a bash script that performs the same steps as the "trac-all -bedp -c dmrirc" available, then GPU capabilities can be exploited by running that script except replacing "bedpostx" with "bedpostx_gpu".
Thank you.
Best,
Chintan
freesurfer@nmr.mgh.harvard.edu