Ir publicēts ZLUDA rīku komplekts, kas ļauj palaist CUDA lietojumprogrammas AMD GPU

ZLUDA projektā ir sagatavota atvērta CUDA tehnoloģijas ieviešana AMD GPU, kas ļauj darbināt nemodificētas CUDA lietojumprogrammas ar veiktspēju, kas ir tuvu bez slāņiem strādājošo lietojumprogrammu veiktspējai. Publicētais rīku komplekts nodrošina bināro saderību ar esošajām CUDA lietojumprogrammām, kas apkopotas, izmantojot CUDA kompilatoru NVIDIA GPU. Ieviešana darbojas, izmantojot AMD izstrādāto ROCm steku un izpildlaika HIP (neviendabīgo skaitļošanas interfeisu pārnesamībai). Projekta kods ir rakstīts Rust un tiek izplatīts saskaņā ar MIT un Apache 2.0 licencēm. Atbalsta darbu operētājsistēmās Linux un Windows.

Slānis CUDA darba organizēšanai sistēmās ar AMD GPU ir izstrādāts pēdējo divu gadu laikā, taču projektam ir garāka vēsture, un tas sākotnēji tika izveidots, lai nodrošinātu CUDA darbu ar Intel GPU. Izmaiņas GPU atbalsta politikā tiek skaidrotas ar to, ka sākotnēji ZLUDA izstrādātājs bija Intel darbinieks, taču 2021. gadā šis uzņēmums uzskatīja, ka iespējas nodrošināt CUDA aplikācijas Intel GPU procesoros nav biznesa intereses un nepaātrinājās. iniciatīvas attīstība.

2022. gada sākumā izstrādātājs pameta Intel, un AMD viņu noslēdza, lai izstrādātu CUDA saderības slāni. Izstrādes laikā AMD lūdza nereklamēt AMD interesi par ZLUDA projektu un neuzņemties saistības publiskajā ZLUDA repozitorijā. Divus gadus vēlāk AMD nolēma, ka CUDA lietojumprogrammu palaišana AMD GPU neinteresē biznesu, kas saskaņā ar līguma noteikumiem ļāva izstrādātājam atklāt savu darbu. Tā kā GPU ražotāji ir pārtraukuši projekta finansēšanu, tā liktenis tagad ir atkarīgs no sabiedrības ieinteresētības un sadarbības priekšlikumu saņemšanas no citiem uzņēmumiem. Bez ārēja atbalsta projekts varēs attīstīties tikai autoram personiski interesantos virzienos, piemēram, DLSS (Deep Learning Super Sampling).

Pašreizējā formā ieviešanas kvalitātes līmenis ir novērtēts kā alfa versija. Tomēr ZLUDA jau var izmantot, lai palaistu daudzas CUDA lietojumprogrammas, tostarp Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM un Arnold. Nodrošina minimālu atbalstu cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL un NVML primitīvām un bibliotēkām.

Pirmā CUDA lietojumprogrammu palaišana, kurā darbojas ZLUDA, notiek ar ievērojamu kavēšanos, jo ZLUDA apkopo GPU kodu. Turpmākajās darbībās šādas aizkaves nav, jo apkopotais kods tiek saglabāts kešatmiņā. Palaižot kompilētu kodu, veiktspēja ir tuvu vietējai. Palaižot Geekbench ar AMD Radeon 6800 XT GPU, CUDA etalona komplekta ZLUDA versija darbojās ievērojami labāk nekā OpenCL versija.

Ir publicēts ZLUDA rīku komplekts, kas ļauj palaist CUDA lietojumprogrammas AMD GPU

Atbalsts oficiālajai CUDA draivera API un nedokumentētās CUDA API reversās inženierijas daļai ir ieviests ZLUDA, aizstājot funkciju izsaukumus ar līdzīgām funkcijām, kas tiek nodrošinātas HIP izpildlaikā, kas daudzējādā ziņā ir līdzīgs CUDA. Piemēram, funkcija cuDeviceGetAttribute() tiek aizstāta ar hipDeviceGetAttribute(). Saderība ar NVIDIA bibliotēkām, piemēram, NVML, cuBLAS un cuSPARSE, tiek nodrošināta līdzīgi - šādām bibliotēkām ZLUDA nodrošina tulkošanas bibliotēkas ar tādu pašu nosaukumu un vienādu funkciju komplektu, kas veidotas kā papildinājumi pār līdzīgām AMD bibliotēkām.

GPU lietojumprogrammas kods, kas kompilēts PTX (Parallel Thread Execution) attēlojumā, ar speciālu kompilatoru vispirms tiek pārtulkots LLVM IR starpattēlā, uz kura pamata tiek ģenerēts binārais kods AMD GPU.

Ir publicēts ZLUDA rīku komplekts, kas ļauj palaist CUDA lietojumprogrammas AMD GPU


Avots: opennet.ru

Pievieno komentāru