W zaimplementowanej w Rust wersji OpenCL dla Mesa wprowadzono wsparcie dla OpenCL 3.0

Rozwijana dla projektu Mesa nowa implementacja OpenCL (rusticl), napisana w języku Rust, pomyślnie przeszła zestaw testów CTS (Kronos Conformance Test Suite), używanych przez konsorcjum Khronos do oceny zgodności ze specyfikacjami OpenCL 3.0. Projektem kieruje Karol Herbst z firmy Red Hat, który uczestniczy w rozwoju Mesa, sterownika Nouveau i otwartego stosu OpenCL. Zgłoszono, że Karol skontaktował się z Khronos w sprawie oficjalnej certyfikacji wsparcia OpenCL 3.0 w rusticl.

Testy przeprowadzono na systemie z 12. generacją GPU Intel (Alder Lake). Prace odbyły się z użyciem sterownika Mesa Iris, ale projekt powinien działać również z innymi sterownikami Mesa, które korzystają z typowego pośredniego reprezentowania (IR) shadery NIR. Wniosek o połączenie Rusticl z Mesa jest wciąż rozpatrywany, a decyzja o włączeniu kodu napisanego w Rust do Mesa nie została jeszcze podjęta. Do momentu przyjęcia Rusticl do głównego gałęzi Mesa, użytkownicy mogą korzystać z oddzielnej gałęzi, przy kompilacji której należy podać następujące parametry: „-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=true”.

Rusticl pełni rolę odpowiednika obecnego w Mesa front-endu OpenCL, Clover, i został opracowany z wykorzystaniem interfejsu Gallium, dostarczanego przez Mesa. Clover już od dawna jest w stanie zaniedbania, a rusticl jest prezentowany jako jego przyszły zamiennik. Oprócz osiągnięcia zgodności z OpenCL 3.0, projekt Rusticl różni się od Clover wsparciem dla rozszerzeń OpenCL do przetwarzania obrazów, chociaż obecnie nie obsługuje formatu FP16.

Aby generować wiązania dla Mesa i OpenCL, umożliwiające wywoływanie funkcji Rust z kodu C i odwrotnie, w Rusticl wykorzystywany jest rust-bindgen. Możliwość użycia języka Rust w projekcie Mesa omawiana jest od 2020 roku. Do zalet wsparcia Rust zalicza się zwiększenie bezpieczeństwa i jakości sterowników poprzez wyeliminowanie typowych problemów z pamięcią, a także możliwość włączenia do Mesa zewnętrznych opracowań, takich jak Kazan (implementacja Vulkan w Rust). Do wad należą złożoność systemu budowania, niechęć do uzależnienia się od systemu pakietowego cargo, zwiększone wymagania dotyczące środowiska budowy oraz konieczność dołączenia kompilatora Rust do zależności budowlanych, które są obowiązkowe dla budowy kluczowych komponentów pulpitu w Linuksie.

Źródło: opennet.ru

Kup solidny hosting dla stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting dla stron z ochroną przed DDoS, serwery VPS VDS | ProHoster