Byl zveřejněn nástroj ZLUDA, který umožňuje spouštět CUDA aplikace na GPU AMD.

Projekt ZLUDA připravil otevřenou implementaci technologie CUDA pro GPU AMD, která umožňuje spouštění nemodifikovaných CUDA aplikací s výkonem blízkým výkonu aplikací spouštěných bez mezivrstvy. Publikovaný nástroj zajišťuje binární kompatibilitu se stávajícími CUDA aplikacemi sestavenými pomocí kompilátoru CUDA pro GPU NVIDIA. Implementace funguje na rozvíjené stacku ROCm a runtime HIP (Heterogeneous-computing Interface for Portability), vyvinutém společností AMD. Kód projektu je napsán v jazyce Rust a je šířen na základě licencí MIT a Apache 2.0. Podporována je práce v Linuxu a Windows.

Vrstva pro organizaci práce CUDA na systémech s GPU AMD se vyvíjela poslední dva roky, ale projekt má delší historii a původně byl vyvinut pro zajištění fungování CUDA na GPU Intel. Změna v politice podpory GPU je vysvětlena tím, že na začátku byl vývojář ZLUDA zaměstnancem společnosti Intel, avšak v roce 2021 tato firma považovala možnost spuštění CUDA aplikací na GPU Intel za nezajímavou pro byznys a nechtěla urychlovat rozvoj iniciativy.

Na začátku roku 2022 vývojář opustil Intel a uzavřel smlouvu se společností AMD na vývoj vrstvy pro kompatibilitu s CUDA. Společnost AMD během vývoje požádala, aby nebyl veřejně propagován zájem AMD o projekt ZLUDA a aby nebyly prováděny commity v veřejném repozitáři ZLUDA. Po dvou letech se společnost AMD rozhodla, že spuštění CUDA aplikací na GPU AMD není pro podnikání zajímavé, což podle podmínek smlouvy umožnilo vývojáři zveřejnit své práce. Vzhledem k tomu, že výrobci GPU přestali projekt financovat, jeho budoucnost nyní závisí na zájmu komunity a přijetí nabídek na spolupráci od dalších firem. Bez externí podpory se projekt bude pravděpodobně vyvíjet pouze v oblastech, které jsou zajímavé osobně pro autora, jako je DLSS (Deep Learning Super Sampling).

V současné době je úroveň kvality implementace hodnocena jako alfa verze. Nicméně, ZLUDA lze již používat pro vykonávání mnoha CUDA aplikací, včetně Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM a Arnold. Zajištěna je minimální podpora primitiv a knihoven cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL a NVML.

První spuštění aplikací CUDA pod ZLUDA trpí znatelnými zpožděními, protože ZLUDA provádí kompilaci GPU kódu. Při dalších spuštěních takové zpoždění není, protože zkompilovaný kód se ukládá do cache. Během provádění zkompilovaného kódu je výkon téměř nativní. Při spuštění balíčku Geekbench na GPU AMD Radeon 6800 XT ukázal testovací set pro CUDA prováděný pomocí ZLUDA výrazně vyšší výkon než varianta založená na OpenCL.

Byl zveřejněn nástroj ZLUDA, který umožňuje spouštět CUDA aplikace na GPU AMD.

Podpora oficiálního CUDA Driver API a části nedokumentovaného API CUDA studované reverzním inženýrstvím je v ZLUDA realizována prostřednictvím nahrazení volání funkcí podobnými funkcemi poskytovanými v HIP runtime, který se v mnoha ohledech podobá CUDA. Například funkce cuDeviceGetAttribute() je nahrazena hipDeviceGetAttribute(). Podobným způsobem je zajištěna i kompatibilita s knihovnami NVIDIA, jako jsou NVML, cuBLAS a cuSPARSE — pro podobné knihovny jsou v ZLUDA poskytnuty překladové knihovny se stejným názvem a sadou funkcí, postavené jako nadstavby nad podobnými knihovnami AMD.

GPU kód aplikací, zkompilovaný do formátu PTX (Parallel Thread Execution), je nejprve speciálním kompilátorem překladán do mezilehlého formátu LLVM IR, na jehož základě je generován binární kód pro GPU AMD.

Byl zveřejněn nástroj ZLUDA, který umožňuje spouštět CUDA aplikace na GPU AMD.


Zdroj: opennet.ru
Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster