Mesas Rust-implementering av OpenCL stöder nu OpenCL 3.0

En ny implementering av OpenCL (rusticl) utvecklad för Mesa-projektet, skriven i Rust, har framgångsrikt klarat testsviten CTS (Kronos Conformance Test Suite) som används av Khronos-konsortiet för att bedöma kompatibilitet med OpenCL 3.0-specifikationerna. Projektet utvecklas av Karol Herbst från Red Hat, som är involverad i utvecklingen av Mesa, Nouveau-drivrutinen och OpenCL open stack. Det noteras att Carol kontaktade Khronos för officiell certifiering av stöd för OpenCL 3.0 i rustikl.

Tester utförda på ett system med 12 generationens Intel GPU:er (Alder Lake). Arbetet gjordes med hjälp av Iris Mesa-drivrutinen, men projektet bör fungera med andra Mesa-drivrutiner som använder den otypade mellanrepresentationen (IR) av NIR-skuggare. Begäran om att slå samman Rusticl med Mesa är fortfarande under behandling och inget beslut har ännu fattats att inkludera Rust-språkkoden i Mesa. Innan Rusticl accepteras i huvudkompositionen av Mesa, kan en separat gren användas för montering, vid kompilering, byggparametrarna "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=true " bör anges.

Rusticl fungerar som en motsvarighet till Mesas OpenCL Clover-gränssnitt och är även utvecklad med hjälp av Mesas Gallium-gränssnitt. Clover-insatsen har länge varit i ett övergivet tillstånd och rustikt är positionerat som dess framtida ersättare. Förutom att uppnå kompatibilitet med OpenCL 3.0 skiljer sig Rusticl-projektet från Clover genom att stödja OpenCL-tillägg för bildbehandling, men stöder ännu inte FP16-formatet.

Rusticl använder rust-bindgen för att generera bindningar för Mesa och OpenCL som gör att Rust-funktioner kan anropas från C-kod och vice versa. Möjligheten att använda språket Rust i Mesa-projektet har diskuterats sedan 2020. Bland fördelarna med Rust-stöd nämner de att förbättra säkerheten och kvaliteten på drivrutiner genom att bli av med typiska problem när man arbetar med minne, samt möjligheten att inkludera tredjepartsutvecklingar i Mesa, såsom Kazan (en implementering av Vulkan på Rost). Bland bristerna finns en komplikation av byggsystemet, en ovilja att bindas till lastpaketsystemet, ökade krav på byggmiljön och behovet av att inkludera Rust-kompilatorn i de byggberoenden som krävs för att bygga viktiga skrivbordskomponenter i Linux.

Källa: opennet.ru

Lägg en kommentar