CUDA Software Platform
The collection of software, including compilers, APIs and libraries, used to build and run CUDA programs.
The CUDA software platform is the set of software for developing CUDA programs: the compilers that build them, the APIs they call at runtime, and the libraries built on top of those APIs.
What "CUDA" means#
CUDA stands for Compute Unified Device Architecture. The name covers three distinct things, depending on context:
- a high-level device architecture
- a parallel programming model for architectures with that design
- a software platform that extends high-level languages like C with that programming model
This article is about the third: the software platform. CUDA platforms exist for other languages, including FORTRAN, Python and BASIC, but the dominant one is CUDA C++, which is the focus here.
The vision for CUDA is set out in the Lindholm et al., 2008 white paper. It is well worth reading: it is the original source of many claims, diagrams and even exact phrases in NVIDIA's documentation.
Components#
The platform splits roughly into two groups:
- Build-time components, like the NVIDIA CUDA Compiler Driver toolchain.
- Components used within or from applications, like the CUDA Driver API and the CUDA Runtime API.
On top of these APIs sit libraries of high-performance kernels, both general and domain-specific, such as cuBLAS for linear algebra and cuDNN for deep neural networks. There are also tools for writing such kernels yourself, like CUTLASS and CuTe DSL.
Related#
- CUDA C++ — the platform's main language
- CUDA Runtime API — the API most applications call
- NVIDIA GPU Drivers — the layer that talks to the hardware
- CUDA Programming Model — the model the platform implements