Accelerating MATLAB with GPU Computing

A Primer with Examples


  • Jung Suh, Senior Algorithm Engineer & Research Scientist, KLA-Tencor
  • Youngmin Kim, Staff Software Engineer, Life Technologies

Beyond simulation and algorithm development, many developers increasingly use MATLAB even for product deployment in computationally heavy fields. This often demands that MATLAB codes run faster by leveraging the distributed parallelism of Graphics Processing Units (GPUs). While MATLAB successfully provides high-level functions as a simulation tool for rapid prototyping, the underlying details and knowledge needed for utilizing GPUs make MATLAB users hesitate to step into it. Accelerating MATLAB with GPUs offers a primer on bridging this gap.

Starting with the basics, setting up MATLAB for CUDA (in Windows, Linux and Mac OS X) and profiling, it then guides users through advanced topics such as CUDA libraries. The authors share their experience developing algorithms using MATLAB, C++ and GPUs for huge datasets, modifying MATLAB codes to better utilize the computational power of GPUs, and integrating them into commercial software products.  Throughout the book, they demonstrate many example codes that can be used as templates of C-MEX and CUDA codes for readers’ projects.  Download example codes from the publisher's website:

View full description


Graduate students and researchers in a variety of fields, who need huge data processing without losing the many benefits of Matlab.


Book information

  • Published: December 2013
  • ISBN: 978-0-12-408080-5

Table of Contents

1. Accelerating MATLAB without GPU                                                                     
 1.1Chapter Objectives
 1.2 Vectorization
 1.3 Pre-allocation
 1.4 For-loop
 1.5 Consider sparse matrix form
 1.6 Miscellaneous tips
 1.6.1 Minimize file read/write within loop
 1.6.2 Minimize dynamically changing path and changing variable class
 1.6.3 Balance between the code readability and optimization
 1.7 Examples

2. Configurations for MATLAB and CUDA                                                                
 2.1 Chapter Objectives
 2.2 MATLAB Configuration for C-MEX
 2.3 “Hello World” using C-MEX
 2.5 Example: Simple Vector Addition using CUDA
 2.6 Example with Image Convolution

 3. Optimization Planning through Profiling
 3.1 Chapter Objectives
 3.2 MATLAB Code Profiling to Find Bottlenecks
 3.3 C-MEX Code Profiling for CUDA
 3.4 Environment Setting for C-MEX Debugger

4. CUDA coding with C-MEX
 4.1 Chapter Objectives
 4.2 Memory Layout for C-MEX
 4.3 Logical Programming Model
 4.4 Tidbits of GPU
 4.5 Analyzing Our First Naïve Approach

5. MATLAB with Parallel Computing Toolbox
 5.1 Chapter Objectives
 5.2 GPU processing for built-in MATLAB function
 5.3 GPU processing for non built-in MATLAB function
 5.4 Parallel task processing 
 5.5 Parallel data processing
 5.6 Direct use of CUDA file without C-MEX

6.  Using CUDA-Accelerated Libraries
 6.1 Chapter Objectives
 6.3 CUFFT
 6.4 Thrust 

7. Example in Computer Graphics: 3D Surface Reconstruction using Marching Cubes
 7.1 Chapter Objectives
 7.2 Marching Cubes
 7.3 Implementation in MATLAB
 7.4 Implementation in C-MEX with CUDA
 7.5 Implementation using C-MEX and GPU
 7.6 Conclusion

8. Example in 3D Image Processing: Atlas-based Segmentation
 8.1 Chapter Objectives
 8.2 MATLAB Code for Atlas-based Segmentation
 8.3 Planning for CUDA Optimization through Profiling
 8.4 CUDA Converting 1 - Regularization
 8.5 CUDA Converting 2 - Image Registration
 8.6 CUDA Conversion Results
 8.7 Conclusion

 A.1 Download and install CUDA library
 A.2 Installing NVIDIA Nsight into Visual Studio