Paketa e veglave ZLUDA është publikuar, e cila ju lejon të ekzekutoni aplikacionet CUDA në GPU-të AMD

Projekti ZLUDA ka përgatitur një zbatim të hapur të teknologjisë CUDA për GPU-të AMD, e cila ju lejon të ekzekutoni aplikacione CUDA të pamodifikuara me performancë afër performancës së aplikacioneve që funksionojnë pa shtresa. Paketa e botuar e veglave ofron përputhshmëri binare me aplikacionet ekzistuese CUDA të përpiluara duke përdorur përpiluesin CUDA për GPU-të NVIDIA. Implementimi funksionon në krye të pirgut ROCm dhe HIP (Interface Heterogeneous-Computing for Portability) të zhvilluar nga AMD. Kodi i projektit është shkruar në Rust dhe shpërndahet nën licencat MIT dhe Apache 2.0. Mbështet punën në Linux dhe Windows.

Shtresa për organizimin e punës CUDA në sistemet me GPU AMD është zhvilluar gjatë dy viteve të fundit, por projekti ka një histori më të gjatë dhe fillimisht u krijua për të siguruar punën CUDA në GPU-të Intel. Ndryshimi në politikën e mbështetjes së GPU-së shpjegohet me faktin se në fillim zhvilluesi i ZLUDA ishte një punonjës i Intel-it, por në vitin 2021 kjo kompani konsideroi sigurimin e aftësisë për të ekzekutuar aplikacionet CUDA në GPU-të Intel si pa interes biznesi dhe nuk e përshpejtoi. zhvillimin e iniciativës.

Në fillim të vitit 2022, zhvilluesi u largua nga Intel dhe u kontraktua nga AMD për të zhvilluar një shtresë për pajtueshmërinë me CUDA. Gjatë zhvillimit, AMD kërkoi të mos reklamonte interesin e AMD në projektin ZLUDA dhe të mos bënte zotime ndaj depove publike ZLUDA. Dy vjet më vonë, AMD vendosi që ekzekutimi i aplikacioneve CUDA në GPU-të AMD nuk ishte me interes për biznesin, gjë që, sipas kushteve të kontratës, i lejoi zhvilluesit të zbulonte punën e tij. Meqenëse prodhuesit e GPU-ve kanë ndaluar financimin e projektit, fati i tij tani varet nga interesi i komunitetit dhe marrja e propozimeve për bashkëpunim nga kompani të tjera. Pa mbështetje të jashtme, projekti do të jetë në gjendje të zhvillohet vetëm në drejtime që janë personalisht interesante për autorin, si DLSS (Deep Learning Super Sampling).

Në formën e tij aktuale, niveli i cilësisë së zbatimit vlerësohet si një version alfa. Sidoqoftë, ZLUDA tashmë mund të përdoret për të ekzekutuar shumë aplikacione CUDA, duke përfshirë Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM dhe Arnold. Ofron mbështetje minimale për primitivët dhe bibliotekat cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL dhe NVML.

Nisja e parë e aplikacioneve CUDA që ekzekutojnë ZLUDA ndodh me vonesa të dukshme për shkak të faktit se ZLUDA përpilon kodin GPU. Nuk ka një vonesë të tillë në ekzekutimet e mëvonshme, pasi kodi i përpiluar ruhet në cache. Kur ekzekutohet kodi i përpiluar, performanca është afër asaj origjinale. Kur përdorni Geekbench në një GPU AMD Radeon 6800 XT, versioni ZLUDA i grupit të standardeve CUDA performoi dukshëm më mirë se versioni OpenCL.

Paketa e veglave ZLUDA është publikuar, e cila ju lejon të ekzekutoni aplikacionet CUDA në GPU-të AMD

Mbështetja për API-në zyrtare të CUDA Driver dhe pjesën e modifikuar të kundërt të API-së CUDA të padokumentuar zbatohet në ZLUDA duke zëvendësuar thirrjet e funksioneve me funksione të ngjashme të ofruara në kohën e ekzekutimit të HIP, e cila është e ngjashme në shumë mënyra me CUDA. Për shembull, funksioni cuDeviceGetAttribute() zëvendësohet nga hipDeviceGetAttribute(). Përputhshmëria me bibliotekat NVIDIA si NVML, cuBLAS dhe cuSPARSE sigurohet në mënyrë të ngjashme - për biblioteka të tilla, ZLUDA ofron biblioteka përkthimi me të njëjtin emër dhe të njëjtin grup funksionesh, të ndërtuara si shtesa mbi biblioteka të ngjashme AMD.

Kodi i aplikacionit GPU i përpiluar në paraqitjen PTX (Parallel Thread Execution) fillimisht përkthehet nga një përpilues i veçantë në paraqitjen e ndërmjetme LLVM IR, mbi bazën e të cilit krijohet kodi binar për GPU-të AMD.

Paketa e veglave ZLUDA është publikuar, e cila ju lejon të ekzekutoni aplikacionet CUDA në GPU-të AMD


Burimi: opennet.ru

Shto një koment