Имплементацията на OpenCL в Rust на Mesa вече поддържа OpenCL 3.0

Новата реализация на OpenCL (rusticl), написана на Rust, разработена за проекта Mesa, премина успешно тестовия пакет CTS (Kronos Conformance Test Suite), използван от консорциума Khronos за оценка на съвместимостта със спецификациите на OpenCL 3.0. Проектът се разработва от Карол Хербст от Red Hat, който участва в разработката на Mesa, драйвера Nouveau и отворения стек OpenCL. Отбелязва се, че Карол се е свързала с Khronos относно официалното сертифициране на поддръжката на OpenCL 3.0 в rusticl.

Тестовете бяха завършени на система с 12-то поколение Intel GPU (Alder Lake). Работата беше извършена с помощта на драйвера Mesa Iris, но проектът трябва да работи и с други драйвери Mesa, които използват безтиповото междинно представяне (IR) на NIR шейдърите. Заявката за сливане на Rusticle с Mesa все още се разглежда и не е взето решение дали да се включи Rust код в Mesa. Преди Rusticl да бъде приет в основната композиция на Mesa, можете да използвате отделен клон за изграждане, при компилирането на който трябва да посочите параметрите за изграждане „-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= вярно".

Rusticle действа като аналог на OpenCL интерфейса Clover на Mesa и също е разработен с помощта на интерфейса Gallium, предоставен в Mesa. Залогът Clover е изоставен от дълго време и rusticl е позициониран като негов бъдещ заместител. В допълнение към постигането на съвместимост с OpenCL 3.0, проектът Rusticle се различава от Clover в поддръжката на OpenCL разширения за обработка на изображения, но все още не поддържа формата FP16.

За генериране на свързвания за Mesa и OpenCL, което ви позволява да извиквате функции на Rust от C код и обратно, в Rusticle се използва rust-bindgen. Възможността за използване на езика Rust в проекта Mesa се обсъжда от 2020 г. Сред предимствата на поддръжката на Rust се споменава повишената сигурност и качество на драйверите поради премахването на типични проблеми при работа с памет, както и възможността за включване на разработки на трети страни в Mesa, като Kazan (имплементация на Vulkan в Руст). Недостатъците включват повишена сложност на системата за изграждане, нежелание да бъде обвързана със системата за товарни пакети, разширени изисквания за средата за изграждане и необходимостта от включване на компилатора Rust в зависимостите за изграждане, необходими за изграждане на ключови компоненти на работния плот на Linux.

Източник: opennet.ru

Добавяне на нов коментар