Buvo paskelbtas ZLUDA įrankių rinkinys, leidžiantis paleisti CUDA programas AMD GPU

Проект ZLUDA подготовил открытую реализацию технологии CUDA для GPU AMD, позволяющую выполнять немодифицированные CUDA-приложения с производительностью, близкой к производительности приложений, выполняемых без прослоек. Опубликованный инструментарий обеспечивает бинарную совместимость с существующими CUDA-приложениями, собранными при помощи компилятора CUDA для GPU NVIDIA. Реализация работает поверх развиваемого компанией AMD стека ROCm и runtime HIP (Heterogeneous-computing Interface for Portability). Код проекта написан на языке Rust и распространяется под лицензиями MIT и Apache 2.0. Поддерживается работа в Linux и Windows.

CUDA darbo su AMD GPU sistemose organizavimo sluoksnis buvo sukurtas per pastaruosius dvejus metus, tačiau projektas turi ilgesnę istoriją ir iš pradžių buvo sukurtas siekiant užtikrinti CUDA darbą su Intel GPU. GPU palaikymo politikos pasikeitimas paaiškinamas tuo, kad iš pradžių ZLUDA kūrėjas buvo „Intel“ darbuotojas, tačiau 2021 m. ši įmonė laikė, kad galimybė paleisti CUDA programas Intel GPU yra verslo interesas ir nepagreitino. iniciatyvos plėtrą.

2022 m. pradžioje kūrėjas paliko „Intel“ ir AMD sudarė sutartį, kad sukurtų CUDA suderinamumo sluoksnį. Kūrimo metu AMD paprašė nereklamuoti AMD susidomėjimo ZLUDA projektu ir neprisiimti įsipareigojimų viešai ZLUDA saugyklai. Po dvejų metų AMD nusprendė, kad CUDA programų paleidimas AMD GPU verslui nėra įdomus, o tai pagal sutarties sąlygas leido kūrėjui atrasti savo darbą. Kadangi GPU gamintojai nustojo finansuoti projektą, jo likimas dabar priklauso nuo bendruomenės susidomėjimo ir kitų įmonių bendradarbiavimo pasiūlymų gavimo. Be išorinės paramos projektas galės vystytis tik autoriui asmeniškai įdomiomis kryptimis, pavyzdžiui, DLSS (Deep Learning Super Sampling).

Dabartinėje formoje įgyvendinimo kokybės lygis vertinamas kaip alfa versija. Tačiau ZLUDA jau galima naudoti daugeliui CUDA programų, įskaitant Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM ir Arnold. Teikia minimalų cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL ir NVML primityvų ir bibliotekų palaikymą.

Pirmasis CUDA programų, kuriose veikia ZLUDA, paleidimas pastebimai vėluoja dėl to, kad ZLUDA kompiliuoja GPU kodą. Vėlesnėse operacijose tokio vėlavimo nėra, nes sukompiliuotas kodas saugomas talpykloje. Vykdant sukompiliuotą kodą, našumas yra artimas vietiniam. Paleidus Geekbench AMD Radeon 6800 XT GPU, CUDA etaloninio rinkinio ZLUDA versija veikė žymiai geriau nei OpenCL versija.

Buvo paskelbtas ZLUDA įrankių rinkinys, leidžiantis paleisti CUDA programas AMD GPU

Oficialios CUDA tvarkyklės API ir atvirkštinės inžinerijos nedokumentuotos CUDA API dalies palaikymas įdiegtas ZLUDA pakeičiant funkcijų iškvietimus panašiomis funkcijomis, teikiamomis HIP vykdymo laiku, kuris daugeliu atžvilgių panašus į CUDA. Pavyzdžiui, funkcija cuDeviceGetAttribute() pakeičiama hipDeviceGetAttribute(). Suderinamumas su NVIDIA bibliotekomis, tokiomis kaip NVML, cuBLAS ir cuSPARSE, užtikrinamas panašiai – tokioms bibliotekoms ZLUDA pateikia vertimo bibliotekas su tuo pačiu pavadinimu ir tuo pačiu funkcijų rinkiniu, sukonstruotas kaip priedai per panašias AMD bibliotekas.

GPU programos kodas, sukompiliuotas į PTX (Parallel Thread Execution) atvaizdavimą, pirmiausia specialiu kompiliatoriumi išverčiamas į LLVM IR tarpinį atvaizdavimą, kurio pagrindu generuojamas dvejetainis kodas AMD GPU.

Buvo paskelbtas ZLUDA įrankių rinkinys, leidžiantis paleisti CUDA programas AMD GPU


Šaltinis: opennet.ru
Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster