ZLUDA-työkalupakki on julkaistu, jonka avulla voit ajaa CUDA-sovelluksia AMD-grafiikkasuorittimilla

ZLUDA-projekti on valmistellut avoimen CUDA-tekniikan toteutuksen AMD GPU:ille, jonka avulla voit ajaa muokkaamattomia CUDA-sovelluksia suorituskyvyllä, joka on lähellä ilman kerroksia toimivien sovellusten suorituskykyä. Julkaistu työkalupakki tarjoaa binääriyhteensopivuuden olemassa olevien CUDA-sovellusten kanssa, jotka on käännetty NVIDIA-grafiikkasuorittimien CUDA-kääntäjällä. Toteutus toimii AMD:n kehittämän ROCm-pinon ja ajonaikaisen HIP:n (Heterogeneous-computing Interface for Portability) päällä. Projektikoodi on kirjoitettu Rust-kielellä ja sitä jaetaan MIT- ja Apache 2.0 -lisenssien alla. Tukee työtä Linuxissa ja Windowsissa.

Kerros CUDA-työn järjestämiseen AMD-grafiikkasuorittimilla varustetuissa järjestelmissä on kehitetty viimeisen kahden vuoden aikana, mutta projektilla on pidempi historia ja se luotiin alun perin varmistamaan CUDA-työskentely Intelin GPU:illa. GPU-tukipolitiikan muutos selittyy sillä, että alun perin ZLUDA-kehittäjä oli Intelin työntekijä, mutta vuonna 2021 tämä yritys piti CUDA-sovellusten ajamista Intelin GPU:illa liiketoiminnallisesti hyödyttömänä eikä nopeuttanut. aloitteen kehittäminen.

Vuoden 2022 alussa kehittäjä jätti Intelin, ja AMD teki sopimuksen CUDA-yhteensopivuuden kerroksen kehittämisestä. Kehityksen aikana AMD pyysi olemaan mainostamatta AMD:n kiinnostusta ZLUDA-projektiin ja olemaan sitoutumatta julkiseen ZLUDA-tietovarastoon. Kaksi vuotta myöhemmin AMD päätti, että CUDA-sovellusten käyttäminen AMD-grafiikkasuorittimilla ei kiinnostanut liiketoimintaa, mikä sopimusehtojen mukaan antoi kehittäjälle mahdollisuuden tutustua työnsä. Koska GPU-valmistajat ovat lopettaneet projektin rahoittamisen, sen kohtalo riippuu nyt yhteisön kiinnostuksesta ja yhteistyöehdotusten vastaanottamisesta muilta yrityksiltä. Ilman ulkopuolista tukea projekti voi kehittyä vain kirjoittajaa henkilökohtaisesti kiinnostaviin suuntiin, kuten DLSS (Deep Learning Super Sampling).

Nykyisessä muodossaan toteutuksen laatutaso on arvioitu alfaversiona. ZLUDA:lla voidaan kuitenkin jo ajaa monia CUDA-sovelluksia, mukaan lukien Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM ja Arnold. Tarjoaa minimaalisen tuen cuDNN-, cuBLAS-, cuSPARSE-, cuFFT-, NCCL- ja NVML-primitiiveille ja kirjastoille.

ZLUDAa käyttävien CUDA-sovellusten ensimmäinen käynnistys tapahtuu huomattavin viivein, koska ZLUDA kokoaa GPU-koodia. Tällaista viivettä ei ole myöhemmissä ajoissa, koska käännetty koodi tallennetaan välimuistiin. Käännettyä koodia suoritettaessa suorituskyky on lähellä alkuperäistä. Kun Geekbenchiä suoritettiin AMD Radeon 6800 XT -grafiikkasuorittimella, CUDA-benchmark-sarjan ZLUDA-versio suoriutui huomattavasti paremmin kuin OpenCL-versio.

ZLUDA-työkalupakki on julkaistu, jonka avulla voit ajaa CUDA-sovelluksia AMD-grafiikkasuorittimilla

Tuki viralliselle CUDA Driver API:lle ja dokumentoimattoman CUDA API:n käännetylle osalle on toteutettu ZLUDA:ssa korvaamalla funktiokutsut samankaltaisilla toiminnoilla, jotka tarjotaan HIP-ajotilassa, joka on monella tapaa samanlainen kuin CUDA. Esimerkiksi cuDeviceGetAttribute()-funktio korvataan funktiolla hipDeviceGetAttribute(). Yhteensopivuus NVIDIA-kirjastojen, kuten NVML, cuBLAS ja cuSPARSE, kanssa varmistetaan samalla tavalla - tällaisille kirjastoille ZLUDA tarjoaa käännöskirjastoja, joilla on sama nimi ja samat toiminnot, jotka on rakennettu lisäosiksi samanlaisten AMD-kirjastojen päälle.

PTX (Parallel Thread Execution) -esitykseen käännetty GPU-sovelluskoodi käännetään ensin erityisellä kääntäjällä LLVM IR -väliesitykseen, jonka perusteella generoidaan binäärikoodi AMD GPU:ille.

ZLUDA-työkalupakki on julkaistu, jonka avulla voit ajaa CUDA-sovelluksia AMD-grafiikkasuorittimilla


Lähde: opennet.ru

Lisää kommentti