CUDA’s terminology carries significant overloading: the word “CUDA” itself refers to at least five distinct concepts, “driver” means different things in different contexts, and version numbers reported by various tools measure different subsystems. This article provides a rigorous ontology of CUDA components: a systematic description of what exists in the CUDA ecosystem, how components relate to each other, their versioning semantics, compatibility rules, and failure modes. Each term is defined precisely to eliminate ambiguity. Understanding this structure is essential for diagnosing version incompatibilities and reasoning about CUDA system behavior.
Terminology and disambiguation
The term “CUDA”
CUDA is overloaded across at least five distinct meanings:
CUDA as compute architecture: The parallel computing platform and programming model designed by NVIDIA. CUDA as instruction set: The GPU instruction set architecture (ISA) supported by NVIDIA hardware, versioned by compute capability ( compute_8.0 , compute_9.0 , etc.). CUDA as source language: The C/C++ language extensions ( __global__ , __device__ , etc.) used to write GPU code. CUDA Toolkit: The development package containing nvcc , libraries, headers, and development tools. CUDA Runtime: The runtime library ( libcudart ) that applications link against.
When someone says “CUDA version,” they may be referring to toolkit version, runtime version, driver API version, or compute capability. Precision requires explicit qualification.
The term “kernel”
kernel has two completely distinct meanings in GPU computing contexts:
Operating system kernel (OSkernel): The OSkernel running in privileged OSkernel-space. Examples: Linux OSkernel (e.g., version 6.6.87 ), Windows NT OSkernel, macOS XNU OSkernel. CUDA kernel (CUDAkernel): A C++ function marked with __global__ that executes on the GPU. When invoked from host code, the CUDAkernel launches as a grid of thread blocks.
Throughout this article, OSkernel always refers to the operating system kernel (Linux, Windows, etc.), and CUDAkernel always refers to GPU functions.
... continue reading