Book description
Programming Massively Parallel Processors: A Hands-on Approach, Second Edition, teaches students how to program massively parallel processors. It offers a detailed discussion of various techniques for constructing parallel programs. Case studies are used to demonstrate the development process, which begins with computational thinking and ends with effective and efficient parallel programs.
This guide shows both student and professional alike the basic concepts of parallel programming and GPU architecture. Topics of performance, floating-point format, parallel patterns, and dynamic parallelism are covered in depth. This revised edition contains more parallel programming examples, commonly-used libraries such as Thrust, and explanations of the latest tools. It also provides new coverage of CUDA 5.0, improved performance, enhanced development tools, increased hardware support, and more; increased coverage of related technology, OpenCL and new material on algorithm patterns, GPU clusters, host programming, and data parallelism; and two new case studies (on MRI reconstruction and molecular visualization) that explore the latest applications of CUDA and GPUs for scientific research and high-performance computing.
This book should be a valuable resource for advanced students, software engineers, programmers, and hardware engineers.
- New coverage of CUDA 5.0, improved performance, enhanced development tools, increased hardware support, and more
- Increased coverage of related technology, OpenCL and new material on algorithm patterns, GPU clusters, host programming, and data parallelism
- Two new case studies (on MRI reconstruction and molecular visualization) explore the latest applications of CUDA and GPUs for scientific research and high-performance computing
Table of contents
- Cover image
- Title page
- Table of Contents
- Copyright
- Preface
- Acknowledgements
- Dedication
- Chapter 1. Introduction
- Chapter 2. History of GPU Computing
- Chapter 3. Introduction to Data Parallelism and CUDA C
-
Chapter 4. Data-Parallel Execution Model
- 4.1 Cuda Thread Organization
- 4.2 Mapping Threads to Multidimensional Data
- 4.3 Matrix-Matrix Multiplication—A More Complex Kernel
- 4.4 Synchronization and Transparent Scalability
- 4.5 Assigning Resources to Blocks
- 4.6 Querying Device Properties
- 4.7 Thread Scheduling and Latency Tolerance
- 4.8 Summary
- 4.9 Exercises
- Chapter 5. CUDA Memories
- Chapter 6. Performance Considerations
- Chapter 7. Floating-Point Considerations
- Chapter 8. Parallel Patterns: Convolution: With an Introduction to Constant Memory and Caches
- Chapter 9. Parallel Patterns: Prefix Sum: An Introduction to Work Efficiency in Parallel Algorithms
- Chapter 10. Parallel Patterns: Sparse Matrix–Vector Multiplication: An Introduction to Compaction and Regularization in Parallel Algorithms
- Chapter 11. Application Case Study: Advanced MRI Reconstruction
- Chapter 12. Application Case Study: Molecular Visualization and Analysis
- Chapter 13. Parallel Programming and Computational Thinking
- Chapter 14. An Introduction to OpenCLTM
- Chapter 15. Parallel Programming with OpenACC
- Chapter 16. Thrust: A Productivity-Oriented Library for CUDA
-
Chapter 17. CUDA FORTRAN
- 17.1 CUDA FORTRAN and CUDA C Differences
- 17.2 A First CUDA FORTRAN Program
- 17.3 Multidimensional Array in CUDA FORTRAN
- 17.4 Overloading Host/Device Routines With Generic Interfaces
- 17.5 Calling CUDA C Via Iso_C_Binding
- 17.6 Kernel Loop Directives and Reduction Operations
- 17.7 Dynamic Shared Memory
- 17.8 Asynchronous Data Transfers
- 17.9 Compilation and Profiling
- 17.10 Calling Thrust from CUDA FORTRAN
- 17.11 Exercises
- Chapter 18. An Introduction to C++ AMP
- Chapter 19. Programming a Heterogeneous Computing Cluster
- Chapter 20. CUDA Dynamic Parallelism
- Chapter 21. Conclusion and Future Outlook
- Appendix A. Matrix Multiplication Host-Only Version Source Code
- Appendix B. GPU Compute Capabilities
- Index
Product information
- Title: Programming Massively Parallel Processors, 2nd Edition
- Author(s):
- Release date: December 2012
- Publisher(s): Morgan Kaufmann
- ISBN: 9780123914187
You might also like
book
Programming Massively Parallel Processors, 3rd Edition
Programming Massively Parallel Processors: A Hands-on Approach, Third Edition shows both student and professional alike the …
book
CUDA for Engineers: An Introduction to High-Performance Parallel Computing
gives you direct, hands-on engagement with personal, high-performance parallel computing, enabling you to do computations on …
book
Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems using C++ and SYCL
Learn how to accelerate C++ programs using data parallelism. This open access book enables C++ programmers …
book
Multicore and GPU Programming
Multicore and GPU Programming offers broad coverage of the key parallel computing skillsets: multicore CPU programming …