Rust-implementeringen av OpenCL for Mesa gir støtte for OpenCL 3.0

Den nye OpenCL-implementeringen (rusticl), skrevet i Rust, som utvikles for Mesa-prosjektet, har bestått CTS (Kronos Conformance Test Suite) testsuite som brukes av Khronos-konsortiet for å vurdere kompatibilitet med OpenCL 3.0-spesifikasjonene. Prosjektet utvikles av Karol Herbst fra Red Hat, som er involvert i utviklingen av Mesa, Nouveau-driveren og OpenCL open stack. Det bemerkes at Carol kontaktet Khronos angående den offisielle sertifiseringen av OpenCL 3.0-støtte i rustikk.

Tester ble fullført på et system med en 12. generasjons Intel GPU (Alder Lake). Arbeidet ble utført ved hjelp av Mesa Iris-driveren, men prosjektet skal også jobbe med andre Mesa-drivere som bruker den typeløse mellomrepresentasjonen (IR) av NIR shaders. Forespørselen om å slå sammen Rusticle med Mesa er fortsatt under vurdering, og det er ikke tatt noen beslutning om hvorvidt Rust-kode skal inkluderes i Mesa. Før Rusticl blir akseptert i hoved-Mesa-komposisjonen, kan du bruke en egen gren for bygging, ved kompilering som du bør spesifisere byggeparameterne "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= ekte".

Rusticle fungerer som en analog av Mesas OpenCL frontend Clover og er også utviklet ved hjelp av Gallium-grensesnittet i Mesa. Clover-staken har vært forlatt i lang tid og rustikk er posisjonert som dens fremtidige erstatning. I tillegg til å oppnå OpenCL 3.0-kompatibilitet, skiller Rusticle-prosjektet seg fra Clover ved å støtte OpenCL-utvidelser for bildebehandling, men støtter ennå ikke FP16-formatet.

For å generere bindinger for Mesa og OpenCL, slik at du kan kalle Rust-funksjoner fra C-kode og omvendt, brukes rust-bindgen i Rusticle. Muligheten for å bruke Rust-språket i Mesa-prosjektet har vært diskutert siden 2020. Blant fordelene med Rust-støtte nevnes den økte sikkerheten og kvaliteten på drivere på grunn av å bli kvitt typiske problemer når du arbeider med minne, samt muligheten til å inkludere tredjepartsutviklinger i Mesa, for eksempel Kazan (en implementering av Vulkan) i Rust). Ulempene inkluderer økt kompleksitet av byggesystemet, motvilje mot å være knyttet til lastepakkesystemet, utvidede krav til byggemiljøet, og behovet for å inkludere Rust-kompilatoren i byggeavhengighetene som kreves for å bygge sentrale skrivebordskomponenter på Linux.

Kilde: opennet.ru

Legg til en kommentar