The following are the basic OpenCL™ concepts used in this document. The concepts are based on notions in OpenCL specification that defines:
- Compute unit - an OpenCL device has one or more compute units. A work-group executes on a single compute unit. A compute unit is composed of one or more processing elements and local memory. A compute unit can also include dedicated texture sampling units that can be accessed by its processing elements.
- Device - a collection of compute units.
- Command-queue is an object that holds commands to be executed on a specific device. Examples of commands include executing kernels, or reading and writing memory objects.
- Kernel - a function declared in an OpenCL program and executed on an OpenCL device. A kernel is identified by the __kernel or kernel qualifier applied to any function defined in a program.
- Work-item - one of a collection of parallel executions of a kernel invoked on a device by a command. A work-item is executed by one or more processing elements as part of a work-group executing on a compute unit. A work-item is distinguished from other executed work-items within the collection by its global ID and local ID.
- Work-group - a collection of related work-items that execute on a single compute unit. The work-items in the group execute the same kernel and share local memory and work-group barriers.
Each work-group has the following properties:
- Data sharing between work-items via local memory
- Synchronization between work-items via barriers and memory fences
- Special work-group level built-in functions, such as work_group_copy.
When launching the kernel for execution, the host code defines the grid dimensions, or the global work size. The host code can also define the partitioning to work-groups, or leave it to the implementation. During the execution, the implementation runs a single work-item for each point on the grid. It also groups the execution on compute units according to the work-group size.
The order of execution of work-items within a work-group, as well as the order of work-groups, is implementation-specific.
User Manual - OpenCL™ Code Builder
Overview Presentations of the OpenCL Standard at http://www.khronos.org/registry/