Rust implementacija OpenCL-a za Mesa pruža podršku za OpenCL 3.0

Nova implementacija OpenCL-a (rusticl), napisana na Rustu, koja se razvija za projekat Mesa, uspješno je prošla CTS (Kronos Conformance Test Suite) testni paket koji koristi Khronos konzorcij za procjenu kompatibilnosti sa OpenCL 3.0 specifikacijama. Projekat razvija Karol Herbst iz Red Hata, koji je uključen u razvoj Mesa, Nouveau drajvera i OpenCL otvorenog steka. Napominje se da je Carol kontaktirala Khronos u vezi službene certifikacije OpenCL 3.0 podrške u rusticl-u.

Testovi su završeni na sistemu sa Intel GPU-om 12. generacije (Alder Lake). Rad je obavljen pomoću drajvera Mesa Iris, ali bi projekat trebao raditi i sa drugim drajverima Mesa koji koriste međureprezentaciju bez tipa (IR) NIR shadera. Zahtjev za spajanje Rusticlea sa Mesom je još uvijek u razmatranju i nije donesena odluka o tome da li da se Rust kod uključi u Mesa. Prije nego što Rusticl bude prihvaćen u glavnu Mesa kompoziciju, možete koristiti zasebnu granu za građenje, pri kompajliranju koje trebate specificirati build parametre “-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= istinito".

Rusticle djeluje kao analog Mesinog OpenCL frontenda Clover i također je razvijen korištenjem Gallium interfejsa koji se nalazi u Mesi. Kolac Clover je dugo bio napušten, a rusticl se pozicionira kao njegova buduća zamjena. Pored postizanja OpenCL 3.0 kompatibilnosti, projekat Rusticle se razlikuje od Clover-a po podršci OpenCL ekstenzija za obradu slika, ali još ne podržava FP16 format.

Za generiranje povezivanja za Mesa i OpenCL, omogućavajući vam pozivanje Rust funkcija iz C koda i obrnuto, rust-bindgen se koristi u Rusticleu. Mogućnost korištenja Rust jezika u projektu Mesa raspravlja se od 2020. godine. Među prednostima Rust podrške spominje se povećana sigurnost i kvalitet drajvera zbog otklanjanja tipičnih problema pri radu sa memorijom, kao i mogućnost uključivanja razvoja trećih strana u Mesu, kao što je Kazan (implementacija Vulkana u Rustu). Nedostaci uključuju povećanu složenost sistema građenja, nevoljkost da se veže za sistem paketa tereta, proširene zahtjeve za okruženje izgradnje i potrebu uključivanja Rust kompajlera u ovisnosti o izgradnji potrebnim za izgradnju ključnih desktop komponenti na Linuxu.

izvor: opennet.ru

Dodajte komentar