![OpenCL 是否完全不适合 AMD Navi 系列显卡?](https://linux22.com/image/1199649/OpenCL%20%E6%98%AF%E5%90%A6%E5%AE%8C%E5%85%A8%E4%B8%8D%E9%80%82%E5%90%88%20AMD%20Navi%20%E7%B3%BB%E5%88%97%E6%98%BE%E5%8D%A1%EF%BC%9F.png)
我使用的是 Ubuntu 22.04,我花了很长时间才理解这一切,但我认为AMD Navi 系列显卡完全不支持 OpenCL,这排除了许多有用程序的功能可能性,例如 DaVinci Resolve、Blender、hashcat 和加密矿工。我有一张 RX 5500,这是一张 2019 年的卡,我想我只是运气不好?
clinfo
显示此错误(针对 GPU 和我的 iGPU):
fatal error: cannot open file '/usr/lib/clc/gfx1012-amdgcn-mesa-mesa3d.bc': No such file or directory
fatal error: cannot open file '/usr/lib/clc/gfx909-amdgcn-mesa-mesa3d.bc': No such file or directory
看起来我可以安装libclc-amdgcn
来获取该文件。但是这会破坏libclc-15-dev
的要求mesa-opencl-icd
。我尝试了许多不同的升级/降级软件包组合,但就是无法同时拥有两者。
我尝试了 Rusticl(用 Rust 编写的 OpenCL 实现)基萨克山台地,但它似乎非常不稳定。我制作了一个受密码保护的小型 zip 文件,试图用 hashcat 破解它,但它甚至无法做到这一点。只是崩溃了。在基准测试过程的早期也崩溃了。
我发现最近的 gitlab 问题Rusticl 无法与 hashcat 配合使用,他们声称这个问题在新版本的 mesa 中已经修复,所以我自然而然地去了oibaf 的 ppa希望获得更好的功能,但显然 Rusticl 不包含在该 ppa 中。
那么我是不是运气太差了?我以为 AMD 应该能生产出适合 Linux 的优质显卡,但我却无法运行 hashcat。
答案1
很可能这个话题应该以某种方式澄清。;-)
这里我们至少有两个方面或“问题”。
首先,旧的 Mesa OpenCL API“三叶草“不支持任何较新的 AMD Radeon 硬件(我认为是 GCN4 以上的硬件),因为底层库LLVM 库从未更新过。这被要求过好几次,也有一些可用的补丁,但它们从未被合并。我认为这就是上述问题的原因。编辑:截至 2024 年 1 月底,这种情况似乎不再适用。使用 LLVM MR 的 libclc 添加了对较新 Radeon 硬件的支持#78884. 查看此主题这里更多细节。
关于第二个问题,解决方案是使用新的 Mesa OpenCL API”鲁斯蒂尔“。不幸的是,它(截至 2024 年初)尚未准备好,因为它仍在大力开发中,并且构建不稳定。此外,有关 rust 的要求也在发生变化,最近有所增加。因此,rustcl 在 oibaf PPA 中仅适用于即将推出的 Ubuntu 24.04 LTS 变体“Noble”。所有 rustl 对旧 Ubuntu 版本(最低 22.04 LTS)的支持已被删除。
当然,也有关于较新级别的 Radeon 硬件,也可以安装平均ROCAMD 的 OpenCL API。至少对于大多数标准 RDNA GPU 来说,情况确实如此。但是,某些 iGPU 型号和较旧的 GCN5 硬件可能运气不佳。对于这些,只有 Mesa OpenCL API 可以作为替代方案。