Mesas Rust-implementering af OpenCL understøtter nu OpenCL 3.0

Den nye OpenCL-implementering (rusticl), skrevet i Rust, der udvikles til Mesa-projektet, har med succes bestået CTS (Kronos Conformance Test Suite) testsuiten, der bruges af Khronos-konsortiet til at vurdere kompatibilitet med OpenCL 3.0-specifikationerne. Projektet udvikles af Karol Herbst fra Red Hat, som er involveret i udviklingen af ​​Mesa, Nouveau-driveren og OpenCL open stack. Det bemærkes, at Carol kontaktede Khronos angående den officielle certificering af OpenCL 3.0-understøttelse i rustikl.

Testene blev gennemført på et system med en 12. generations Intel GPU (Alder Lake). Arbejdet blev udført ved hjælp af Mesa Iris-driveren, men projektet skulle også arbejde med andre Mesa-drivere, der anvender den typeløse mellemrepræsentation (IR) af NIR shaders. Anmodningen om at fusionere Rusticle med Mesa er stadig under behandling, og der er ikke truffet nogen beslutning om, hvorvidt Rust-kode skal inkluderes i Mesa. Før Rusticl accepteres i hoved-Mesa-sammensætningen, kan du bruge en separat gren til bygning, når du kompilerer, som du skal angive byggeparametrene "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= rigtigt".

Rusticle fungerer som en analog af Mesas OpenCL frontend Clover og er også udviklet ved hjælp af Gallium-grænsefladen, der findes i Mesa. Clover-staken har været forladt i lang tid, og rustik er placeret som dens fremtidige erstatning. Ud over at opnå OpenCL 3.0-kompatibilitet adskiller Rusticle-projektet sig fra Clover ved at understøtte OpenCL-udvidelser til billedbehandling, men det understøtter endnu ikke FP16-formatet.

For at generere bindinger til Mesa og OpenCL, så du kan kalde Rust-funktioner fra C-kode og omvendt, bruges rust-bindgen i Rusticle. Muligheden for at bruge Rust-sproget i Mesa-projektet har været diskuteret siden 2020. Blandt fordelene ved Rust-understøttelse nævnes den øgede sikkerhed og kvalitet af drivere på grund af at slippe af med typiske problemer, når du arbejder med hukommelse, samt muligheden for at inkludere tredjepartsudviklinger i Mesa, såsom Kazan (en implementering af Vulkan) i Rust). Ulemper omfatter øget kompleksitet af byggesystemet, modvilje mod at være bundet til fragtpakkesystemet, udvidede krav til byggemiljøet og behovet for at inkludere Rust-kompileren i de build-afhængigheder, der kræves for at bygge centrale desktop-komponenter på Linux.

Kilde: opennet.ru

Tilføj en kommentar