Opublikowano narzędzie ZLUDA, które pozwala na uruchamianie aplikacji CUDA na GPU AMD

Projekt ZLUDA opracował otwartą implementację technologii CUDA dla GPU AMD, umożliwiającą uruchamianie niemodyfikowanych aplikacji CUDA z wydajnością zbliżoną do aplikacji uruchamianych bez pośredników. Opublikowane narzędzia zapewniają binarną kompatybilność z istniejącymi aplikacjami CUDA, skompilowanymi za pomocą kompilatora CUDA dla GPU NVIDIA. Implementacja działa na rozwijanym przez firmę AMD stosie ROCm oraz runtime HIP (Heterogeneous-computing Interface for Portability). Kod projektu napisany jest w języku Rust i jest udostępniany na licencjach MIT i Apache 2.0. Obsługiwane są systemy Linux i Windows.

Warstwa umożliwiająca działanie CUDA na systemach z GPU AMD była rozwijana przez ostatnie dwa lata, jednak projekt ma dłuższą historię i pierwotnie został stworzony w celu zapewnienia działania CUDA na GPU Intel. Zmiana polityki wsparcia GPU wynika z faktu, że początkowo programista ZLUDA był pracownikiem Intela, ale w 2021 roku firma uznała, że uruchamianie aplikacji CUDA na GPU Intel nie jest interesujące dla ich biznesu i nie przyspieszyła rozwoju inicjatywy.

Na początku 2022 roku programista odszedł z Intela i podpisał kontrakt z firmą AMD na opracowanie warstwy zgodności z CUDA. Firma AMD poprosiła podczas rozwoju o nieafiszowanie zainteresowania AMD projektem ZLUDA oraz o niepublikowanie commitów w publicznym repozytorium ZLUDA. Po dwóch latach firma AMD zdecydowała, że uruchamianie aplikacji CUDA na GPU AMD nie jest interesujące dla ich biznesu, co zgodnie z warunkami kontraktu umożliwiło programiście udostępnienie swoich osiągnięć. Ponieważ producenci GPU przestali finansować projekt, jego przyszłość teraz zależy od zainteresowania społeczności oraz ofert współpracy ze strony innych firm. Bez wsparcia zewnętrznego projekt prawdopodobnie będzie rozwijać się tylko w kierunkach, które osobiście interesują autora, takich jak DLSS (Deep Learning Super Sampling).

W obecnej formie poziom jakości implementacji oceniany jest jako wersja alfa. Jednocześnie ZLUDA może być już używana do uruchamiania wielu aplikacji CUDA, w tym Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM i Arnold. Zapewnia minimalne wsparcie dla prymitywów i bibliotek cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL i NVML.

Pierwsze uruchomienie aplikacji CUDA z użyciem ZLUDA wiąże się z zauważalnymi opóźnieniami, ponieważ ZLUDA kompiluje kod GPU. W kolejnych uruchomieniach takie opóźnienie nie występuje, ponieważ skompilowany kod jest przechowywany w pamięci podręcznej. Podczas wykonywania skompilowanego kodu wydajność jest zbliżona do natywnej. Podczas wykonywania pakietu Geekbench na GPU AMD Radeon 6800 XT, wersja zestawu testowego dla CUDA, uruchomiona za pomocą ZLUDA, osiągnęła znacznie wyższą wydajność niż wersja oparta na OpenCL.

Opublikowano narzędzie ZLUDA, które pozwala na uruchamianie aplikacji CUDA na GPU AMD

Wsparcie dla oficjalnego CUDA Driver API i części nieudokumentowanego API CUDA, które zostało zbadane poprzez inżynierię wsteczną, zostało zaimplementowane w ZLUDA poprzez zastąpienie wywołań funkcji odpowiednimi funkcjami dostarczanymi w HIP runtime, który w dużej mierze przypomina CUDA. Na przykład, funkcja cuDeviceGetAttribute() jest zastępowana przez hipDeviceGetAttribute(). W podobny sposób zapewniana jest zgodność z bibliotekami NVIDIA, takimi jak NVML, cuBLAS i cuSPARSE — dla tych bibliotek w ZLUDA dostarczane są biblioteki transkrypcyjne o tej samej nazwie i tym samym zestawie funkcji, zbudowane jako nakładki nad podobnymi bibliotekami AMD.

Kod GPU aplikacji skompilowany do formatu PTX (Parallel Thread Execution) jest przekazywany przez specjalny kompilator najpierw do pośredniego formatu LLVM IR, na podstawie którego generowany jest kod binarny dla GPU AMD.

Opublikowano narzędzie ZLUDA, które pozwala na uruchamianie aplikacji CUDA na GPU AMD


Źródło: opennet.ru
Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster