Sign up
Forgot password?
FAQ: Login

Kaeli David, Mistry Perhaad, Schaa Dana, Zhang Dong Ping. Heterogeneous Computing with OpenCL 2.0

  • pdf file
  • size 13,60 MB
  • added by
  • info modified
Kaeli David, Mistry Perhaad, Schaa Dana, Zhang Dong Ping. Heterogeneous Computing with OpenCL 2.0
3d edition. — Morgan Kaufmann. 2015. — 313 p.
Heterogeneous Computing with OpenCL 2.0 teaches OpenCL and parallel programming for complex systems that may include a variety of device architectures: multi-core CPUs, GPUs, and fully-integrated Accelerated Processing Units (APUs). This fully-revised edition includes the latest enhancements in OpenCL 2.0 including:
Shared virtual memory to increase programming flexibility and reduce data transfers that consume resources.
Dynamic parallelism which reduces processor load and avoids bottlenecks.
Improved imaging support and integration with OpenGL.
Designed to work on multiple platforms, OpenCL will help you more effectively program for a heterogeneous future. Written by leaders in the parallel computing and OpenCL communities, this book explores memory spaces, optimization techniques, extensions, debugging and profiling. Multiple case studies and examples illustrate high-performance algorithms, distributing work across heterogeneous systems, embedded domain-specific languages, and will give you hands-on OpenCL experience to address a range of fundamental parallel algorithms.
Introduction to Heterogeneous Computing.
The Goals of This Book.
Thinking Parallel.
Concurrency and Parallel Programming Models.
Threads and Shared Memory.
Message-Passing Communication.
Different Grains of Parallelism.
Heterogeneous Computing with OpenCL.
Device architectures.
Hardware Trade-offs.
The Architectural Design Space.
Introduction to OpenCL
The OpenCL Platform Model.
The OpenCL Execution Model.
Kernels and the OpenCL Programming Model.
OpenCL Memory Model.
The OpenCL Runtime with an Example.
Vector Addition Using an OpenCL C++ Wrapper.
OpenCL for CUDA Programmers.
Examples
OpenCL Examples.
Histogram.
Image Rotation.
Image Convolution.
Producer-Consumer.
Utility Functions.
OpenCL runtime and concurrency model
Commands and the Queuing Model.
Multiple Command-Queues.
The Kernel Execution Domain: Work-Items, Work-Groups, and NDRanges.
Native and Built-In Kernels.
Device-Side Queuing.
OpenCL host-side memory model
Memory Objects.
Memory Management.
Shared Virtual Memory.
OpenCL device-side memory model
Synchronization and Communication.
Global Memory.
Constant Memory.
Local Memory.
Private Memory.
Generic Address Space.
Memory Ordering.
Dissecting OpenCL on a heterogeneous system
OpenCL on an AMD FX-8350 CPU.
OpenCL on the AMD Radeon R9 290X GPU.
Memory Performance Considerations in OpenCL.
Case study: Image clustering
The Feature Histogram on the CPU.
OpenCL Implementation.
Performance Analysis.
OpenCL profiling and debugging
Profiling OpenCL Code Using Events.
AMD CodeXL.
Profiling Using CodeXL.
Analyzing Kernels Using CodeXL.
Debugging OpenCL Kernels Using CodeXL.
Debugging Using printf.
Mapping high-level programming languages to OpenCL 2.0: A compiler writer’s perspective
A Brief Introduction to C++ AMP.
OpenCL 2.0 as a Compiler Target.
Mapping Key C++ AMP Constructs to OpenCL.
C++ AMP Compilation Flow.
Compiled C++ AMP Code.
How Shared Virtual Memory in OpenCL 2.0 Fits in.
Compiler Support for Tiling in C++AMP.
Address Space Deduction.
Data Movement Optimization.
Binomial Options: A Full Example.
Preliminary Results.
WebCL: Enabling OpenCL acceleration of Web applications
Programming with WebCL.
Synchronization.
Interoperability with WebGL.
Example Application.
Security Enhancement.
WebCL on the Server.
Status and Future of WebCL.
Works Cited.
Foreign lands: Plugging OpenCL in
Beyond C and C+ +.
Haskell OpenCL.
  • Sign up or login using form at top of the page to download this file.
  • Sign up
Up