Andrzej Janik hat die Version ZLUDA 5 vorgestellt, eine Open-Source-Implementierung der CUDA-Technologie. Ziel des Projekts ist es, die Ausführung unveränderter CUDA-Anwendungen auf GPUs von Nicht-NVIDIA-Systemen zu ermöglichen, mit einer Leistung, die der von Anwendungen ähnelt, die ohne Schichten ausgeführt werden. Der Code des Projekts ist in Rust geschrieben und wird unter den Lizenzen MIT und Apache 2.0 vertrieben.
ZLUDA 5 ist die zweite bedeutende Veröffentlichung des Projekts, die nach der Bereinigung des Codes von den Arbeiten, die Andrzej bei AMD geleistet hat, entstanden ist. Seit 2022 hat Andrzej bei AMD an einem Layer gearbeitet, der die Kompatibilität von AMD-GPUs mit CUDA ermöglicht, aber im Jahr 2024 wurde das Projekt eingestellt. Entsprechend den Vertragsbedingungen und nach Genehmigung zur Veröffentlichung durch einen Vertreter von AMD hat Andrzej den Code der während seiner Zeit bei AMD entwickelten Arbeiten veröffentlicht, die die Ausführung von CUDA-Anwendungen über den ROCm-Stack und die HIP-Laufzeit (Heterogeneous-computing Interface for Portability) ermöglichen.
Im vergangenen Jahr war Andrzej gezwungen, den Code aus dem Open Access zu entfernen, nachdem er ein Schreiben von Anwälten erhalten hatte, die deutlich machten, dass die während der E-Mail-Korrespondenz erteilte Genehmigung keine rechtliche Grundlage hatte. Danach begann Andrzej mit der Arbeit an einer neuen Version von ZLUDA, die auf der Codebasis basiert, die vor seinem Einstieg bei AMD existierte. Derzeit konzentriert sich die Entwicklung auf die Ausführung von Anwendungen, die CUDA zur Beschleunigung von Aufgaben im Bereich des maschinellen Lernens nutzen. Das Projekt beschränkt sich vorerst auf die Nutzung von AMD-GPUs, wird aber in Zukunft auch für Intel-GPUs angepasst.
Wichtige Verbesserungen in der neuen Version:
- Anfangs wurde die Unterstützung zur Ausführung von Frameworks wie llm.c, Llama.cpp und PyTorch über ZLUDA für große Sprachmodelle hinzugefügt, wobei CUDA-Optimierungen für NVIDIA-GPUs verwendet werden.
- Es wurde eine erste Unterstützung für die Ausführung von Anwendungen implementiert, die die Bibliotheken cuBLAS, cuBLASLt und nvml zur Leistungssteigerung nutzen.
- Die Schicht zluda_trace wurde hinzugefügt, um Anwendungen, die CUDA nutzen, zu überwachen. Mit zluda_trace können Probleme diagnostiziert und Unzulänglichkeiten in ZLUDA identifiziert werden, die die korrekte Ausführung der Anwendung behindern.
- Die CLI-Anwendung zoc (ZLUDA Offline-Compiler) ermöglicht die Kompilierung von NVIDIA PTX-Anweisungsdateien in die Zwischenrepräsentation von AMD RDNA (diese Funktionalität war zuvor in Form von Bibliotheksfunktionen verfügbar).
- Der PTX-Modul-Loader implementiert einen Cache-Mechanismus für die auf der GPU ausgeführten Kerne. Durch das Caching können ressourcenintensive Operationen zur Kompilierung von PTX (Parallel Thread Execution) in Maschinencode für die jeweilige GPU wiederholt vermieden werden.
Quelle: opennet.ru
