Rough Cuts are manuscripts that are developed but not yet published, available through Safari. Rough Cuts provide you access to the very latest information on a given topic and offer you the opportunity to interact with the author to influence the final publication.
This is the Rough Cut version of the printed book.
Using the new OpenCL (Open Computing Language) standard, you can write applications that access all available programming resources: CPUs, GPUs, and other processors such as DSPs and the Cell/B.E. processor. Already implemented by Apple, AMD, Intel, IBM, NVIDIA, and other leaders, OpenCL has outstanding potential for PCs, servers, handheld/embedded devices, high performance computing, and even cloud systems. This is the first comprehensive, authoritative, and practical guide to OpenCL 1.1 specifically for working developers and software architects.Written by five leading OpenCL authorities, OpenCL Programming Guide covers the entire specification. It reviews key use cases, shows how OpenCL can express a wide range of parallel algorithms, and offers complete reference material on both the API and OpenCL C programming language.
Through complete case studies and downloadable code examples, the authors show how to write complex parallel programs that decompose workloads across many different devices. They also present all the essentials of OpenCL software performance optimization, including probing and adapting to hardware. Coverage includes
Figures xv
Tables xxi
Listings xxv
Foreword xxix
Preface xxxiii
Acknowledgments xli
About the Authors xliii
Part I: The OpenCL 1.1 Language and API 1
Chapter 1: An Introduction to OpenCL 3
What Is OpenCL, or . . . Why You Need This Book 3
Our Many-Core Future: Heterogeneous Platforms 4
Software in a Many-Core World 7
Conceptual Foundations of OpenCL 11
OpenCL and Graphics 29
The Contents of OpenCL 30
The Embedded Profile 35
Learning OpenCL 36
Chapter 2: HelloWorld: An OpenCL Example 39
Building the Examples 40
HelloWorld Example 45
Checking for Errors in OpenCL 57
Chapter 3: Platforms, Contexts, and Devices 63
OpenCL Platforms 63
OpenCL Devices 68
OpenCL Contexts 83
Chapter 4: Programming with OpenCL C 97
Writing a Data-Parallel Kernel Using OpenCL C 97
Scalar Data Types 99
Vector Data Types 102
Other Data Types 108
Derived Types 109
Implicit Type Conversions 110
Explicit Casts 116
Explicit Conversions 117
Reinterpreting Data as Another Type 121
Vector Operators 123
Qualifiers 133
Keywords 141
Preprocessor Directives and Macros 141
Restrictions 146
Chapter 5: OpenCL C Built-In Functions 149
Work-Item Functions 150
Math Functions 153
Integer Functions 168
Common Functions 172
Geometric Functions 175
Relational Functions 175
Vector Data Load and Store Functions 181
Synchronization Functions 190
Async Copy and Prefetch Functions 191
Atomic Functions 195
Miscellaneous Vector Functions 199
Image Read and Write Functions 201
Chapter 6: Programs and Kernels 217
Program and Kernel Object Overview 217
Program Objects 218
Kernel Objects 237
Chapter 7: Buffers and Sub-Buffers 247
Memory Objects, Buffers, and Sub-Buffers Overview 247
Creating Buffers and Sub-Buffers 249
Querying Buffers and Sub-Buffers 257
Reading, Writing, and Copying Buffers and Sub-Buffers 259
Mapping Buffers and Sub-Buffers 276
