Objavljen je ZLUDA alat koji vam omogućava pokretanje CUDA aplikacija na AMD GPU-ovima

Projekt ZLUDA je pripremio otvorenu implementaciju CUDA tehnologije za AMD GPU, koja vam omogućava da pokrenete neizmijenjene CUDA aplikacije s performansama bliskim performansama aplikacija koje rade bez slojeva. Objavljeni komplet alata pruža binarnu kompatibilnost sa postojećim CUDA aplikacijama kompajliranim pomoću CUDA kompajlera za NVIDIA GPU. Implementacija radi na vrhu ROCm steka i runtime HIP (Heterogeno-računarski interfejs za prenosivost) koji je razvio AMD. Kod projekta je napisan na Rust-u i distribuira se pod licencama MIT i Apache 2.0. Podržava rad na Linux i Windows.

Sloj za organizovanje CUDA rada na sistemima sa AMD GPU-ima je razvijen u protekle dve godine, ali projekat ima dužu istoriju i prvobitno je kreiran da obezbedi CUDA rad na Intel GPU-ovima. Promjena politike podrške za GPU objašnjava se činjenicom da je u početku ZLUDA programer bio zaposlenik Intela, ali je 2021. ova kompanija smatrala da pružanje mogućnosti pokretanja CUDA aplikacija na Intel GPU-ima nije od poslovnog interesa i nije ubrzala razvoj inicijative.

Početkom 2022. programer je napustio Intel i AMD ga je ugovorio da razvije sloj za CUDA kompatibilnost. Tokom razvoja, AMD je tražio da ne oglašava AMD-ov interes za ZLUDA projekat i da ne vrši obvezivanja na javnom ZLUDA repozitorijumu. Dvije godine kasnije, AMD je odlučio da pokretanje CUDA aplikacija na AMD GPU-ima nije od interesa za poslovanje, što je, prema uslovima ugovora, omogućilo programeru da otkrije njegov rad. Pošto su proizvođači GPU-a prestali da finansiraju projekat, njegova sudbina sada zavisi od interesa zajednice i dobijanja predloga za saradnju od drugih kompanija. Bez eksterne podrške, projekat će se moći razvijati samo u pravcima koji su lično zanimljivi autoru, kao što je DLSS (Deep Learning Super Sampling).

U sadašnjem obliku, nivo kvaliteta implementacije se ocenjuje kao alfa verzija. Međutim, ZLUDA se već može koristiti za pokretanje mnogih CUDA aplikacija, uključujući Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM i Arnold. Pruža minimalnu podršku za cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL i NVML primitive i biblioteke.

Prvo pokretanje CUDA aplikacija koje pokreću ZLUDA događa se s primjetnim kašnjenjima zbog činjenice da ZLUDA kompajlira GPU kod. Nema takvog kašnjenja u narednim izvođenjima, pošto je kompajlirani kod pohranjen u keš memoriji. Kada se izvodi kompajlirani kod, performanse su bliske izvornim. Prilikom pokretanja Geekbench-a na AMD Radeon 6800 XT GPU-u, ZLUDA verzija CUDA benchmark paketa radila je primjetno bolje od OpenCL verzije.

Objavljen je ZLUDA alat koji vam omogućava pokretanje CUDA aplikacija na AMD GPU-ovima

Podrška za službeni CUDA Driver API i obrnutim inženjeringom dio nedokumentiranog CUDA API-ja implementiran je u ZLUDA zamjenom poziva funkcija sa sličnim funkcijama koje se pružaju u HIP runtime-u, što je na mnogo načina slično CUDA-i. Na primjer, funkcija cuDeviceGetAttribute() je zamijenjena hipDeviceGetAttribute(). Kompatibilnost sa NVIDIA bibliotekama kao što su NVML, cuBLAS i cuSPARSE je obezbeđena na sličan način - za takve biblioteke, ZLUDA obezbeđuje prevodilačke biblioteke sa istim imenom i istim skupom funkcija, izgrađene kao dodaci preko sličnih AMD biblioteka.

Aplikacijski kod GPU-a preveden u PTX (Parallel Thread Execution) reprezentaciju prvo se prevodi posebnim kompajlerom u LLVM IR međureprezentaciju, na osnovu koje se generira binarni kod za AMD GPU-ove.

Objavljen je ZLUDA alat koji vam omogućava pokretanje CUDA aplikacija na AMD GPU-ovima


izvor: opennet.ru

Dodajte komentar