Noua implementare OpenCL (rusticl), scrisă în Rust, fiind dezvoltată pentru proiectul Mesa, a trecut cu succes suita de teste CTS (Kronos Conformance Test Suite) folosită de consorțiul Khronos pentru a evalua compatibilitatea cu specificațiile OpenCL 3.0. Proiectul este dezvoltat de Karol Herbst de la Red Hat, care este implicat în dezvoltarea Mesa, driverul Nouveau și stiva deschisă OpenCL. Se observă că Carol a contactat Khronos cu privire la certificarea oficială a suportului OpenCL 3.0 în rusticl.
Testele au fost finalizate pe un sistem cu un GPU Intel de generația a 12-a (Alder Lake). Lucrarea a fost efectuată folosind driverul Mesa Iris, dar proiectul ar trebui să funcționeze și cu alte drivere Mesa care utilizează reprezentarea intermediară (IR) fără tip a shaderelor NIR. Solicitarea de fuzionare a Rusticle cu Mesa este încă în curs de revizuire și nu a fost luată nicio decizie cu privire la includerea codului Rust în Mesa. Înainte ca Rusticl să fie acceptat în compoziția principală Mesa, puteți utiliza o ramură separată pentru construirea, la compilare, care ar trebui să specificați parametrii de construcție „-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= Adevărat".
Rusticle acționează ca un analog cu interfața OpenCL Clover de la Mesa și este, de asemenea, dezvoltat folosind interfața Gallium furnizată în Mesa. Miza Clover a fost abandonată de mult timp și rusticl este poziționat ca viitor înlocuitor al său. Pe lângă compatibilitatea OpenCL 3.0, proiectul Rusticle diferă de Clover prin faptul că acceptă extensiile OpenCL pentru procesarea imaginilor, dar nu acceptă încă formatul FP16.
Для генерации биндингов для Mesa и OpenCL, позволяющих вызывать Rust-функции из кода на Си и наоборот, в Rusticl задействован rust-bindgen. Возможность использования языка Rust в проекте Mesa обсуждается с 2020 года. Из плюсов поддержки Rust упоминается повышение безопасности и качества драйверов за счёт избавления от типовых проблем при работе с памятью, а также возможность включения в состав Mesa сторонних наработок, таких как Kazan (реализация Vulkan на Rust). Из недостатков отмечается усложнение системы сборки, нежелание привязываться к пакетной системе cargo, расширение требований к сборочному окружению и необходимость включения компилятора Rust в сборочные зависимости, обязательные для построения ключевых компонентов рабочего стола в Linux.
Sursa: opennet.ru
