Blog

CUDA

CUDA ist die Programmierplattform von Nvidia, mit der sich Grafikprozessoren für allgemeine Berechnungen statt nur für Bilddarstellung einsetzen lassen. Sie besteht aus einer Spracherweiterung für gängige Programmiersprachen, einem Laufzeitsystem und einer wachsenden Zahl von Bibliotheken.

Zusammenfassung

CUDA entstand aus einem Stanford-Forschungsprojekt. Dessen Programmiersprache Brook wurde von Ian Buck, damals Doktorand, entwickelt; Buck wechselte 2004 zu Nvidia und baute dort gemeinsam mit John Nickolls CUDA aus Brook auf (Communications of the ACM 2026).

Vorgestellt wurde CUDA 2006 zusammen mit der Grafikprozessor-Architektur G80 auf der Konferenz Supercomputing (Communications of the ACM 2026). Die Verfügbarkeit der Entwicklungswerkzeuge wird in anderen Darstellungen auf 2007 datiert; eine Herstellerquelle dazu wurde hier nicht gegengeprüft.

Wirtschaftlich wichtig wurde CUDA durch das maschinelle Lernen: Grafikprozessoren machten das Training großer Netze mit riesigen Datenmengen wirtschaftlich möglich (Communications of the ACM 2026).

Vorgeschichte

Der Weg beginnt mit den Shader-Sprachen für Spielegrafik. Schon früh zeigte sich, dass sie für wissenschaftliches Rechnen taugen: Forschende ließen Matrixmultiplikationen, lineare Gleichungslöser und Molekulardynamik auf Shadern laufen. Daraus entstand die Bewegung des GPGPU (Rechnen auf Grafikprozessoren für allgemeine Zwecke) (Communications of the ACM 2026).

Die Anfangszeit war mühsam. Programme mussten über Grafikschnittstellen wie DirectX und OpenGL den Prozessor so „überlisten“, dass ein gezeichnetes Dreieck eine Matrixmultiplikation ausführte (Hemsoth Prickett 2015).

Brook sollte dieses Hindernis beseitigen. Die Sprache verband Ideen aus der Stromverarbeitung mit klassischer Datenparallelität und machte Kernel-Funktionen zum zentralen Baustein (Communications of the ACM 2026). Ein Kernel nimmt ein Datenpaket entgegen, führt auf ihm eine Funktion aus und gibt ein neues Datenpaket zurück.

Funktionsweise

Das Leitbild beschreibt Buck rückblickend so: CUDA sollte Programmierenden vertraut sein, die C, C++ oder Fortran und das Prinzip der Programmfäden (Threads) kennen. Die Sprachen wurden minimal erweitert, sodass sich Funktionen deklarieren lassen, die auf dem Grafikprozessor laufen, und leicht aufrufen lassen (Hemsoth Prickett 2015).

Der Unterschied zu einem gewöhnlichen Prozessor liegt in der Zahl der Fäden. Statt vier, acht oder sechzehn skaliert das Modell auf Zehntausende (Hemsoth Prickett 2015).

Die Hardware dahinter hat mehrere Ebenen der Parallelität. Ein Grafikprozessor besteht aus vielen Kernen, jeder mit einer SIMD-Einheit (typischerweise 32 breit), und jeder Kern verwaltet mehrere Fäden gleichzeitig. Für einen Blackwell B200 nennt die Quelle 384 solcher Multiprozessoren mit je 64 gleichzeitig geführten Gruppen zu 32 Fäden – zusammen 786.432 parallel laufende Aufgaben (Communications of the ACM 2026).

Bibliotheken

Zeitgleich mit CUDA begann Nvidia, Bibliotheken zu bauen. Buck nennt 2015 mehr als ein Dutzend eigene und Hunderte weitere von Dritten (Hemsoth Prickett 2015).

Bibliothek Aufgabe
cuBLAS Matrixrechnung; das PyTorch-Team nennt sie als Beispiel einer spezialisierten CUDA-Bibliothek (PyTorch-Team 2023)
cuDNN Bausteine für neuronale Netze, hervorgegangen aus einem Projekt von Nvidia und Stanford ab 2010 (Communications of the ACM 2026)
NCCL Kommunikation zwischen mehreren Grafikprozessoren; in PyTorch als Backend nccl für verteilte Operationen vorgesehen (PyTorch-Team 2023)

Ein Frühstücksgespräch zwischen Bill Dally und Andrew Ng im Jahr 2010 stand am Anfang des gemeinsamen Projekts, in dem Bryan Catanzaro den Nvidia-Teil leitete (Communications of the ACM 2026).

Bedeutung für die KI

Die Algorithmen hinter tiefen Netzen, Backpropagation und stochastischer Gradientenabstieg, gab es seit den 1980er-Jahren. Es fehlte die Rechenleistung. Mit Grafikprozessoren ließ sich das Training großer Netze auf großen Datensätzen wirtschaftlich durchführen; nach den Durchbrüchen mit AlexNet und GPT beschleunigte sich die Entwicklung, und der Bedarf trieb die Technik weiter (Communications of the ACM 2026).

Frameworks wie PyTorch nutzen CUDA als Grundlage. Schon die Veröffentlichung von PyTorch 2.0 weist ausdrücklich CUDA-Versionen aus, die es voraussetzt (PyTorch-Team 2023).

Kritik

Gebunden an einen Hersteller. CUDA ist die Plattform von Nvidia und wird von Nvidia vorangetrieben (Hemsoth Prickett 2015). Wer Software darauf aufbaut, schreibt sie für Nvidia-Hardware. Der Wechsel zu anderen Herstellern erfordert Anpassungsaufwand; die Einordnung dieses Bindungseffekts steht im Artikel Grafikprozessor.

Abstraktionsschichten lockern die Bindung. PyTorch 2.0 erzeugt für Grafikprozessoren von Nvidia und AMD Code über den Compiler Triton von OpenAI. Dessen Kernel erreichen laut PyTorch-Team die Leistung handgeschriebener Kernel und spezialisierter CUDA-Bibliotheken wie cuBLAS (PyTorch-Team 2023). Das ist eine Herstellerangabe und wurde nicht nachgemessen.

Lernkurve. Als CUDA erschien, verstanden wenige Menschen paralleles Programmieren. David Kirk und Wen-Mei Hwu schulten deshalb Professor:innen in Kursen, die dann Tausenden Studierenden CUDA beibrachten (Communications of the ACM 2026).

Verwandte Begriffe

Quellenangaben

  1. Communications of the ACM, 2026. The Origins of GPU Computing. Communications of the ACM, 13. April 2026. cacm.acm.org/federal-funding-of-academic-research/the-origins-of-gpu-computing
  2. Hemsoth Prickett, Nicole, 2015. Inside The Programming Evolution of GPU Computing. The Next Platform, 28. Oktober 2015. www.nextplatform.com/code/2015/10/28/inside-the-programming-evolution-of-gpu-computing/1646965
  3. PyTorch-Team, 2023. Our next generation release that is faster, more Pythonic and Dynamic as ever. PyTorch Blog, 15. März 2023. pytorch.org/blog/pytorch-2.0-release/

← Zurück zur Lexikon-Übersicht