
Heterogeneous Computing with OpenCL
Revised OpenCL 1.2 Edition
Description
Key Features
- Explains principles and strategies to learn parallel programming with OpenCL, from understanding the four abstraction models to thoroughly testing and debugging complete applications.
- Covers image processing, web plugins, particle simulations, video editing, performance optimization, and more.
- Shows how OpenCL maps to an example target architecture and explains some of the tradeoffs associated with mapping to various architectures
- Addresses a range of fundamental programming techniques, with multiple examples and case studies that demonstrate OpenCL extensions for a variety of hardware platforms
Readership
Software engineers, programmers, hardware engineers, students / advanced students
Table of Contents
Foreword to the Revised OpenCL 1.2 Edition
Foreword to the First Edition
Preface
Our Heterogeneous World
OpenCL
This Text
Acknowledgments
About the Authors
Chapter 1. Introduction to Parallel Programming
Introduction
OpenCL
The Goals of This Book
Thinking Parallel
Concurrency and Parallel Programming Models
Structure
Reference
Further Reading and Relevant Websites
Chapter 2. Introduction to OpenCL
Introduction
Platform and Devices
The Execution Environment
Memory Model
Writing Kernels
Full Source Code Example for Vector Addition
Vector Addition with C++ Wrapper
Summary
Reference
Chapter 3. OpenCL Device Architectures
Introduction
Hardware trade-offs
The architectural design space
Summary
References
Chapter 4. Basic OpenCL Examples
Introduction
Example Applications
Compiling OpenCL Host Applications
Summary
Chapter 5. Understanding OpenCL’s Concurrency and Execution Model
Introduction
Kernels, Work-Items, Workgroups, and the Execution Domain
OpenCL Synchronization: Kernels, Fences, and Barriers
Queuing and Global Synchronization
The Host-Side Memory Model
The Device-Side Memory Model
Summary
Chapter 6. Dissecting a CPU/GPU OpenCL Implementation
Introduction
OpenCL on an AMD Bulldozer CPU
OpenCL on the AMD Radeon HD7970 GPU
Memory Performance Considerations in OpenCL
Summary
References
Chapter 7. Data Management
Memory management
Data transfer in a discrete environment
Data placement in a shared-memory environment
Example application—work group reduction
References
Chapter 8. OpenCL Case Study: Convolution
Introduction
Convolution Kernel
Conclusions
Code Listings
Reference
Chapter 9. OpenCL Case Study: Histogram
Introduction
Choosing the Number of Workgroups
Choosing the Optimal Workgroup Size
Optimizing Global Memory Data Access Patterns
Using Atomics to Perform Local Histogram
Optimizing Local Memory Access
Local Histogram Reduction
The Global Reduction
Full Kernel Code
Performance and Summary
Chapter 10. OpenCL Case Study: Mixed Particle Simulation
Introduction
Overview of the Computation
GPU Implementation
CPU Implementation
Load Balancing
Performance and Summary
Kernel for Uniform Grid Creation
Kernels for Simulation
Chapter 11. OpenCL Extensions
Introduction
Overview of Extension Mechanism
Device Fission
Double Precision
References
Chapter 12. Foreign Lands: Plugging OpenCL In
Introduction
Beyond C and C++
Haskell OpenCL
Summary
References
Chapter 13. OpenCL Profiling and Debugging
Introduction
Profiling with events
AMD Accelerated Parallel Processing Profiler
AMD Accelerated Parallel Processing KernelAnalyzer
Walking through the AMD APP Profiler
Debugging OpenCL Applications
Overview of gDEBugger
AMD Printf Extension
Conclusion
Chapter 14. Performance Optimization of an Image Analysis Application
Introduction
Description of the algorithm
Migrating multithreaded CPU implementation to OpenCL
Performance optimization
Power and performance analysis
Conclusion
References
Index
Product details
- No. of pages: 308
- Language: English
- Copyright: © Morgan Kaufmann 2012
- Published: November 13, 2012
- Imprint: Morgan Kaufmann
- Paperback ISBN: 9780124058941
- eBook ISBN: 9780124055209
About the Authors
Benedict Gaster
Affiliations and Expertise
Lee Howes
Affiliations and Expertise
David Kaeli
Dr. Kaeli has co-authored more than 200 critically reviewed publications. His research spans a range of areas including microarchitecture to back-end compilers and software engineering. He leads a number of research projects in the area of GPU Computing. He presently serves as the Chair of the IEEE Technical Committee on Computer Architecture. Dr. Kaeli is an IEEE Fellow and a member of the ACM.
Affiliations and Expertise
Perhaad Mistry
Perhaad graduated after 7 years with a PhD from Northeastern University in Electrical and Computer Engineering and was advised by Dr. David Kaeli who the leads Northeastern University Computer Architecture Research Laboratory (NUCAR). Even after graduating, Perhaad is still a member of NUCAR and is advising on research projects on performance analysis of parallel architectures. He received a BS in Electronics Engineering from University of Mumbai and an MS in Computer Engineering from Northeastern University in Boston. He is presently based in Boston.
Affiliations and Expertise
Dana Schaa
Affiliations and Expertise
Ratings and Reviews
There are currently no reviews for "Heterogeneous Computing with OpenCL"