Das ZLUDA-Projekt hat eine Open-Source-Implementierung der CUDA-Technologie fĂŒr AMD-GPUs entwickelt. Diese ermöglicht die AusfĂŒhrung unverĂ€nderter CUDA-Anwendungen mit einer Performance, die nahezu der von Anwendungen ohne Zwischenspeicherung entspricht. Das veröffentlichte Toolkit gewĂ€hrleistet BinĂ€rkompatibilitĂ€t mit bestehenden CUDA-Anwendungen, die mit dem CUDA-Compiler fĂŒr NVIDIA-GPUs erstellt wurden. Die Implementierung basiert auf AMDs ROCm-Stack und der HIP-Laufzeitumgebung (Heterogeneous Computing Interface for Portability). Der Projektcode ist in Rust geschrieben und wird unter den Lizenzen MIT und Apache 2.0 veröffentlicht. Linux Đž Windows.
Die Ebene zur Organisation der CUDA-Arbeit auf Systemen mit AMD-GPUs wurde in den letzten zwei Jahren entwickelt, das Projekt hat jedoch eine lĂ€ngere Geschichte und wurde ursprĂŒnglich geschaffen, um die CUDA-Arbeit auf Intel-GPUs sicherzustellen. Die Ănderung in der GPU-UnterstĂŒtzungsrichtlinie erklĂ€rt sich aus der Tatsache, dass der ZLUDA-Entwickler zunĂ€chst ein Intel-Mitarbeiter war, dieses Unternehmen jedoch im Jahr 2021 die Bereitstellung der Möglichkeit, CUDA-Anwendungen auf Intel-GPUs auszufĂŒhren, fĂŒr geschĂ€ftsuninteressant hielt und keine Beschleunigung vornahm die Entwicklung der Initiative.
Anfang 2022 verlieĂ der Entwickler Intel und wurde von AMD beauftragt, eine Schicht fĂŒr CUDA-KompatibilitĂ€t zu entwickeln. WĂ€hrend der Entwicklung bat AMD darum, AMDs Interesse am ZLUDA-Projekt nicht bekannt zu geben und keine Verpflichtungen gegenĂŒber dem öffentlichen ZLUDA-Repository einzugehen. Zwei Jahre spĂ€ter entschied AMD, dass die AusfĂŒhrung von CUDA-Anwendungen auf AMD-GPUs fĂŒr Unternehmen nicht von Interesse sei, was es dem Entwickler laut Vertragsbedingungen ermöglichte, seine Arbeit zu entdecken. Da GPU-Hersteller die Finanzierung des Projekts eingestellt haben, hĂ€ngt sein Schicksal nun vom Interesse der Community und dem Eingang von KooperationsvorschlĂ€gen anderer Unternehmen ab. Ohne externe UnterstĂŒtzung wird sich das Projekt nur in Richtungen entwickeln können, die fĂŒr den Autor persönlich interessant sind, wie beispielsweise DLSS (Deep Learning Super Sampling).
In der aktuellen Form wird das QualitĂ€tsniveau der Implementierung als Alpha-Version bewertet. ZLUDA kann jedoch bereits zum AusfĂŒhren vieler CUDA-Anwendungen verwendet werden, darunter Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM und Arnold. Bietet minimale UnterstĂŒtzung fĂŒr cuDNN-, cuBLAS-, cuSPARSE-, cuFFT-, NCCL- und NVML-Grundelemente und -Bibliotheken.
Der erste Start von CUDA-Anwendungen, auf denen ZLUDA ausgefĂŒhrt wird, erfolgt mit merklichen Verzögerungen, da ZLUDA GPU-Code kompiliert. Bei nachfolgenden DurchlĂ€ufen gibt es keine solche Verzögerung, da der kompilierte Code im Cache gespeichert wird. Beim AusfĂŒhren von kompiliertem Code ist die Leistung nahezu nativ. Beim AusfĂŒhren von Geekbench auf einer AMD Radeon 6800 XT GPU schnitt die ZLUDA-Version der CUDA-Benchmark-Suite deutlich besser ab als die OpenCL-Version.

Die UnterstĂŒtzung der offiziellen CUDA-Treiber-API und des rĂŒckentwickelten Teils der undokumentierten CUDA-API wird in ZLUDA implementiert, indem Funktionsaufrufe durch Ă€hnliche Funktionen ersetzt werden, die in der HIP-Laufzeit bereitgestellt werden, die in vielerlei Hinsicht CUDA Ă€hnelt. Beispielsweise wird die Funktion cuDeviceGetAttribute() durch hipDeviceGetAttribute() ersetzt. Die KompatibilitĂ€t mit NVIDIA-Bibliotheken wie NVML, cuBLAS und cuSPARSE wird auf Ă€hnliche Weise sichergestellt â fĂŒr solche Bibliotheken stellt ZLUDA Ăbersetzungsbibliotheken mit demselben Namen und demselben Funktionsumfang bereit, die als Add-Ons ĂŒber Ă€hnliche AMD-Bibliotheken erstellt werden.
Der in die PTX-Darstellung (Parallel Thread Execution) kompilierte GPU-Anwendungscode wird zunĂ€chst von einem speziellen Compiler in die LLVM-IR-Zwischendarstellung ĂŒbersetzt, auf deren Grundlage BinĂ€rcode fĂŒr AMD-GPUs generiert wird.

Source: opennet.ru
