Before jumping into OpenCL tutorials let us have a general idea of the terminologies and concepts that will be used across the OpenCL discussions.
GFLOPS:
Floating operations per sceond. G- Giga/M-Mega
Compute Unit or Shader Cores:
Compute unit is the streaming multiprocessor that can have 8/16/32/48 streaming processor
Cache Coherent:
On chip cache memory has consistent data across the execution cycle.
SIMD:
Single instruction, multiple data (SIMD), is a class of parallel computers in Flynn's taxonomy. It describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously.
SIMT:
SIMT stands for SINGLE INSTRUCTION MULTIPLE THREAD and it reflects how instructions are executed in the host. As the name suggests, the same code is executed in parallel by a different thread, and each thread executes the code with different data.
SSE:
NEON:
Device: School Laboratory
It can be a CPU, GPU, FPGA or a DSP chip which has OpenCL driver support.
Kernel: Science Experiments
You can think on a kernel as a function that is executed on the device. There are other functions(eg: math functions) that can be executed on the device, but there's a slight difference between these functions and kernels: kernels are entry points to the device program. In other words, kernel are the only functions that can be called from the host.
WORKITEMS: Individual Students with Roll Number
The work-items are the smallest execution entity. Every time a Kernel is launched, lots of work-items (a number specifyed by the programmer) are launched, each one executing the same code. Each work-item has an ID, which is accessible from the kernel, and which is used to distinguish the data to be processessed by each work-item.
WORKGROUP: Students of same team/batch
Work-groups exist to allow communication and cooperation between work-items. They reflect how work-items are organized (it's a N-dimensional grid of work-groups, with N = 1, 2 or 3). As work-items, work-groups also have an unique ID that can be reffered from the kernel.
ND-RANGEL: Students of same class
The ND-Range is the next organization level, specifying how work-groups are organized (again, as a N-dimensional grid of work-groups, N = 1, 2 or 3);
WaveFront: Number of students in a team/batch
Number of simultaneous work items that can be in a work group. Will be multiple of SIMD width.