MRISIMUL: A GPU-based MR physics simulator
MRISIMUL is a step-by-step comprehensive Bloch equation simulator which integrates realistic aspects of the MRI experiment from signal generation to image formation. This simulation platform allows its application in large-scale analysis by employing GPU technology. The high performance of MRISIMUL allows its application without model simplifications and with no assumptions with respect to the underlying pulse sequence.
MRISIMUL allows the development of custom MRI pulse sequences and their application on 3D computer models of realistic objects. MRISIMUL was developed in MATLAB (The Mathworks Inc., Natick, MA) while the computationally demanding core services (kernel) were developed in CUDA-C (NVIDIA, Santa Clara, CA) and executed in parallel within the graphic processing unit (GPU) environment.
A simplified block diagram of the MRISIMUL GPU-based simulator is shown in the following picture, where the computational kernel of the simulation platform (in red colored frame) is executed in parallel on the GPU whereas the rest of the software is executed serially.
MRISIMUL GPU-based simulations on a Tesla C2070 NVIDIA computing processor board have already demonstrated a speedup of about 228 times when compared to serially executed C-code on the CPU. The speedup was between 31 to 115 times when compared to the OpenMP parallel executed C-code on the CPU (depending on the number of threads used in multithreading - 2 to 8 threads). Recently, a multi-GPU approach of MRISIMUL showed an almost linear scalable performance with the increasing number of available GPU cards on single-node, multi-GPU computer systems.
The performance of MRISIMUL has been evaluated on different single computers including the following:
- a single computer of 2 quad-core processors and 48GB RAM with two Tesla C2070 GPU cards of 448 GPU cores and 6GB global memory each
- a single computer of 2 hexa-core processors and 32GB RAM with four Tesla C2075 GPU cards of 448 GPU cores and 6GB global memory each
- a laptop computer of 1 quad-core processor and 32GB RAM with one Quadro K5000M GPU card of 1366 GPU cores and 4GB global memory