„Nvidia“ išleido „CUDA-oxide“ – „Rust“ ir „CUDA“ kompiliatorių.

„Nvidia“ įmonė опубликовала pirmasis įrankių rinkinio leidimas CUDA-oksidas, kuri leidžia kurti lygiagrečius GPU branduolius Rust kalba CUDA SIMT (Viena instrukcija, keli siūlai). Projektas leidžia kompiliuoti „Rust“ kodą naudojant standartinę tipų sistemą ir nuosavybės modelis Rūdys, tiesiogiai vykdymo instrukcijose CUDA virtualioje mašinoje PTX (nvidia.com) (Lygiagretus gijų vykdymas) nenaudojant tarpinių domenui būdingų kalbų (DSL) ir susiejimų.

Įrankių rinkinio kodas parašytas Rust kalba ir išplatino pagal „Apache 2.0“ licenciją. Pirmasis leidimas pateikiamas kaip pradinė alfa versija.

Į įrankių rinkinį įeina:

  • „Rustc“ kompiliatoriaus kodo generavimo posistemė, leidžianti kompiliuoti funkcijas su „#[branduolys]„į lygiagrečius GPU branduolius CUDA PTX reprezentacijoje. Kompiliavimui naudojama standartinė „rustc“ pagrindu sukurta transformacijos grandinė. Plironas: Rūdys → MIR → Pliron IR → LLVM IR → PTX.
  • Vieninga sistema komponentams, veikiantiems pagrindinėje sistemoje ir GPU, surinkti, kuri apima komandų „cargo oxide build“ ir „cargo oxide run“ vykdymą.
  • „Rust“ abstrakcijų rinkinys, kurį galima naudoti GPU branduoliuose. Pavyzdžiui, yra funkcijų, skirtų indeksavimui, bendrai atminčiai ir barjerų naudojimui, atominėms operacijoms ir gijų grupių sinchronizavimui. TMA (nvlabs.github.io) (Tensor Memory Accelerator). Galima iškviesti susiejimus žemo lygio instrukcijoms, būdingoms Blackwell architektūrai (pavyzdžiui, išplėstinėms matricų operacijoms).
  • Sukurkite paketus su kompiuterio pagrindu veikiančiais CUDA vykdymo laiko komponentais, kurie įgalina atminties valdymą, branduolių paleidimą GPU ir asinchroninį sąveiką su GPU pagrindu veikiančiomis funkcijomis.
  • Branduolio pavyzdžių rinkinys, demonstruojantis tokias funkcijas kaip vektorių manipuliavimas, matricų daugyba (GEMM), atominės operacijos, asinchroninis vykdymas ir bibliotekų integracija. MathDx, naudojant generinius ir uždaruosius koduotus, sąveikaujant su CUDA branduoliais C++/CCCL kalba.

GPU branduoliai kuriami įprastoje „Rust“ kalboje (ne dialekte), bet vykdomi aplinkoje be standarto ir gali naudoti tik funkcijas iš bibliotekos libcore ir anksčiau minėtos specializuotos „Rust“ abstrakcijos, neturint prieigos prie standartinės „Rust“ bibliotekos (libstd). Palaikomi tipai apima primityvius tipus (u8..u64, f32, f64, bool), struktūras, išvardijimus, rinkinius, masyvus ([T; N]) ir skilteles (&[T]), „match / if / if let“ operatorius, „for“ ir „while“ ciklus, iteratorius (.iter(), .enumerate()), uždarymus ir bendrinius tipus. Nepalaikomi „String“, „Vec“ ir „Box“ tipai, „format!“, „panic!“ ir „println!“ makrokomandos, „Trait“ objektai ir standartinės bibliotekos funkcijos, įdiegtos per operacinės sistemos iškvietimus (failų tvarkymas, įvesties/išvesties operacijos ir tinklo operacijos).

Yra Trys CUDA branduolio saugumo lygiai „Rust“ kalboje: tipų sistemos apsauga (saugi), nesaugių blokų naudojimas ir prieiga prie žemo lygio aparatinės įrangos instrukcijų. CUDA oksido pagrindu sukurtos matricų daugybos įgyvendinimo (GEMM SoL) našumas B200 GPU pasiekia 868 trilijonus operacijų per sekundę, tai sudaro 58 % optimizuotos bibliotekos našumo. cuBLAS.

Šaltinis: linux.org.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster