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 supports a wide range of applications, from embedded and consumer software to HPC solutions, through a low-level, high-performance, portable abstraction. By creating an efficient, close-to-the-metal programming interface, OpenCL will form the foundation layer of a parallel computing ecosystem of platform-independent tools, middleware and applications.
OpenCL is being created by the Khronos Group with the participation of many industry-leading companies and institutions including 3DLABS, Activision Blizzard, AMD, Apple, ARM, Broadcom, Codeplay, Electronic Arts, Ericsson, Fujitsu, Freescale, Graphic Remedy, GE, HI, IBM, Intel, Imagination Technologies, Los Alamos National Laboratory, Motorola, Movidia, Nokia, NVIDIA, Petapath, QNX, Qualcomm, RapidMind, Samsung, Seaweed, S3, ST Microelectronics, Takumi, Texas Instruments, Toshiba and Vivante.
What is new in this release:
- 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.