Projekti ZLUDA ka përgatitur një zbatim të hapur të teknologjisë CUDA për GPU-të AMD, e cila lejon ekzekutimin e aplikacioneve CUDA të pamodifikuara me performancë afër atyre të aplikacioneve që ekzekutohen pa ndërfaqe. Mjeti i publikuar siguron përputhshmërinë binarë me aplikacionet CUDA ekzistuese, të ndërtuara me ndihmën e kompilerit CUDA për GPU-të NVIDIA. Zbatimi operon mbi përbërjen ROCm të zhvilluar nga AMD dhe runtime HIP (Heterogeneous-computing Interface for Portability). Kodi i projektit është shkruar në gjuhën Rust dhe shpërndahet nën licencat MIT dhe Apache 2.0. Mbështetet puna në Linux dhe Windows.
Sistemi për organizimin e punës së CUDA në sistemet me GPU AMD është zhvilluar në dy vitet e fundit, por projekti ka një histori më të gjatë dhe fillimisht është krijuar për të siguruar funksionimin e CUDA në GPU Intel. Ndryshimi në politikën e mbështetjes së GPU-ve shpjegohet me faktin se në fillim zhvilluesi ZLUDA ishte një punonjës i Intel, por në vitin 2021 kjo kompani e vlerësoi ofrimin e mundësisë për të ekzekutuar aplikacionet CUDA në GPU Intel si të papërshtatshme për biznesin dhe nuk e vazhdoi zhvillimin e nismës.
Në fillim të vitit 2022, zhvilluesi u largua nga Intel dhe nënshkroi një kontratë me kompaninë AMD për të zhvilluar një shtresë për përputhshmërinë me CUDA. Kompania AMD kërkoi gjatë zhvillimit që të mos publikohej interesi i AMD për projektin ZLUDA dhe të mos bëheshin komitë në depozitarin publik të ZLUDA. Pas dy vjetësh, kompania AMD vendosi që nisja e aplikacioneve CUDA në GPU-në AMD nuk përfaqësonte interes të biznesit, gjë që sipas kushtit të kontratës i lejoi zhvilluesit të publikohej arritjet e tij. Duke qenë se prodhuesit e GPU-së ndaluan financimin e projektit, fati i tij tani varet nga interesi i komunitetit dhe pranimi i propozimeve për bashkëpunim nga kompani të tjera. Pa mbështetje të jashtme, projekti do të mund të zhvillohej vetëm në drejtimet që janë interesante për autorin personalisht, si DLSS (Deep Learning Super Sampling).
Në formën aktuale, niveli i cilësisë së realizimit vlerësohet si një version alfa. Megjithatë, ZLUDA tashmë mund të përdoret për ekzekutimin e shumë aplikacioneve CUDA, duke përfshirë Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM dhe Arnold. Mbështetje minimale është e garantuar për primitive dhe biblioteka cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL dhe NVML.
Lëshimi i parë i aplikacioneve CUDA nën ZLUDA ndodh me vonesa të dukshme, për shkak se ZLUDA kryen kompilimin e kodit GPU. Në lëshimet e mëpasshme, kjo vonesë nuk është e pranishme, pasi kodi i kompiluar ruhet në cache. Gjatë ekzekutimit të kodit të kompiluar, performanca është e afërt me atë natyrore. Kur ekzekutohej paketa Geekbench në GPU-në AMD Radeon 6800 XT, varianti i grupit të testeve për CUDA, i realizuar me ZLUDA, tregoi një performancë të dukshme më të lartë se varianti i bazuar në OpenCL.

MbĂ«shtetja e zyrtarĂ«ve CUDA Driver API dhe e pjesĂ«s tĂ« pa dokumentuar tĂ« API-sĂ« CUDA e studiuar pĂ«rmes inxhinierisĂ« reverse Ă«shtĂ« implementuar nĂ« ZLUDA duke zĂ«vendĂ«suar thirrjet e funksioneve me funksione tĂ« ngjashme, tĂ« ofruara nĂ« runtime HIP, i cili shumĂ« ngjason me CUDA. PĂ«r shembull, funksioni cuDeviceGetAttribute() zĂ«vendĂ«sohet me hipDeviceGetAttribute(). NĂ« mĂ«nyrĂ« tĂ« ngjashme, sigurohet edhe kompatibiliteti me libraritĂ« NVIDIA, siç janĂ« NVML, cuBLAS dhe cuSPARSE â pĂ«r kĂ«to libra, ZLUDA ofron libra translacioni me tĂ« njĂ«jtin emĂ«r dhe tĂ« njĂ«jtin set funksionesh, tĂ« ndĂ«rtuara si ndihma mbi libraritĂ« e ngjashme AMD.
GPU-kodi i aplikacioneve, i kompiliuar në formatin PTX (Parallel Thread Execution), përkthehet nga një kompilues të veçantë fillimisht në një format ndërmjetës LLVM IR, mbi bazën e të cilit gjenerohet kodi binar për GPU-të AMD.

Burimi: opennet.ru
