Mesa 的 OpenCL Rust 實現現在支持 OpenCL 3.0

為 Mesa 專案開發的 Rust 編寫的新 OpenCL 實作 (rusticl) 已成功通過 Khronos 聯盟用於評估與 OpenCL 3.0 規範相容性的 CTS(Kronos 一致性測試套件)測試套件。該專案由紅帽公司的 Karol Herbst 開發,他參與了 Mesa、Nouveau 驅動程式和 OpenCL 開放堆疊的開發。值得注意的是,Carol 就 rustcl 對 OpenCL 3.0 支援的官方認證事宜聯繫了 Khronos。

測試在配備第 12 代 Intel GPU (Alder Lake) 的系統上完成。這項工作是使用 Mesa Iris 驅動程式進行的,但該專案也應該與使用 NIR 著色器的無類型中間表示 (IR) 的其他 Mesa 驅動程式配合使用。將 Rusticle 與 Mesa 合併的請求仍在審查中,尚未決定是否將 Rust 程式碼包含在 Mesa 中。在 Rusticl 被主要 Mesa 組合接受之前,您可以使用單獨的分支進行構建,在編譯時您應該指定構建參數“-Dgallium-rustcl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=真的」。

Rusticle 類似 Mesa 的 OpenCL 前端 Clover,也是使用 Mesa 提供的 Gallium 介面開發的。 Clover 股份已被廢棄很長時間,rusticl 被定位為未來的替代者。除了實作 OpenCL 3.0 相容性之外,Rusicle 專案與 Clover 的不同之處在於支援 OpenCL 擴充功能進行影像處理,但尚未支援 FP16 格式。

為了產生 Mesa 和 OpenCL 的綁定,讓您可以從 C 程式碼呼叫 Rust 函數,反之亦然,Rusticle 中使用了 rust-bindgen。自 2020 年以來,一直在討論在 Mesa 專案中使用 Rust 語言的可能性。在 Rust 支援的優勢中,提到了驅動程式安全性和品質的提高,這是由於消除了使用記憶體時的典型問題,以及在 Mesa 中包含第三方開發的能力,例如 Kazan(Vulkan 的實現)在鐵鏽中)。缺點包括建置系統的複雜性增加、不願意與貨物包系統綁定、對建置環境的要求擴大以及需要將 Rust 編譯器包含在 Linux 上建置關鍵桌面元件所需的建置依賴項中。

來源: opennet.ru

添加評論