OpenCL - The open standard for parallel programming of heterogeneous systems
OpenCL™ is the first open, royalty-free standard for cross-platform, parallel programming of modern processors found in personal computers, servers and handheld/embedded devices. OpenCL (Open Computing Language) greatly improves speed and responsiveness for a wide spectrum of applications in numerous market categories from gaming and entertainment to scientific and medical software.
OpenCL 1.1 includes significant new functionality including::
- Host-thread safety, enabling OpenCL commands to be enqueued from multiple host threads;
- Sub-buffer objects to distribute regions of a buffer across multiple OpenCL devices;
- User events to enable enqueued OpenCL commands to wait on external events;
- Event callbacks that can be used to enqueue new OpenCL commands based on event state changes in a non-blocking manner;
- 3-component vector data types;
- Global work-offset which enable kernels to operate on different portions of the NDRange;
- Memory object destructor callback;
- Read, write and copy a 1D, 2D or 3D rectangular region of a buffer object;
- Mirrored repeat addressing mode and additional image formats;
- New OpenCL C built-in functions such as integer clamp, shuffle and asynchronous strided copies;
- Improved OpenGL interoperability through efficient sharing of images and buffers by linking OpenCL event objects to OpenGL fence sync objects;
- Optional features in OpenCL 1.0 have been bought into core OpenCL 1.1 including: writes to a pointer of bytes or shorts from a kernel, and conversion of atomics to 32-bit integers in local or global memory.
- The OpenCL 1.1 specification and header files are available in the Khronos Registry
- The OpenCL 1.1 Quick Reference card.
- The OpenCL 1.1 Online Man pages.
OpenCL (Open Computing Language) is the first open, royalty-free standard for general-purpose parallel programming of heterogeneous systems. OpenCL provides a uniform programming environment for software developers to write efficient, portable code for high-performance compute servers, desktop computer systems and handheld devices using a diverse mix of multi-core CPUs, GPUs, Cell-type architectures and other parallel processors such as DSPs.