Objavljen alat ZLUDA koji omogućava pokretanje CUDA aplikacija na AMD GPU-ima

Projekt ZLUDA pripremio je otvorenu implementaciju CUDA tehnologije za AMD GPU-ove, omogućavajući izvršenje neizmijenjenih CUDA aplikacija s performansama bliskim onima aplikacija koje se izvode bez posrednika. Objavljeni alati osiguravaju binarnu kompatibilnost s postojećim CUDA aplikacijama, kompiliranim pomoću CUDA kompajlera za NVIDIA GPU. Implementacija radi putem ROCm stoga koji razvija AMD i HIP (Heterogeneous-computing Interface for Portability) runtime-a. Kod projekta napisan je na Rust jeziku i distribuira se pod MIT i Apache 2.0 licencama. Podržava rad na Linux i Windows platformama.

Sloj za organizaciju rada CUDA na sustavima s AMD GPU razvijan je posljednje dvije godine, no projekt ima dulju povijest i prvotno je stvoren za omogućavanje rada CUDA na Intel GPU-ima. Promjena politike podrške GPU objašnjava se time što je inicijalno razvijač ZLUDA bio zaposlenik Intela, no 2021. godine ta je kompanija smatrala da mogućnost pokretanja CUDA aplikacija na Intel GPU-ima nije zanimljiva za poslovanje i nije nastavila s razvojem inicijative.

Početkom 2022. godine razvijač je dao otkaz u Intelu i potpisao ugovor s AMD-om za razvoj sloja za kompatibilnost s CUDA-om. AMD je tijekom razvoja zatražio da se ne ističe interes AMD-a za projekt ZLUDA i da se ne rade komitmeti u javni repozitorij ZLUDA. Nakon dvije godine, AMD je odlučio da pokretanje CUDA aplikacija na AMD GPU-ima više nije zanimljivo za poslovanje, što je prema uvjetima ugovora omogućilo razvijaču da otkrije svoje radove. Kako su proizvođači GPU-a prestali financirati projekt, njegova sudbina sada ovisi o interesu zajednice i prilozima za suradnju od drugih kompanija. Bez vanjske podrške projekt će se vjerojatno razvijati samo u smjerovima koji su osobno zanimljivi autoru, kao što je DLSS (Deep Learning Super Sampling).

U trenutnom obliku razina kvalitete implementacije ocjenjuje se kao alfa verzija. Ipak, ZLUDA se već može koristiti za izvršavanje mnogih CUDA aplikacija, uključujući Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM i Arnold. Osigurana je minimalna podrška za primitive i biblioteke cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL i NVML.

Prvo pokretanje CUDA aplikacija pod upravljanjem ZLUDA-a dolazi s primjetnim kašnjenjima jer ZLUDA izvršava kompilaciju GPU koda. U sljedećim pokretanjima slična kašnjenja ne postoje, jer se kompajlirani kod čuva u cache-u. Tijekom izvršavanja kompajliranog koda, performanse su bliske nativnim. Tijekom izvođenja Geekbench paketa na GPU AMD Radeon 6800 XT, izvršen test CUDA skupa koji koristi ZLUDA pokazao je znatno bolje performanse od verzije temeljene na OpenCL-u.

Objavljen alat ZLUDA koji omogućava pokretanje CUDA aplikacija na AMD GPU-ima

Podrška za službeni CUDA Driver API i proučenu putem obrnute inženjeringa dio nedokumentiranog CUDA API-ja ostvarena je u ZLUDA-i zamjenom poziva funkcija s ekvivalentnim funkcijama koje pruža HIP runtime, koji je u mnogim aspektima sličan CUDA. Na primjer, funkcija cuDeviceGetAttribute() zamjenjuje se s hipDeviceGetAttribute(). Slična kompatibilnost osigurava se i s NVIDIA knjižnicama kao što su NVML, cuBLAS i cuSPARSE – za te knjižnice u ZLUDA-i pružaju se prevodne knjižnice s istim imenom i istim setom funkcija, izgrađene kao nadogradnje nad sličnim AMD knjižnicama.

GPU kôd aplikacija, kompajliran u PTX (Parallel Thread Execution) predstavljenje, prvo se prevodi posebnim kompajlerom u intermedijarno predstavljanje LLVM IR, na temelju kojeg se generira binarni kod za GPU AMD.

Objavljen alat ZLUDA koji omogućava pokretanje CUDA aplikacija na AMD GPU-ima


Izvor: opennet.ru
Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster