Book description
Multicore and GPU Programming offers broad coverage of the key parallel computing skillsets: multicore CPU programming and manycore "massively parallel" computing. Using threads, OpenMP, MPI, and CUDA, it teaches the design and development of software capable of taking advantage of today’s computing platforms incorporating CPU and GPU hardware and explains how to transition from sequential programming to a parallel computing paradigm.
Presenting material refined over more than a decade of teaching parallel computing, author Gerassimos Barlas minimizes the challenge with multiple examples, extensive case studies, and full source code. Using this book, you can develop programs that run over distributed memory machines using MPI, create multi-threaded applications with either libraries or directives, write optimized applications that balance the workload between available computing resources, and profile and debug programs targeting multicore machines.
- Comprehensive coverage of all major multicore programming tools, including threads, OpenMP, MPI, and CUDA
- Demonstrates parallel programming design patterns and examples of how different tools and paradigms can be integrated for superior performance
- Particular focus on the emerging area of divisible load theory and its impact on load balancing and distributed systems
- Download source code, examples, and instructor support materials on the book's companion website
Table of contents
- Cover image
- Title page
- Table of Contents
- Copyright
- Dedication
- List of Tables
- Preface
- Chapter 1: Introduction
- Chapter 2: Multicore and parallel program design
-
Chapter 3: Shared-memory programming: threads
- Abstract
- In this chapter you will
- 3.1 Introduction
- 3.2 Threads
- 3.3 Design concerns
- 3.4 Semaphores
- 3.5 Applying semaphores in classical problems
- 3.6 Monitors
- 3.7 Applying monitors in classical problems
- 3.8 Dynamic vs. static thread management
- 3.9 Debugging multithreaded applications
- 3.10 Higher-level constructs: multithreaded programming without threads
- Exercises
- Chapter 4: Shared-memory programming: OpenMP
-
Chapter 5: Distributed memory programming
- Abstract
- In this chapter you will
- 5.1 Communicating processes
- 5.2 MPI
- 5.3 Core concepts
- 5.4 Your first MPI program
- 5.5 Program architecture
- 5.6 Point-to-point communication
- 5.7 Alternative point-to-point communication modes
- 5.8 Non blocking communications
- 5.9 Point-to-point communications: summary
- 5.10 Error reporting and handling
- 5.11 Collective communications
- 5.12 Communicating objects
- 5.13 Node management: communicators and groups
- 5.14 One-sided communications
- 5.15 I/O considerations
- 5.16 Combining MPI processes with threads
- 5.17 Timing and performance measurements
- 5.18 Debugging and profiling MPI Programs
- 5.19 The boost.MPI Library
- 5.20 A case study: diffusion-limited aggregation
- 5.21 A case study: brute-force encryption cracking
- 5.22 A case study: MPI implementation of the master-worker pattern
- Exercises
-
Chapter 6: GPU programming
- Abstract
- In this chapter you will
- 6.1 GPU programming
- 6.2 CUDA’S programming model: Threads, blocks, and grids
- 6.3 CUDA’S execution model: Streaming multiprocessors and warps
- 6.4 CUDA compilation process
- 6.5 Putting together a CUDA project
- 6.6 Memory hierarchy
- 6.7 Optimization techniques
- 6.8 Dynamic parallelism
- 6.9 Debugging CUDA programs
- 6.10 Profiling CUDA programs
- 6.11 CUDA and MPI
- 6.12 Case studies
- Exercises
- Chapter 7: The Thrust template library
- Chapter 8: Load balancing
- Appendix A: Compiling Qt programs
- Appendix B: Running MPI programs: preparatory configuration steps
- Appendix C: Time measurement
- Appendix D: Boost.MPI
- Appendix E: Setting up CUDA
- Appendix F: DLTlib
- Glossary
- Bibliography
- Index
Product information
- Title: Multicore and GPU Programming
- Author(s):
- Release date: December 2014
- Publisher(s): Morgan Kaufmann
- ISBN: 9780124171404
You might also like
book
Hands-On GPU Programming with Python and CUDA
Build real-world applications with Python 2.7, CUDA 9, and CUDA 10. We suggest the use of …
video
Embedded Systems Object-Oriented Programming in C and C++
This Embedded Systems Object-Oriented Programming course will help you develop the skills you need to be …
book
The CUDA Handbook: A Comprehensive Guide to GPU Programming
begins where CUDA by Example (Addison-Wesley, 2011) leaves off, discussing CUDA hardware and software in greater …
book
Professional CUDA C Programming
Break into the powerful world of parallel GPU programming with this down-to-earth, practical guide Designed for …