Implementace OpenCL Rust společnosti Mesa nyní podporuje OpenCL 3.0

Nová implementace OpenCL (rusticl), napsaná v Rustu, vyvíjená pro projekt Mesa, úspěšně prošla testovací sadou CTS (Kronos Conformance Test Suite), kterou používá konsorcium Khronos k posouzení kompatibility se specifikacemi OpenCL 3.0. Projekt vyvíjí Karol Herbst z Red Hatu, který se podílí na vývoji Mesa, ovladače Nouveau a OpenCL open stacku. Je třeba poznamenat, že Carol kontaktovala Khronos ohledně oficiální certifikace podpory OpenCL 3.0 v rustikálním jazyce.

Testy byly dokončeny na systému s 12. generací Intel GPU (Alder Lake). Práce byla provedena pomocí ovladače Mesa Iris, ale projekt by měl fungovat i s dalšími ovladači Mesa, které používají beztypovou střední reprezentaci (IR) NIR shaderů. Žádost o sloučení Rusticle s Mesa je stále předmětem přezkumu a nebylo učiněno žádné rozhodnutí o tom, zda zahrnout Rust kód do Mesa. Než bude Rusticl přijat do hlavní kompozice Mesa, můžete použít samostatnou větev pro sestavení, při kompilaci byste měli zadat parametry sestavení “-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= skutečný".

Rusticle funguje jako analog Mesa's OpenCL frontend Clover a je také vyvinut pomocí rozhraní Gallium poskytovaného v Mesa. Kůl Clover byl dlouhou dobu opuštěn a jako jeho budoucí náhrada je umístěn rustikální. Kromě dosažení kompatibility s OpenCL 3.0 se projekt Rusticle od Clover liší podporou rozšíření OpenCL pro zpracování obrazu, ale zatím nepodporuje formát FP16.

Pro generování vazeb pro Mesa a OpenCL, které umožňují volat funkce Rust z kódu C a naopak, se v Rusticle používá rust-bindgen. Od roku 2020 se diskutuje o možnosti použití jazyka Rust v projektu Mesa. Mezi výhody podpory Rust je zmíněna zvýšená bezpečnost a kvalita ovladačů kvůli zbavení se typických problémů při práci s pamětí a také možnost zahrnout do Mesa vývoj třetích stran, jako je Kazan (implementace Vulkan v Rustu). Mezi nevýhody patří zvýšená složitost systému sestavení, neochota vázat se na systém nákladních balíků, rozšířené požadavky na prostředí sestavení a nutnost zahrnout kompilátor Rust do závislostí sestavení, které jsou nutné k sestavení klíčových komponent desktopu na Linuxu.

Zdroj: opennet.ru

Přidat komentář