AMD OpenCL在Linux上运行所需的最小nesesary文件子集是什么?

时间:2018-03-13 19:49:43

标签: linux opencl buildroot amd-gpu

我已经使用buildroot构建了Linux内核。我已经将opensource amdgpu驱动程序和所需的固件合并到其中。驱动程序很好,检测GPU,模式设置很好,调整“小文本”的分辨率,并在启动后显示命令行。

现在我需要运行OpenCL程序。我从amdgpu-pro驱动程序(rhel7变体)手动解压缩文件并组装骨架fs然后复制我认为需要的文件。

OpenCL无法识别任何设备,clinfo实用程序会在cl::error来电时抛出cl::getPlatformIDs()

OpenCL在Linux上完全运行所需的文件是什么?

PS:相关unaswerred question,因此该主题被认为是实际的。

1 个答案:

答案 0 :(得分:1)

我进一步采取了一些措施,以便全面启动并运行:

  • 库有几个重要的符号链接,如* .1,* .1.0.0等。它们也必须被复制。这得到了opencl工作,但矿工仍然错误的可用内存和计算单元的数量显示不正确,我有段错误。

  • gpu模型需要
  • /opt/amdgpu/share/libdrm/amdgpu.ids'正确检测和显示名称及其视频内存大小。

  • /etc/amd/amdapfxx.blb是重要文件,因某些绝密,未知原因而服务。

  • 当我升级amdgpu-pro驱动程序时,重要的是不要混淆不同版本的库文件。很容易犯这样的错误,因为buildroot缓存覆盖到输出/目标结构,如果你从覆盖中删除某些东西,你必须从目标中删除它。而这样的图书馆混乱可能导致段错误

  • 为了进一步缩小子集libEGL和libGLESv2,可以删除libgbm。它们不是OpenCL操作的必需品,这可以节省1-1.5兆额外的空间。

  • LLVM似乎与OpenCL完全无关,节省了大量空间。我不确定,也许GL或Vulkan要求它。

这里是完整的nesesary文件和符号链接列表,包含确切的位置,以使OpenCL正常工作:

/usr/lib/libamdocl64.so
/usr/lib/libamdocl12cl64.so
/usr/lib/libdrm.so -> libdrm.so.2.4.0
/usr/lib/libdrm.so.2 -> libdrm.so.2.4.0
/usr/lib/libdrm.so.2.4.0
/usr/lib/libdrm_amdgpu.so -> libdrm_amdgpu.so.1.0.0
/usr/lib/libdrm_amdgpu.so.1 -> libdrm_amdgpu.so.1.0.0
/usr/lib/libdrm_amdgpu.so.1.0.0
/usr/lib/libdrm_radeon.so -> libdrm_radeon.so.1.0.1
/usr/lib/libdrm_radeon.so.1 -> libdrm_radeon.so.1.0.1
/usr/lib/libdrm_radeon.so.1.0.1
/usr/lib/libkms.so -> libkms.so.1.0.0
/usr/lib/libkms.so.1 -> libkms.so.1.0.0
/usr/lib/libkms.so.1.0.0
/usr/lib/libOpenCL.so -> libOpenCL.so.1
/usr/lib/libOpenCL.so.1
/usr/bin/clinfo
/etc/amd/amdapfxx.blb
/etc/OpenCL/vendors/amdocl64.icd
/opt/amdgpu/share/libdrm/amdgpu.ids