Survey of using GPU CUDA programming model in medical image analysis (original) (raw)
A B S T R A C T With the technology development of medical industry, processing data is expanding rapidly and computation time also increases due to many factors like 3D, 4D treatment planning, the increasing sophistication of MRI pulse sequences and the growing complexity of algorithms. Graphics processing unit (GPU) addresses these problems and gives the solutions for using their features such as, high computation throughput, high memory bandwidth, support for floating-point arithmetic and low cost. Compute unified device architecture (CUDA) is a popular GPU programming model introduced by NVIDIA for parallel computing. This review paper briefly discusses the need of GPU CUDA computing in the medical image analysis. The GPU performances of existing algorithms are analyzed and the computational gain is discussed. A few open issues, hardware configurations and optimization principles of existing methods are discussed. This survey concludes the few optimization techniques with the medical imaging algorithms on GPU. Finally, limitation and future scope of GPU programming are discussed. 1. Introduction Computed tomography (CT), magnetic resonance imaging (MRI), positron emission tomography (PET) and ultrasound are famous medical modalities that produce the 2D, 3D and 4D types of medical images which are guiding the diagnosis process and treatment planning. The medical image processing and analysis are computationally expensive while medical imaging data dimension increasing [1]. The conventional CPU with limited multi-core is not sufficient to process these types of huge data. Graphics processing unit (GPU) is a new technology capable for finding out solutions to the computational problems in all the engineering and medical fields. In the medical industry, GPU is more suitable for processing the higher dimension data. GPU computation has provided a huge edge over the central processing units (CPU) with respect to computation speed. GPU is highly parallel, multithread, multiple core processors and has high memory bandwidth to give the solution to the computational problems [2]. The main reason for the evolution of powerful GPUs is the constant demand for greater realism in computer games. During the past few decades, the computational performance of GPUs has increased much more quickly than that of conventional CPUs. Hence it plays a major role in the field of modern industrial research and development. GPU has already achieved a significant speed (2x-1000x) than CPU implementation on various fields [3] [4] [5]. GPU is well suitable to implement the program execution with the different data elements. This process is called as data parallelism. Data parallelism is maps data elements to parallel threads available in GPU [6]. Data parallelism gives high gains in independent processes between data elements. The prime areas of data parallelism are 3D rendering, stereo vision, pattern recognition, image, video and medical industry applications. A large performance gap occurs between GPU and general purpose multi-core CPU. Architectural level comparison of CPU and GPU are given in Fig. 1. The design of a CPU is optimized for sequential programming. It makes use of sophisticated control logic to allow instructions from a single thread of execution to execute in parallel or even out of their sequential order while maintaining the appearance of sequential execution. Modern CPU microprocessors typically have four large processor cores designed to deliver strong sequential code performance but not enough to process the huge data. A basic model of GPU has large number of processor cores, ALU's, control units and various types of memories. In general, heterogeneous CPU and GPU computation is appreciable instead of standalone CPU or GPU implementation. The dependent processes are recommended in CPU and the independent processes can be accelerated by the GPU. GPU with high amount of threads give better performance. This paper reviews the implication of GPU programming model in medical image analysis and illustrated some applications with examples. The general framework of medical image analysis pipeline is given in Fig. 2. The computational complexities of all these fields are increasing