CUDA ist eine von NVIDIA entwickelte Architektur für GPUs, die am 23. Juni 2007 eingeführt wurde. Der Name „CUDA“ war ursprünglich ein Akronym für „Compute Unified Device Architecture“, aber das Akronym wurde inzwischen nicht mehr offiziell verwendet.
CUDA verbessert die Leistung von Rechenaufgaben, die von Parallelverarbeitung profitieren. Diese Workloads, wie das Rendern von 3D-Bildern in Echtzeit, werden oft als „peinlich parallel“ bezeichnet, da sie sich natürlich dazu eignen, von einzelnen Kernen berechnet zu werden. CUDA-GPUs verfügen über viele dieser CUDA-Kerne, die in die Tausende gehen können, integriert auf einer einzigen Grafikkarte. Software muss speziell für die Architektur unter Verwendung von Low-Level-CUDA-Bibliotheken und APIs geschrieben werden, die von NVIDIA bereitgestellt werden. Die native Programmiersprache dieser Bibliotheken ist C++, aber Wrapper werden für andere Sprachen geschrieben und ermöglichen die CUDA-Verarbeitung in einer Vielzahl von Anwendungen.
Obwohl die CUDA-Architektur ursprünglich für die Ausführung grafikspezifischer Aufgaben entwickelt wurde, wechselte sie 2012 zur Verarbeitung allgemeinerer Arten von Berechnungen, wie z. B. dem Schürfen von Kryptowährungs-Blockchains.
CUDA Low-Level-APIs
Zu den Low-Level-APIs zum Ausführen bestimmter Aufgaben in der CUDA-Architektur gehören:
API | Beschreibung |
---|---|
cuBLAS | Grundlegende lineare Algebra-Unterroutinen, beschleunigt für Bildanalyse und maschinelles Lernen. |
cudaRT | Die Laufzeit-API, die eine vereinfachte Verwaltung von Initialisierung, Threading-Kontexten und Modulen für CUDA-Anwendungen bietet. |
cuFFT | Schnelle Fourier-Transformationen, die auf eine Vielzahl von wissenschaftlichen Disziplinen anwendbar sind, wurden beschleunigt und laufen bis zu 10-mal so schnell wie auf einer CPU. |
cuRANDM |
Generierung von Pseudozufallszahlen in großen Mengen. |
cuSOLVER | Beschleunigte “direkte Löser”, effiziente Algorithmen zum Lösen bestimmter Anwendungen der linearen Algebra. |
cuSPARSE | Subroutinen zum Arbeiten mit dünnbesetzten Matrizen, die viele Nullwertelemente enthalten. Beschleunigt, um bis zu 5x schneller zu arbeiten als CPU-Implementierungen. |
KKW | NVIDIA Performance Primitives-Bibliothek zur Verarbeitung von Bildern, Videos und anderen digitalen Signalen bis zu 30-mal so schnell wie auf einer CPU. |
nvGRAPH | Beschleunigte Implementierungen von Graphanalysealgorithmen, einschließlich des berühmten PageRank-Algorithmus von Google. |
NVML | NVIDIA Management Library, die die Überwachung und Verwaltung mehrerer GPUs ermöglicht, die CUDA-Aufgaben ausführen. |
NVRTC | Laufzeitkompilierungsbibliothek, die Strings von C++-Code in Echtzeit in CUDA-Code konvertiert. |
PhysX | Eine skalierbare Physik-Engine, die Geräte von Smartphones bis hin zu High-End-Workstations unterstützt. Integriert in vorhandene Spiele-Engines von Drittanbietern wie Unreal Engine, Unity3D und Stingray. |
Sprachen mit CUDA-Wrappern
Zu den Programmiersprachen (außer C++), die Software für CUDA-GPUs erstellen können, gehören:
- Haskell
- Java
- Julia
- Lua
- Lispeln
- Mathematik
- MATLAB
- Perl
- Python
- R
- Rubin
Beispiele für CUDA-GPUs
Im Folgenden finden Sie Beispiele für eine Reihe von NVIDIA-GPUs, verglichen nach Anzahl der CUDA-Kerne, maximaler Frequenz in MHz, Speicher in GB und UVP bei Veröffentlichung.
GPU-Name | CUDA-Kerne | Max. Frequenz (MHz) | Arbeitsspeicher (GB) | UVP |
---|---|---|---|---|
GeForce GTX TITAN Z | 5760 | 876 | 12 | $1420 |
NVIDIA TITAN Xp | 3840 | 1582 | 12 | $1200 |
Geforce GTX 1080 | 2560 | 1733 | 8 | $499 |
Geforce GTX 980 | 2048 | 1216 | 4 | $550 |
Geforce GTX 960 | 1024 | 1178 | 2 | $230 |
Geforce GTX 750 | 512 | 1085 | 1 | $120 |
Geforce GT430 | 96 | 700 | 1 | $60 |
3D, Grafik, Hardwarebegriffe, Bibliothek, Grafikkarte, Workstation