LEADER 05300nam 2200625 450 001 996426331403316 005 20200520144314.0 010 $a0-12-407916-4 035 $a(CKB)2550000001165416 035 $a(EBL)1568334 035 $a(OCoLC)864414905 035 $a(SSID)ssj0001137385 035 $a(PQKBManifestationID)11715457 035 $a(PQKBTitleCode)TC0001137385 035 $a(PQKBWorkID)11118363 035 $a(PQKB)10948820 035 $a(MiAaPQ)EBC1568334 035 $a(CaSebORM)9780124080805 035 $a(Au-PeEL)EBL1568334 035 $a(CaPaEBR)ebr10810968 035 $a(CaONFJC)MIL546693 035 $a(OCoLC)872703168 035 $a(EXLCZ)992550000001165416 100 $a20131210d2014 uy| 0 101 0 $aeng 135 $aurunu||||| 181 $ctxt 182 $cc 183 $acr 200 10$aAccelerating MATLAB with GPU computing $ea primer with examples /$fJung W. Suh, Youngmin Kim 205 $aFirst edition. 210 1$aWaltham, MA :$cMorgan Kaufmann,$d2014. 215 $a1 online resource (259 p.) 300 $aDescription based upon print version of record. 311 $a0-12-408080-4 311 $a1-306-15442-1 320 $aIncludes bibliographical references and index. 327 $aFront 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 327 $a1.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 327 $a2.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 327 $a4.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 Nai?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 327 $a5.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 327 $a6.2.3 CUBLAS with Visual Profiler 330 $aBeyond 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 606 $aGraphics processing units$xProgramming 608 $aElectronic books. 615 0$aGraphics processing units$xProgramming. 676 $a518.0285 700 $aSuh$b Jung W$0963046 701 $aKim$b Youngmin$0963047 801 0$bMiAaPQ 906 $aBOOK 912 $a996426331403316 996 $aAccelerating MATLAB with GPU computing$92183633 997 $aUNISA