CUDA
More actions
| CUDA | |
|---|---|
| Information | |
| Type | Parallel computing platform |
| Subtype | GPU programming model |
| Creator | NVIDIA |
| Developer | NVIDIA |
| Operating System | Linux, Windows (macOS until CUDA 10.2) |
| Devices | NVIDIA GPUs (GeForce, professional and data center products), Jetson embedded modules |
| Release Date | Announced November 8, 2006; CUDA Toolkit 1.0 June 2007 |
| Price | Free download |
| Website | https://developer.nvidia.com/cuda-toolkit |
CUDA (Compute Unified Device Architecture) is a parallel computing platform and programming model developed by NVIDIA for running general-purpose computations on its graphics processing units (GPUs). NVIDIA's programming guide says the company introduced CUDA in 2006 "to enable any computational workload to use the throughput capability of GPUs independent of graphics APIs."[1] NVIDIA announced CUDA on November 8, 2006, together with a C compiler for the GPU, and made it available on the new GeForce 8800 graphics card.[2] A public beta of the CUDA software development kit followed on February 16, 2007, and CUDA Toolkit 1.0 was released in June 2007.[3][4] As of October 2026 the current release series is CUDA 13.4, whose 13.4.2 update NVIDIA lists for September 2026.[4]
CUDA is a compute platform, not a graphics API. Programs that render with OpenGL, Direct3D or Vulkan can hand buffers and textures to CUDA kernels through its interoperability functions.[5] In virtual reality and augmented reality work it appears mostly behind the scenes: NVIDIA built its VRWorks 360 Video stitching SDK on CUDA, and the reference implementations of Instant Neural Graphics Primitives and 3D Gaussian splatting, two neural and radiance-field rendering methods that researchers have displayed in VR headsets, rely on custom CUDA kernels.[6][7][8]
History
Background
GPUs began as fixed-function hardware for real-time 3D rendering and became more programmable with each generation; by 2003 some stages of the graphics pipeline could run custom code.[1] Researchers then tried to use these shader pipelines for non-graphics work, an approach known as general-purpose computing on GPUs (GPGPU). One such effort was Brook for GPUs, a Stanford University system presented at SIGGRAPH 2004 by Ian Buck, Pat Hanrahan and colleagues. Brook extended C with "simple data-parallel constructs, enabling the use of the GPU as a streaming coprocessor."[9] Buck's own resume lists his later NVIDIA role as manager of GPU computing software, covering "the CUDA Software toolkit, compiler, libraries, driver" and the performance analysis team.[10]
A 2008 ACM Queue article by Buck and three co-authors from NVIDIA and the University of Virginia compared CUDA with these earlier GPGPU models. Streaming languages apply a kernel to a stream of records and do not let kernel threads depend on one another. CUDA added flexible thread creation, thread blocks, shared memory, global memory and explicit synchronization.[11]
Launch (2006-2007)
NVIDIA's November 2006 announcement described CUDA as an architecture in which "hundreds of on-chip processor cores" communicate and cooperate on a problem, and claimed speeds "up to 100 times faster than traditional approaches." Developers reached the new features through a separate computing driver, which worked alongside DirectX and OpenGL, and a new NVIDIA C compiler for the GPU. CUDA was available on the GeForce 8800, with Quadro professional products to follow. NVIDIA named product design, data analysis, technical computing and game physics as target uses, and made the SDK available to developers and researchers through its registered developer program.[2][12] The announcement said the GPU's Parallel Data Cache let up to 128 processor cores running at 1.35 GHz cooperate on a computation.[2]
The hardware behind the launch was the Tesla unified graphics and computing architecture, which NVIDIA described in IEEE Micro in 2008 as a "scalable parallel array of processors" that is "massively multithreaded and programmable in C or via graphics APIs."[13] The ACM Queue article states that the architecture was introduced in November 2006 and spanned the GeForce 8800 as well as professional Quadro and Tesla computing products.[11]
On February 16, 2007, NVIDIA opened a public beta of the CUDA SDK and C compiler. Andy Keane, general manager of GPU computing at NVIDIA, said that "The GPU is now a powerful, programmable processor that is ideally suited for computationally intensive applications."[3]
Later development
NVIDIA released thirteen major toolkit versions between CUDA 1.0 in June 2007 and CUDA 13.0 in August 2025.[4] CUDA 10.2, released in November 2019, was the last release to support macOS for developing and running CUDA applications.[14][4]
CUDA 13.0, released in August 2025, removed offline compilation and library support for the Maxwell, Pascal and Volta GPU architectures. NVIDIA said developers could keep building applications for those GPUs with the 12.x toolkits. The same release dropped Ubuntu 20.04.[15][4]
CUDA 13.1 (December 2025) added CUDA Tile, a tile-based programming model that works "at a layer above SIMT." It has two parts: CUDA Tile IR, a virtual instruction set, and cuTile Python, a Python language for writing array and tile kernels. In this first version, tile programming supported Ampere, Ada and Blackwell GPUs. NVIDIA called 13.1 "the largest and most comprehensive update to the CUDA platform since it was invented two decades ago," and the release came with a completely rewritten CUDA programming guide.[16]
CUDA 13.4 was published as a developer preview in July 2026, with updates 13.4.1 and 13.4.2 in September 2026.[4] NVIDIA's toolkit page says this version adds support for Windows on Arm and developer support for the NVIDIA Rubin architecture.[17] According to the release notes, it is also the first release in which the Linux toolkit no longer bundles the NVIDIA driver.[18]
At the GTC 2026 keynote on March 16, 2026, Jensen Huang marked CUDA's 20th anniversary. NVIDIA's account of the keynote says he described CUDA as the "flywheel" driving accelerated computing, and called the CUDA-X libraries the company's "crown jewels"; the same account describes GeForce as the platform that brought CUDA to the world.[19]
Selected CUDA Toolkit releases
Dates are the months NVIDIA gives in its toolkit archive.[4]
| Version | Release | Notes |
|---|---|---|
| 1.0 | June 2007 | First CUDA Toolkit release, following the February 2007 public beta[3] |
| 2.0 | August 2008 | |
| 3.0 | March 2010 | |
| 4.0 | May 2011 | |
| 5.0 | October 2012 | |
| 6.0 | April 2014 | |
| 7.0 | March 2015 | |
| 8.0 | September 2016 (GA1) | |
| 9.0 | September 2017 | Basis of the VRWorks 360 Video SDK 1.1[6] |
| 10.0 | September 2018 | Supported by the VRWorks 360 Video SDK 2.0[20] |
| 10.2 | November 2019 | Last release supporting macOS[14] |
| 11.0 | June 2020 (11.0.1) | |
| 12.0 | December 2022 | |
| 13.0 | August 2025 | Maxwell, Pascal and Volta removed as compilation targets[15] |
| 13.1 | December 2025 | CUDA Tile and cuTile Python[16] |
| 13.2 | March 2026 | |
| 13.3 | May 2026 | |
| 13.4 | July 2026 (developer preview); 13.4.1 and 13.4.2 September 2026 | Windows on Arm, Rubin architecture support[17] |
Programming model
The CUDA programming model assumes a heterogeneous system with both CPUs and GPUs. The CPU and its memory are called the host; a GPU and its memory are the device. Applications always start on the CPU. Host code uses CUDA APIs to copy data between host and device memory and to start GPU code. A function that runs on the GPU is called a kernel, and launching a kernel starts many threads, often millions, that run the kernel code in parallel.[21]
Threads are grouped into thread blocks, and blocks are arranged in a grid; both can have one, two or three dimensions. Built-in variables give every thread its position in its block and grid, which programs use to decide what data each thread handles. All threads of a block run on one streaming multiprocessor (SM), so they can synchronize and exchange data through fast on-chip shared memory.[21] Inside a block, the hardware runs threads in groups of 32 called warps, under a model NVIDIA calls Single-Instruction Multiple-Threads (SIMT). Every thread in a warp runs the same kernel code but may take a different branch; threads that do not take a branch are masked off while the others run it, so performance is best when the threads of a warp follow the same path. For this reason the guide recommends block sizes that are a multiple of 32.[21]
The 2008 ACM Queue article summarized the design as "three key abstractions": a hierarchy of thread groups, shared memories and barrier synchronization, added to conventional C code written for a single thread.[11] Since CUDA 13.1 the platform also supports the tile programming model described above, in which code is written at the level of a whole thread block.[21][16]
Platform components
| Component | Description |
|---|---|
| NVIDIA driver | Required for all GPU use, including display; it also provides Vulkan and Direct3D. NVIDIA describes the driver as "the operating system of the GPU."[22] |
| CUDA Toolkit | Libraries, headers and tools for building and analyzing GPU software, distributed separately from the driver. NVIDIA lists GPU-accelerated libraries, debugging and optimization tools, a C/C++ compiler and a runtime library.[22][17] |
| Runtime and driver APIs | The CUDA runtime API (memory allocation, data copies, kernel launches) is built on the lower-level CUDA driver API; applications can use either or both.[22] |
| PTX | Parallel Thread Execution, a versioned virtual instruction set that sits above each GPU's physical instruction set. Compilers for other languages can generate PTX, which the driver can compile just in time for GPUs that did not exist when the application was built.[22] |
| Compute capability | A version number (for example 12.0) that identifies the features and hardware parameters of each NVIDIA GPU and matches its SM version (sm_120).[22] |
| Libraries | cuBLAS, cuFFT, cuDNN and CUTLASS, among others; NVIDIA groups its libraries under the name CUDA-X.[1][19] |
| Python | The CUDA Python ecosystem includes cuda.core for device and memory control, CuPy, and domain-specific languages for writing kernels in Python, including cuda.tile.[23] |
The programming guide notes that domain-specific languages such as NVIDIA's Warp and OpenAI's Triton compile to run directly on the CUDA platform.[1]
Graphics interoperability
Real-time graphics applications can let CUDA kernels work on data owned by a graphics API. With the direct graphics interoperability approach, OpenGL buffers, textures and renderbuffers, and Direct3D 9, 10 and 11 resources, are registered with CUDA and mapped into its address space, so a kernel can read or write them. A second, more flexible method, external resource interoperability, imports and exports memory and synchronization objects through operating-system handles so they can be shared without copying; it supports Direct3D 11 and 12, Vulkan and NVIDIA's Software Communication Interface.[5]
Use in VR and AR
360-degree video stitching
NVIDIA's VRWorks 360 Video SDK, part of its VRWorks suite, stitches footage from multi-camera rigs into 360-degree video. Version 1.1 added support for Volta GPUs and was "Built on CUDA 9.0"; NVIDIA reported a 70% performance increase, measured on Titan V and Titan Xp cards.[6] Version 2.0, announced in October 2018, added support for CUDA 10 and Turing-based Quadro and GeForce RTX GPUs. NVIDIA said it stitched up to twice as fast on RTX GPUs as on Pascal GPUs. The release also added ambisonic audio and a depth-based alignment mode for scenes with objects close to the camera rig.[20]
Neural graphics and radiance fields
Instant Neural Graphics Primitives, an NVIDIA Research paper by Thomas Müller, Alex Evans, Christoph Schied and Alexander Keller, was published in ACM Transactions on Graphics for SIGGRAPH 2022. The authors implemented "the whole system using fully-fused CUDA kernels," which let them train neural radiance fields and other neural graphics primitives in seconds and render them in tens of milliseconds at 1920x1080.[24] The open-source instant-ngp viewer has a VR mode that shows trained models in a headset through OculusVR (a Rift or a Meta Quest connected by cable), SteamVR or any OpenXR-compatible runtime. Its multi-GPU option applies only to VR, with one GPU rendering each eye. The project requires an NVIDIA GPU and is built on NVIDIA's tiny-cuda-nn framework.[7]
3D Gaussian splatting, introduced by Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler and George Drettakis in 2023, renders captured scenes in real time (at least 30 fps at 1080p, according to the authors). The authors wrote "custom CUDA kernels for rasterization" and used NVIDIA's CUB sorting routines.[25] Their reference code requires a CUDA-ready GPU with compute capability 7.0 or higher, and 24 GB of video memory to train scenes to the quality reported in the paper.[26]
Later research adapted that CUDA renderer for headsets. VRSplat (2025), by researchers from Peking University, Graz University of Technology and Carnegie Mellon University, integrated two artifact-reduction methods "within the core 3DGS CUDA renderer" and added a rasterizer that renders tiles at different resolutions for single-pass foveated rendering. In the authors' tests, scenes ran above 72 fps on an NVIDIA RTX 4090 and were shown on a tethered Meta Quest 3 at its native resolution of 2064 x 2272 pixels per eye. In a user study with 25 participants, VRSplat was preferred over other configurations of the Mini-Splatting method.[8]
Supported hardware and operating systems
CUDA runs only on NVIDIA GPUs. NVIDIA says applications built with the toolkit can be deployed on "GPU-accelerated embedded systems, desktop workstations, enterprise data centers, cloud-based platforms, and supercomputers."[17] NVIDIA's Jetson embedded modules get CUDA through the JetPack SDK; JetPack 7 supports the Jetson Orin and Thor platforms, and Jetson Thor uses a unified CUDA 13.0 installation across all Arm targets.[27]
The current documentation provides installation guides for Linux and Windows.[28] macOS support ended after CUDA 10.2.[14] Compiled CUDA binaries run on GPUs with the same major compute capability and an equal or higher minor version. PTX code embedded in an application can be compiled just in time for newer GPUs, which keeps older software working on new hardware.[22]
Reception and influence
Early academic and industry results reported large speedups. The 2008 ACM Queue article cited a CUDA MRI reconstruction that ran 263 times faster than a serial CPU implementation, molecular dynamics code that ran 10 to 100 times faster, and an n-body astrophysics simulation that ran 50 to 250 times faster, all on Tesla-architecture GPUs.[11] NVIDIA's current programming guide says CUDA has been used for workloads "of nearly every type," from fluid dynamics simulations to databases, and that GPU programmability was foundational to work ranging from image classification to diffusion models and large language models.[1]
CUDA's position has also drawn regulatory attention. In its June 28, 2024 opinion on generative artificial intelligence, France's competition authority, the Autorité de la concurrence, reported concern about "the sector's dependence on Nvidia's CUDA chip programming software," which it described as "the only one that is 100% compatible with the GPUs that have become essential for accelerated computing." It added that alternatives to CUDA were "beginning to emerge."[29]
See also
References
- ↑ 1.0 1.1 1.2 1.3 1.4 "CUDA Programming Guide: 1.1 Introduction". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/cuda-programming-guide/01-introduction/introduction.html. Retrieved 2026-10-13.
- ↑ 2.0 2.1 2.2 "NVIDIA Unveils CUDA - The GPU Computing Revolution Begins". HEXUS. NVIDIA (press release). 2006-11-08. https://hexus.net/qaha5. Retrieved 2026-10-13.
- ↑ 3.0 3.1 3.2 Jeremy Hellstrom (2007-02-16). "NVIDIA CUDA Unleashes Power of GPU Computing". PC Perspective. https://pcper.com/2007/02/nvidiaa-cudatm-unleashes-power-of-gpu-computing/. Retrieved 2026-10-13.
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 "CUDA Toolkit Archive". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/cuda-toolkit-archive. Retrieved 2026-10-13.
- ↑ 5.0 5.1 "CUDA Programming Guide: 4.21 CUDA Interoperability with APIs". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/cuda-programming-guide/04-special-topics/graphics-interop.html. Retrieved 2026-10-13.
- ↑ 6.0 6.1 6.2 "VRWorks 360 Video 1.1 SDK Release". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/vrworks-360-video-11-sdk-release. Retrieved 2026-10-13.
- ↑ 7.0 7.1 "Instant Neural Graphics Primitives (instant-ngp)". GitHub. NVIDIA Research (NVlabs). https://github.com/NVlabs/instant-ngp. Retrieved 2026-10-13.
- ↑ 8.0 8.1 Xuechang Tu, Lukas Radl, Michael Steiner, Markus Steinberger, Bernhard Kerbl, Fernando De la Torre (2025-05). "VRSplat: Fast and Robust Gaussian Splatting for Virtual Reality". Proceedings of the ACM on Computer Graphics and Interactive Techniques, vol. 8, no. 1. https://doi.org/10.1145/3728311. Retrieved 2026-10-13.
- ↑ Ian Buck, Tim Foley, Daniel Horn, Jeremy Sugerman, Kayvon Fatahalian, Mike Houston, Pat Hanrahan (2004). "Brook for GPUs: Stream Computing on Graphics Hardware". Stanford University Computer Graphics Laboratory (SIGGRAPH 2004). https://graphics.stanford.edu/papers/brookgpu/. Retrieved 2026-10-13.
- ↑ Ian Buck. "Ian Andrew Buck (resume)". Stanford University Computer Graphics Laboratory. https://graphics.stanford.edu/~ianbuck/resumeWeb.html. Retrieved 2026-10-13.
- ↑ 11.0 11.1 11.2 11.3 John Nickolls, Ian Buck, Michael Garland, Kevin Skadron (2008-03). "Scalable Parallel Programming with CUDA". ACM Queue, vol. 6, no. 2. https://doi.org/10.1145/1365490.1365500. Retrieved 2026-10-13.
- ↑ "Nvidia Introduces CUDA Architecture for Computing on GPUs". Computer Graphics World. 2006-11-16. https://cgw.com/Press-Center/News/2006/Nvidia-Introduces-CUDA-Architecture-for-Computin.aspx. Retrieved 2026-10-13.
- ↑ Erik Lindholm, John Nickolls, Stuart Oberman, John Montrym (2008-04). "NVIDIA Tesla: A Unified Graphics and Computing Architecture". IEEE Micro, vol. 28, no. 2. https://research.nvidia.com/publication/2008-04_nvidia-tesla-unified-graphics-and-computing-architecture. Retrieved 2026-10-13.
- ↑ 14.0 14.1 14.2 "CUDA Toolkit 10.2 Release Notes". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/archive/10.2/cuda-toolkit-release-notes/index.html. Retrieved 2026-10-13.
- ↑ 15.0 15.1 "CUDA Features Archive". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/cuda-features-archive/index.html. Retrieved 2026-10-13.
- ↑ 16.0 16.1 16.2 Jonathan Bentz, Tony Scudiero (2025-12-04). "NVIDIA CUDA 13.1 Powers Next-Gen GPU Programming with NVIDIA CUDA Tile and Performance Gains". NVIDIA Technical Blog. NVIDIA. https://developer.nvidia.com/blog/nvidia-cuda-13-1-powers-next-gen-gpu-programming-with-nvidia-cuda-tile-and-performance-gains/. Retrieved 2026-10-13.
- ↑ 17.0 17.1 17.2 17.3 "CUDA Toolkit". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/cuda-toolkit. Retrieved 2026-10-13.
- ↑ "CUDA Toolkit Release Notes". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html. Retrieved 2026-10-13.
- ↑ 19.0 19.1 NVIDIA Writers (2026-03-19). "NVIDIA GTC 2026: Live Updates on What's Next in AI". NVIDIA Blog. NVIDIA. https://blogs.nvidia.com/blog/gtc-2026-news/. Retrieved 2026-10-13.
- ↑ 20.0 20.1 Stanley Tack (2018-10-18). "NVIDIA RTX-Powered VRWorks 360 Video SDK Offers New Features". Computer Graphics World. https://www.cgw.com/Press-Center/News/2018/NVIDIA-RTX-Powered-VRWorks-360-Video-SDK-Offers-.aspx. Retrieved 2026-10-13.
- ↑ 21.0 21.1 21.2 21.3 "CUDA Programming Guide: 1.2 Programming Model". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/cuda-programming-guide/01-introduction/programming-model.html. Retrieved 2026-10-13.
- ↑ 22.0 22.1 22.2 22.3 22.4 22.5 "CUDA Programming Guide: 1.3 The CUDA Platform". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/cuda-programming-guide/01-introduction/cuda-platform.html. Retrieved 2026-10-13.
- ↑ "CUDA Programming Guide: 2.2 Intro to CUDA Python". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/cuda-programming-guide/02-basics/intro-to-cuda-python.html. Retrieved 2026-10-13.
- ↑ Thomas Müller, Alex Evans, Christoph Schied, Alexander Keller (2022-07). "Instant Neural Graphics Primitives with a Multiresolution Hash Encoding". ACM Transactions on Graphics, vol. 41, no. 4, article 102. https://doi.org/10.1145/3528223.3530127. Retrieved 2026-10-13.
- ↑ Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler, George Drettakis (2023). "3D Gaussian Splatting for Real-Time Radiance Field Rendering". ACM Transactions on Graphics, vol. 42, no. 4. https://doi.org/10.1145/3592433. Retrieved 2026-10-13.
- ↑ "3D Gaussian Splatting for Real-Time Radiance Field Rendering (official implementation)". GitHub. GRAPHDECO, Inria. https://github.com/graphdeco-inria/gaussian-splatting. Retrieved 2026-10-13.
- ↑ "JetPack SDK". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/embedded/jetpack. Retrieved 2026-10-13.
- ↑ "CUDA Toolkit Documentation". NVIDIA Documentation. NVIDIA. https://docs.nvidia.com/cuda/. Retrieved 2026-10-13.
- ↑ "Generative artificial intelligence: the Autorité issues its opinion on the competitive functioning of the sector". Autorité de la concurrence. 2024-06-28. https://www.autoritedelaconcurrence.fr/en/press-release/generative-artificial-intelligence-autorite-issues-its-opinion-competitive. Retrieved 2026-10-13.