Manning Publications, 2011. — 458 p. — ISBN: 9781617290176.
OpenCL in Action is a thorough, hands-on presentation of OpenCL, with an eye toward showing developers how to build high-performance applications of their own. It begins by presenting the core concepts behind OpenCL, including vector computing, parallel programming, and multi-threaded operations, and then guides you step-by-step from simple data structures to complex functions.
About the TechnologyWhatever system you have, it probably has more raw processing power than you're using. OpenCL is a high-performance programming language that maximizes computational power by executing on CPUs, graphics processors, and other number-crunching devices. It's perfect for speed-sensitive tasks like vector computing, matrix operations, and graphics acceleration.
About this BookOpenCL in Action blends the theory of parallel computing with the practical reality of building high-performance applications using OpenCL. It first guides you through the fundamental data structures in an intuitive manner. Then, it explains techniques for high-speed sorting, image processing, matrix operations, and fast Fourier transform. The book concludes with a deep look at the all-important subject of graphics acceleration. Numerous challenging examples give you different ways to experiment with working code.
A background in C or C++ is helpful, but no prior exposure to OpenCL is needed.
WHAT'S INSIDELearn OpenCL step by step.
Tons of annotated code.
Tested algorithms for maximum performance.
Matthew Scarpino has over 12 years of experience developing high-performance applications for embedded systems. He's the author of Programming the Cell Processor.
about this bookFoundations of OpenCL programming.
Introducing OpenCL.
The dawn of OpenCL.
Why OpenCL?
Analogy: OpenCL processing and a game of cards.
A first look at an OpenCL application.
The OpenCL standard and extensions.
Frameworks and software development kits (SDKs).
Host programming: fundamental data structures.
Primitive data types.
Accessing platforms.
Accessing installed devices.
Managing devices with contexts.
Storing device code in programs.
Packaging functions in kernels.
Collecting kernels in a command queue.
Host programming: data transfer and partitioning.
Setting kernel arguments.
Buffer objects.
mage objects.
Obtaining information about buffer objects.
Memory object transfer commands.
Data partitioning.
Kernel programming: data types and device memory.
Introducing kernel coding.
Scalar data types.
Floating-point computing.
Sector data types.
The OpenCL device model.
Local and private kernel arguments.
Kernel programming: operators and functions.
Operators.
Work-item and work-group functions.
Data transfer operations.
Floating-point functions.
Integer functions.
Shuffle and select functions.
ector test functions.
Geometric functions.
mage processing.
mage objects and samplers.
mage processing functions.
mage scaling and interpolation.
Events, profiling, and synchronization.
Host notification events.
Command synchronization events.
Profiling events.
Work-item synchronization.
Development with C++.
Preliminary concerns.
Creating kernels.
Kernel arguments and memory objects.
Command queues.
Event processing.
Development with Java and Python.
Aparapi.
JavaCL.
PyOpenCL.
General coding principles.
Global size and local size.
Numerical reduction.
Synchronizing work-groups.
Ten tips for high-performance kernels.
Coding practical algorithms in OpenCL.
Reduction and sorting.
MapReduce.
The bitonic sort.
The radix sort.
Matrices and QR decomposition.
Matrix transposition.
Matrix multiplication.
The Householder transformation.
The QR decomposition.
Sparse matrices.
Differential equations and sparse matrices.
Sparse matrix storage and the Harwell-Boeing collection.
The method of steepest descent.
The conjugate gradient method.
Signal processing and the fast Fourier transform.
introducing frequency analysis.
The discrete Fourier transform.
The fast Fourier transform.
Accelerating OpenGL with OpenCL.
Combining OpenCL and OpenGL.
Sharing data between OpenGL and OpenCL.
Obtaining information.
Basic interoperability example.
interoperability and animation.
Textures and renderbuffers.
mage filtering.
Filtering textures with OpenCL.
Summary 349.
appendix A Installing and using a software development kit.
appendix B Real-time rendering with OpenGL.
appendix C The minimalist GNU for Windows and OpenCL.
appendix D OpenCL on mobile devices.