NVIDIA setzt mit der Veröffentlichung von CUDA 12.9 erneut Maßstäbe in der Welt der GPU-basierten Programmierung und KI-gestützten Anwendungen. Die neueste Version des CUDA Toolkits bringt eine Vielzahl an Neuerungen mit sich, die sowohl Entwickler als auch Unternehmen bei der Maximierung der Leistung und Effizienz ihrer GPU-basierten Anwendungen unterstützen. Im Folgenden werden die wichtigsten Aspekte und Funktionen von CUDA 12.9 detailliert erläutert.
Das CUDA Toolkit 12.9 zeichnet sich durch einen modularen Ansatz bei den Komponenten aus. Seit CUDA 11 werden die einzelnen Toolkit-Komponenten unabhängig voneinander versioniert, so dass Aktualisierungen zielgerichtet und effizient erfolgen können. Mit Version 12.9 sind zahlreiche zentrale Komponenten aktualisiert worden, darunter Libcu++, Thrust, der CUDA Runtime, das CUDA Compiler Toolkit (nvcc), und viele weitere Bibliotheken wie cuBLAS, cuFFT, cuSOLVER und cuSPARSE.
Diese Komponenten unterstützen eine breite Palette von Architekturen, von klassischen x86_64-Systemen bis hin zu ARM-basierten Plattformen wie aarch64-jetson und arm64-sbsa, wodurch eine maximale Kompatibilität gewährleistet wird. Eine der hervorstechenden Neuerungen in CUDA 12.9 ist die Unterstützung neuer Compiler-Zielarchitekturen wie SM 10.3 und SM 12.1, inklusive der Einführung von family-specific architectures.
Dies ermöglicht eine noch zielgerichtetere Optimierung und Anpassung des Codes an die spezifischen Hardwareeigenschaften moderner NVIDIA GPUs, besonders für die neuesten Ampere-, Hopper- und Blackwell-Architekturen. Für Entwickler bedeutet dies eine bessere Performance und effizientere Nutzung der Hardware-Ressourcen, was gerade in hochkomplexen KI- und HPC-Anwendungen erhebliche Vorteile bringt. CUDA 12.9 baut zudem die Unterstützung von CUDA in Graphics (CIG) aus, indem neben DirectX jetzt auch Vulkan als Grafik-API integriert wird. Diese Erweiterung erleichtert die Entwicklung von Anwendungen, die eine Kombination aus Grafik- und Compute-Workloads erfordern, indem sie engere und effizientere Verbindungen zwischen Grafik- und Compute-Pipelines ermöglicht.
Besonders Entwickler von Spielen und professionellen Visualisierungs-Tools profitieren davon. Eine weitere bahnbrechende Verbesserung zeigt sich in der erweiterten NUMA-Unterstützung (Non-Uniform Memory Access) für CPU-Systeme unter Windows. Über die APIs cuMemCreate und cuMemAllocAsync können CUDA-Anwendungen nun auch im Windows-Treiber-Modus WDDM und MCDM effizientere Speicherzuweisungen vornehmen, was vorher allein in Linux-Systemen möglich war. Dies führt speziell bei Speicherintensiven Anwendungen zu spürbaren Performance-Steigerungen. Im Bereich der CUDA Graphs wurde die Funktionalität so erweitert, dass nun auch Speicherknoten in Untergraphen unterstützt werden.
Diese Erweiterung erlaubt eine granulare Steuerung über Speicheroperationen innerhalb komplexer Graphstrukturen, was wiederum optimale Auslastung und geringere Latenzen bei asynchronen Abläufen und Stream-Verwaltung erlaubt. Das Release kümmert sich auch intensiv um Stabilität und Kompatibilität. Bekannte Probleme wie Segmentation Faults beim Umgang mit Lambda-Ausdrücken in Template-Klassen und fehlerhafte NVCC-Assertions konnten behoben werden. Darüber hinaus wurde das Verhalten bei der Nutzung von C++20 Features verbessert, um den modernen Sprachumfang in NVIDIA-Umgebungen besser zu unterstützen. Auf der Ebene der CUDA Libraries nimmt cuBLAS einen besonderen Stellenwert ein.
Die aktuelle Version 12.9 bringt wichtige Erweiterungen für Matrixmultiplikationen mit sich, insbesondere für niedrige Präzisionsdatenformate wie FP8. Neu ist die Unterstützung unabhängiger Batch-Pointer in der API cuBLASLt – was zuvor nur in der gemmEx API möglich war. Dies erlaubt es Anwendungsszenarien, die mit unregelmäßigen oder dynamischen Batches arbeiten, effizienter und flexibler zu gestalten. Auf den Hopper GPUs wurde zudem die Leistung bei FP32-Matrixoperationen deutlich gesteigert, indem die BF16x9-Algorithmen zur Emulation von FP32 genutzt werden.
Diese Emulationsstrategie bringt bis zu dreifache Steigerungen in Durchsatz und Energieeffizienz und ist besonders relevant im Bereich künstlicher Intelligenz und maschinellen Lernens. Parallel dazu verbessert cuFFT die Leistung für FFT-Berechnungen bei großen Datenmengen sowie die Kompatibilität mit modernen GPU-Architekturen wie Blackwell und Hopper. Neuerungen bei just-in-time Link-Time Optimized (JIT LTO) Kerneln ermöglichen zudem eine bessere Performance und Zuverlässigkeit bei R2C und C2R Transformationen. Dabei wurde außerdem die Speicherplatzberechnung präzisiert, um unnötige Arbeitsspeicherverbrauch zu vermeiden. Im Bereich cuSOLVER wurden neue APIs für nicht-Hermitesche Eigenwertprobleme bereitgestellt und es gab eine gesteigerte Genauigkeit und erweiterten Funktionsumfang für symmetrische Faktorisierungen.
Zudem hat NVIDIA die Nutzer auf Limitierungen hingewiesen, wie zum Beispiel die maximale Eingabematrixgröße von 32768 bei bestimmten Solverfunktionen. Diese Transparenz hilft Nutzern bei der richtigen Skalierung ihrer Anwendungen. Eine der größten Herausforderungen in speicher- und rechenintensiven Anwendungen bleibt die Handhabung von Sparse-Matrizen. Hier hat cuSPARSE große Fortschritte gemacht und neue Speicherformate wie Block Sparse Row (BSR) sowie Sliced Ellpack (SELL) eingeführt. Darüber hinaus wurde die Leistung von SpMV (Sparse Matrix-Vector) und SpMM (Sparse Matrix-Matrix) Verfahren auf modernen Grafikkarten wie Blackwell um das Mehrfache verbessert.
Zusätzlich gibt es deutliche Verbesserungen bei der Fehlerbehandlung und Stabilität der Bibliothek, die ein wesentlicher Faktor in Produktionsumgebungen ist. Das CUDA Math Library Update bietet neue Datentypen insbesondere im Niedrig-Präzisions-Bereich wie FP4 und FP6 sowie Optimierungen bei mathematischen Funktionen wie der Hyperbolischen Tangensfunktion (tanh), was besonders für Machine Learning Modelle von Bedeutung ist. Außerdem wurde der Support für Quad-Precision Typen wie __float128 eingeführt, was die Möglichkeiten in numerisch anspruchsvollen wissenschaftlichen Anwendungen erweitert. Für Entwickler von Bild- und Videoverarbeitungssoftware bringt das nvJPEG Modul bedeutende neue Features. Hardware-beschleunigte JPEG-Kodierung auf Jetson Thor Systemen sowie eine erweiterte Unterstützung für verschiedene Farbformate wie NV12 und YUY2 liefern eine wesentlich schnellere und ressourcenschonendere Verarbeitung.
Der Wechsel zu einer einheitlichen API für Kodierungsvorgänge erleichtert zudem die Wartung und Weiterentwicklung von Codebasen. NVIDIA hat im Release Notes auch die Abschaffung bzw. Veralterung älterer Features angekündigt, um das Toolkit schlanker und zukunftsfähiger zu machen. So wird beispielsweise die NVTX Version 2 komplett entfernt und die LLVM-basierte ICC Host Compiler Integration wird mittelfristig nicht mehr unterstützt. Auch die Unterstützung von älteren GPU-Architekturen wie Maxwell, Pascal und Volta wird in zukünftigen Versionen eingestellt, was Entwickler zur Migration hin zu neueren GPUs zwingt.
Neben den zahlreichen technischen Neuerungen darf die Optimierung der Entwicklerwerkzeuge nicht unerwähnt bleiben. Tools wie Nsight Systems, Nsight Compute, Visual Studio Edition und CUPTI erhalten fortlaufend Funktionsverbesserungen, bessere Fehlerbehandlung und Performance-Verbesserungen, die Entwicklern helfen, ihre Anwendungen effektiv zu profilieren, zu debuggen und zu optimieren. Eine wesentliche Komponente für den produktiven Einsatz von CUDA-Anwendungen ist die Kompatibilität zum GPU-Treiber. CUDA 12.9 setzt aktuelle NVIDIA-Treiber voraus (mindestens Version 575.
51.03 auf Linux und 576.02 auf Windows), dies garantiert Stabilität und effizienten Betrieb auf den neueren GPU-Architekturen. Die Treiber sind rückwärtskompatibel, was bedeutet, dass Anwendungen, die mit früheren CUDA-Versionen kompiliert wurden, ohne Probleme laufen sollten. Darüber hinaus adressiert die Installation des CUDA Toolkits praktische Anforderungen an Entwickler.
Beispielsweise können Nutzer auf Windows und Linux die Treiberinstallation beim Toolkit-Setup überspringen, wenn bereits passende Treiber vorhanden sind. Ebenso stellt NVIDIA Meta-Pakete für Linux bereit, die eine flexible Paketverwaltung ermöglichen. Zusammenfassend stellt CUDA 12.9 einen bedeutenden Schritt vorwärts in Sachen Leistung, Support und Flexibilität dar. Die punktgenauen Optimierungen für neueste NVIDIA GPU-Architekturen, die Unterstützung neuer Speicherverwaltungsoptionen, verbesserte Entwicklerwerkzeuge und der Ausbau der Bibliotheksfunktionen machen das Toolkit zu einem unverzichtbaren Werkzeug für Entwickler, die das Maximum aus moderner GPU-Hardware herausholen wollen.
Die Integration neuer Features und die angekündigten Deprcations zeigen jedoch auch transparenter denn je, dass Entwickler sich aktiv mit der Weiterentwicklung der Hardware auseinandersetzen und ihre Software entsprechend anpassen müssen, um langfristig von den Vorteilen der CUDA Plattform zu profitieren. Für Unternehmen, die in den Bereichen Deep Learning, wissenschaftliches Rechnen oder komplexe Simulationen tätig sind, ist CUDA 12.9 eine Einladung, die nächste Generation von Hochleistungsanwendungen mit GPU-Beschleunigung zu realisieren und dabei modernste Technologien optimal zu nutzen.