1 option
Accelerating MATLAB with GPU Computing : A Primer with Examples.
- Format:
- Book
- Author/Creator:
- Suh, Jung W.
- Language:
- English
- Subjects (All):
- MATLAB.
- Graphics processing units--Programming.
- Graphics processing units -- Programming.
- Physical Description:
- 1 online resource (259 pages)
- Edition:
- 1st ed.
- Place of Publication:
- San Diego : Elsevier Science & Technology, 2013.
- Contents:
- Front Cover
- Accelerating MATLAB with GPU Computing
- Copyright Page
- Contents
- Preface
- Target Readers and Contents
- Directions of this Book
- GPU Utilization Using c-mex Versus Parallel Computing Toolbox
- Tutorial Approach Versus Case Study Approach
- CUDA Versus OpenCL
- 1 Accelerating MATLAB without GPU
- 1.1 Chapter Objectives
- 1.2 Vectorization
- 1.2.1 Elementwise Operation
- 1.2.2 Vector/Matrix Operation
- 1.2.3 Useful Tricks
- 1.3 Preallocation
- 1.4 For-Loop
- 1.5 Consider a Sparse Matrix Form
- 1.6 Miscellaneous Tips
- 1.6.1 Minimize File Read/Write Within the Loop
- 1.6.2 Minimize Dynamically Changing the Path and Changing the Variable Class
- 1.6.3 Maintain a 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 Programming
- 2.2.1 Checklists
- 2.2.1.1 C/C++ Compilers
- 2.2.1.2 NVIDIA CUDA Compiler nvcc
- 2.2.2 Compiler Selection
- 2.3 "Hello, mex!" using C-MEX
- 2.3.1.1 Summary
- 2.4 CUDA Configuration for MATLAB
- 2.4.1 Preparing CUDA Settings
- 2.5 Example: Simple Vector Addition Using CUDA
- 2.5.1.1 Summary
- 2.6 Example with Image Convolution
- 2.6.1 Convolution in MATLAB
- 2.6.2 Convolution in Custom c-mex
- 2.6.3 Convolution in Custom c-mex with CUDA
- 2.6.4 Brief Time Performance Profiling
- 2.7 Summary
- 3 Optimization Planning through Profiling
- 3.1 Chapter Objectives
- 3.2 MATLAB Code Profiling to Find Bottlenecks
- 3.2.1 More Accurate Profiling with Multiple CPU Cores
- 3.3 c-mex Code Profiling for CUDA
- 3.3.1 CUDA Profiling Using Visual Studio
- 3.3.2 CUDA Profiling Using NVIDIA Visual Profiler
- 3.4 Environment Setting for the c-mex Debugger
- 4 CUDA Coding with c-mex
- 4.1 Chapter Objectives
- 4.2 Memory Layout for c-mex.
- 4.2.1 Column-Major Order
- 4.2.2 Row-Major Order
- 4.2.3 Memory Layout for Complex Numbers in c-mex
- 4.3 Logical Programming Model
- 4.3.1 Logical Grouping 1
- 4.3.2 Logical Grouping 2
- 4.3.3 Logical Grouping 3
- 4.4 Tidbits of GPU
- 4.4.1 Data Parallelism
- 4.4.2 Streaming Processor
- 4.4.3 Steaming Multiprocessor
- 4.4.4 Warp
- 4.4.5 Memory
- 4.5 Analyzing Our First Naïve Approach
- 4.5.1 Optimization A: Thread Blocks
- 4.5.2 Optimization B
- 4.5.3 Conclusion
- 5 MATLAB and Parallel Computing Toolbox
- 5.1 Chapter Objectives
- 5.2 GPU Processing for Built-in MATLAB Functions
- 5.2.1 Pitfalls in GPU Processing
- 5.3 GPU Processing for Non-Built-in MATLAB Functions
- 5.4 Parallel Task Processing
- 5.4.1 MATLAB Worker
- 5.4.2 parfor
- 5.5 Parallel Data Processing
- 5.5.1 spmd
- 5.5.2 Distributed and Codistributed Arrays
- 5.5.3 Workers with Multiple GPUs
- 5.6 Direct use of CUDA Files without c-mex
- 6 Using CUDA-Accelerated Libraries
- 6.1 Chapter Objectives
- 6.2 CUBLAS
- 6.2.1 CUBLAS Functions
- 6.2.2 CUBLAS Matrix-by-Matrix Multiplication
- 6.2.2.1 Step 1
- 6.2.2.2 Step 2
- 6.2.2.3 Step 3
- 6.2.2.4 Step 4
- 6.2.2.5 Step 5
- 6.2.2.6 Step 6
- 6.2.2.7 Step 7
- 6.2.2.8 Step 8
- 6.2.2.9 Step 9
- 6.2.3 CUBLAS with Visual Profiler
- 6.2.3.1 CUBLAS Summary
- 6.3 CUFFT
- 6.3.1 2D FFT with CUFFT
- 6.3.1.1 Step 1
- 6.3.1.2 Step 2
- 6.3.1.3 Step 3
- 6.3.1.4 Step 4
- 6.3.1.5 Step 5
- 6.3.1.6 Step 6
- 6.3.1.7 Step 7
- 6.3.1.8 Step 8
- 6.3.1.9 Step 9
- 6.3.2 CUFFT with Visual Profiler
- 6.3.2.1 CUFFT Summary
- 6.4 Thrust
- 6.4.1 Sorting with Thrust
- 6.4.1.1 Step 1
- 6.4.1.2 Step 2
- 6.4.1.3 Step 3
- 6.4.1.4 Step 4
- 6.4.1.5 Step 5
- 6.4.1.6 Step 6
- 6.4.1.7 Step 7
- 6.4.2 Thrust with Visual Profiler
- 6.4.2.1 Thrust Summary
- 7 Example in Computer Graphics
- 7.1 Chapter Objectives.
- 7.2 Marching Cubes
- 7.3 Implementation in MATLAB
- 7.3.1 Step 1
- 7.3.2 Step 2
- 7.3.3 Step 3
- 7.3.4 Step 4
- 7.3.5 Step 5
- 7.3.6 Step 6
- 7.3.7 Step 7
- 7.3.8 Step 8
- 7.3.9 Step 9
- 7.3.10 Time Profiling
- 7.4 Implementation in c-mex with CUDA
- 7.4.1 Step 1
- 7.4.2 Step 2
- 7.4.3 Time Profiling
- 7.5 Implementation Using c-mex and GPU
- 7.5.1 Step 1
- 7.5.2 Step 2
- 7.5.3 Step 3
- 7.5.4 Step 4
- 7.5.5 Step 5
- 7.5.6 Time Profiling
- 7.6 Conclusion
- 8 CUDA Conversion Example: 3D Image Processing
- 8.1 Chapter Objectives
- 8.2 MATLAB Code for Atlas-Based Segmentation
- 8.2.1 Background of Atlas-Based Segmentation
- 8.2.2 MATLAB Codes for Segmentation
- 8.3 Planning for CUDA Optimization Through Profiling
- 8.3.1 Profiling MATLAB Code
- 8.3.2 Analyze the Profiling Results and Planning CUDA Optimization
- 8.4 CUDA Conversion 1 - Regularization
- 8.5 CUDA Conversion 2 - Image Registration
- 8.6 CUDA Conversion Results
- 8.7 Conclusion
- Appendix 1: Download and Install the CUDA Library
- A1.1 CUDA Toolkit Download
- A1.2 Installation
- A1.3 Verification
- Appendix 2: Installing NVIDIA Nsight into Visual Studio
- Bibliography
- Index.
- Notes:
- Description based on publisher supplied metadata and other sources.
- Other Format:
- Print version: Suh, Jung W. Accelerating MATLAB with GPU Computing
- ISBN:
- 9780124079168
- OCLC:
- 872703168
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.