Das ZLUDA-Tool wurde veröffentlicht, das es ermöglicht, CUDA-Anwendungen auf AMD-GPUs auszufĂŒhren.

Das ZLUDA-Projekt hat eine offene Implementierung der CUDA-Technologie fĂŒr AMD-GPUs vorbereitet, die es ermöglicht, unverĂ€nderte CUDA-Anwendungen mit einer Leistung auszufĂŒhren, die der von Anwendungen Ă€hnelt, die ohne Layer ausgefĂŒhrt werden. Das veröffentlichte Tool gewĂ€hrleistet binĂ€re KompatibilitĂ€t mit bestehenden CUDA-Anwendungen, die mit dem CUDA-Compiler fĂŒr NVIDIA-GPUs erstellt wurden. Die Implementierung funktioniert ĂŒber den von AMD entwickelten ROCm-Stack und die HIP-Runtime (Heterogeneous-computing Interface for Portability). Der Code des Projekts ist in Rust geschrieben und wird unter den Lizenzen MIT und Apache 2.0 veröffentlicht. Der Betrieb unter Linux und Windows wird unterstĂŒtzt.

Der Layer zur Organisation der CUDA-AusfĂŒhrung auf Systemen mit AMD-GPUs wurde in den letzten zwei Jahren entwickelt, hat jedoch eine lĂ€ngere Geschichte und wurde ursprĂŒnglich zur UnterstĂŒtzung von CUDA auf Intel-GPUs erstellt. Die Änderung der UnterstĂŒtzungspolitik fĂŒr GPUs erklĂ€rt sich dadurch, dass der ursprĂŒngliche ZLUDA-Entwickler Mitarbeiter von Intel war, das Unternehmen jedoch 2021 die Möglichkeit, CUDA-Anwendungen auf Intel-GPUs auszufĂŒhren, als nicht geschĂ€ftlich interessant erachtete und die Förderung der Initiative nicht weiter verfolgte.

Anfang 2022 verliess der Entwickler Intel und schloss einen Vertrag mit AMD ab, um einen Layer zur KompatibilitĂ€t mit CUDA zu entwickeln. AMD bat wĂ€hrend der Entwicklung, das Interesse von AMD am ZLUDA-Projekt nicht öffentlich zu machen und keine Commits im öffentlichen ZLUDA-Repository vorzunehmen. Nach zwei Jahren entschied AMD, dass die AusfĂŒhrung von CUDA-Anwendungen auf AMD-GPUs fĂŒr das GeschĂ€ft nicht von Interesse sei, was gemĂ€ĂŸ den Vertragsbedingungen dem Entwickler ermöglichte, seine Arbeiten offenzulegen. Da die GPU-Hersteller die Finanzierung des Projekts eingestellt haben, hĂ€ngt dessen Zukunft nun vom Interesse der Gemeinschaft und von Angeboten zur Zusammenarbeit anderer Firmen ab. Ohne externe UnterstĂŒtzung wird das Projekt möglicherweise nur in Bereichen weiterentwickelt, die fĂŒr den Autor persönlich von Interesse sind, wie DLSS (Deep Learning Super Sampling).

In der aktuellen Form wird das QualitĂ€tsniveau der Implementierung als Alpha-Version eingeschĂ€tzt. Dennoch kann ZLUDA bereits zur AusfĂŒhrung vieler CUDA-Anwendungen verwendet werden, einschließlich Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM und Arnold. Es wird eine minimale UnterstĂŒtzung fĂŒr die Primitives und Bibliotheken cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL und NVML gewĂ€hrleistet.

Der erste Start von CUDA-Anwendungen unter ZLUDA erfolgt mit spĂŒrbaren Verzögerungen, da ZLUDA den GPU-Code kompiliert. Bei nachfolgenden Starts gibt es keine Verzögerung mehr, da der kompilierte Code im Cache gespeichert wird. WĂ€hrend der AusfĂŒhrung des kompilierten Codes ist die Leistung nahezu nativ. Bei der DurchfĂŒhrung des Geekbench-Pakets auf der GPU AMD Radeon 6800 XT zeigte die Testversion fĂŒr CUDA, die mit ZLUDA durchgefĂŒhrt wurde, eine deutlich höhere Leistung als die Version auf Basis von OpenCL.

Das ZLUDA-Tool wurde veröffentlicht, das es ermöglicht, CUDA-Anwendungen auf AMD-GPUs auszufĂŒhren.

Die UnterstĂŒtzung der offiziellen CUDA Driver API und der durch Reverse Engineering erforschten Teile der nicht dokumentierten CUDA API ist in ZLUDA durch den Austausch von Funktionsaufrufen mit Ă€hnlichen Funktionen umgesetzt, die im HIP-Runtime bereitgestellt werden, welches CUDA sehr Ă€hnlich ist. Beispielsweise wird die Funktion cuDeviceGetAttribute() durch hipDeviceGetAttribute() ersetzt. Auf Ă€hnliche Weise wird die KompatibilitĂ€t mit NVIDIA-Bibliotheken wie NVML, cuBLAS und cuSPARSE gewĂ€hrleistet – fĂŒr solche Bibliotheken werden in ZLUDA Übersetzungsbibliotheken mit demselben Namen und derselben FunktionalitĂ€t bereitgestellt, die auf Ă€hnlichen Bibliotheken von AMD basieren.

Der GPU-Code von Anwendungen, der in das PTX-Format (Parallel Thread Execution) kompiliert wird, wird zunĂ€chst von einem speziellen Compiler in das Intermediate Representation (IR) von LLVM ĂŒbersetzt, auf dessen Grundlage der BinĂ€rcode fĂŒr die AMD-GPU generiert wird.

Das ZLUDA-Tool wurde veröffentlicht, das es ermöglicht, CUDA-Anwendungen auf AMD-GPUs auszufĂŒhren.


Quelle: opennet.ru
60GB SSD 8Gb DDR4