About OpenCL for OS X

OpenCL™ (Open Computing Language) is an open standard for cross-platform, programming of modern highly-parallel processor architectures. Introduced with OS X v10.6, OpenCL consists of a C99-based programming language designed for parallelism, a powerful scheduling API, and a flexible runtime that executes kernels on the CPU or GPU. OpenCL lets your application harness the computing power of these processors to improve performance and deliver new features based on compute-intensive algorithms.

In addition to support for the OpenCL 1.1 standard, OS X v10.7 adds integration between OpenCL, Grand Central Dispatch (GCD), and Xcode to make it even easier to use OpenCL in your application.

At a Glance

Using OpenCL is easier than ever as of OS X v10.7:

You can, of course, continue to use code you’ve already written to the OpenCL 1.1 standard. But see “Binary Compatibility Of OpenCL Kernels” for a note about how to handle existing binaries.

Because OpenCL C is based on C99, you are free to process your data in OpenCL C functions as you would in C with few limitations. Aside from support for recursion and function pointers, there are not many language features that C has that OpenCL C doesn’t have. In fact, OpenCL C provides several beneficial features that the C programming language does not offer natively, such as optimized image access functions. OpenCL C has built-in support for vector intrinsics and offers vector data types. The operators in OpenCL C are overloaded, and performing arithmetic between vector data types is syntactically equivalent to performing arithmetic between scalar values. Refer to the The OpenCL Specification for more details on the built-in functions and facilities of the OpenCL C language.

Prerequisites

This guide assumes that you program in C and have access to The OpenCL Specification. Although this guide discusses many key OpenCL API functions, it does not provide detailed information on the OpenCL API or the OpenCL C programming language.

See Also

The OpenCL Specification, available from the Khronos Group at http://www.khronos.org/registry/cl/ provides information on the OpenCL standard.

The OpenCL Programming Guide by Aaftab Munshi, Benedict Gaster, Timothy G. Mattson, James Fung, and Dan Ginsburg, available from Pearson Education, Inc., is a helpful introduction to the OpenCL language and standard; these topics are not discussed in this book.

For more information about Grand Central Dispatch queues, see Concurrency Programming Guide: Dispatch Queues.