我正在尝试在 linux 上安装 OpenCL(AMD),但我被困在最后一步(安装 ICD)
似乎 ICD必须安装在 /etc/OpenCL/vendor 中,但我没有对计算机的 root 访问权限。
有什么方法可以在不安装 ICD 的情况下使 OpenCL 工作?(或者可能通过环境变量添加 ICD 文件的搜索路径?)
当 ICD 文件路径被硬编码时,对于像我们这样的人来说似乎真的很不方便。
我正在尝试在 linux 上安装 OpenCL(AMD),但我被困在最后一步(安装 ICD)
似乎 ICD必须安装在 /etc/OpenCL/vendor 中,但我没有对计算机的 root 访问权限。
有什么方法可以在不安装 ICD 的情况下使 OpenCL 工作?(或者可能通过环境变量添加 ICD 文件的搜索路径?)
当 ICD 文件路径被硬编码时,对于像我们这样的人来说似乎真的很不方便。
将 ICD 文件放在 /some/path/icd 中,然后像这样导出路径:
export OPENCL_VENDOR_PATH=/some/path/icd
它至少在以前的版本中可以工作。如果他们改变它,我会感到惊讶。
以下是如何在没有管理员权限的情况下进行 AMD OpenCL SDK 的“用户”或“本地”安装的草图。步骤 9 还提供了一种使用 AMD OpenCL 平台以及在系统范围内安装的选定平台的方法。
/local/install/path
只需修改安装目录和当前 SDK 版本以适应即可。
下载 AMD OpenCL SDK 64 位。
$ tar -xvzf AMD-APP-SDK-v2.8-RC-lnx64.tgz
$ tar -xvzf icd-registration.tgz
$ cd AMD-APP-SDK-v2.8-RC-lnx64
$ mkdir /local/install/path
$ cp -r lib /local/install/path
$ cp -r include /local/install/path
$ cp -r ../etc /local/install/path
可选:为所需的系统安装平台创建符号链接:
$ ln -s /etc/OpenCL/vendors/nvidia.icd /local/install/path/etc/vendors/nvidia.icd
$ export OPENCL_VENDOR_PATH=/local/install/path/etc/vendors
$ export LD_LIBRARY_PATH=/local/install/path/lib/x86_64:$LD_LIBRARY_PATH
$ cc -I/local/install/path/include -L/local/install/path/lib/x86_64 -lOpenCL demo.c
$ ./a.out
只是对此的更新,因为我突然发现自己(再次)遇到了同样的问题。我不得不禁用错误的 Mesa icd,它显然在非 root 运行下崩溃。令人沮丧的是,在列出每个平台时更多的是 API 处理错误的问题,而不是权限或 clinfo 的错误。确保禁用每个平台 icd 以隔离哪个平台有问题。希望这对以后的人有所帮助。