Glossario IA
Il dizionario completo dell'Intelligenza Artificiale
Work-item
Basic execution unit in OpenCL, analogous to a thread in other parallelism models. Each work-item executes an instance of the kernel with unique identifiers to access different portions of data.
Work-group
Collection of work-items that share specific resources and can synchronize their execution via barriers. Work-groups constitute the scheduling unit for OpenCL compute units and optimize the use of local memory.
NDRange
N-dimensional indexing space defining the complete grid of work-items to execute for a kernel. The NDRange determines how data is partitioned into work-groups and work-items for parallel computation.
Context
OpenCL execution environment containing devices, memory objects, and associated commands. The context ensures consistency of shared resources between devices on the same OpenCL platform.
Command Queue
Mechanism ordering OpenCL operations (memory transfers, kernel executions) to a specific device. Commands can be executed in-order or out-of-order depending on the queue creation parameters.
Memory Model
Hierarchical memory structure in OpenCL comprising global, local, private, and constant spaces. This model optimizes data access based on location and frequency of use by work-items.
Local Memory
Memory shared between work-items of the same work-group, offering very fast access for cooperation. It enables implementation of efficient algorithms like reductions and irregular access patterns.
Private Memory
Memory space exclusive to each work-item, typically implemented with registers or local stack. It stores temporary variables and ensures isolation between concurrent work-items.
Event Objects
Fine-grained synchronization of OpenCL commands allowing to define dependencies between operations. Events facilitate parallelism optimization by creating complex execution graphs.
Platform Model
OpenCL abstraction defining a host connected to one or more devices via a driver. The platform model standardizes the interaction between host CPU and accelerators to ensure code portability.
Buffer Object
OpenCL memory container for storing linear data accessible by kernels. Buffers support various allocation and transfer strategies between host and device to optimize performance.
SVM (Shared Virtual Memory)
OpenCL 2.0 extension allowing pointer sharing between host and device with a single virtual address space. SVM eliminates explicit transfers and simplifies programming for embedded architectures.
SPIR (Standard Portable Intermediate Representation)
OpenCL binary intermediate format allowing kernel distribution without source code. SPIR ensures portability between different OpenCL implementations while preserving device-specific optimizations.
Vector Types
Native OpenCL SIMD data types (float4, int8, etc.) optimizing vector operations on parallel architectures. Vector types natively exploit GPU SIMD units to maximize computational throughput.
Barrier Synchronization
Synchronization primitive forcing all work-items in a work-group to reach a point before continuing. Barriers guarantee the consistency of shared data in local memory during cooperative algorithms.