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

添加评论