我一直在尝试让 PyOpenCL 和 PyCUDA 在 Linux Mint 机器上运行。我已经安装了一些东西,但演示脚本失败并出现错误:
pyopencl.cffi_cl.LogicError: clgetplatformids failed: PLATFORM_NOT_FOUND_KHR
配置
$ uname -a && cat /etc/lsb-release && lspci | grep NV
Linux 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
DISTRIB_DESCRIPTION="Linux Mint 17.3 Rosa"
01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)
相关安装包:
libcuda1-352-updates
libcudart5.5:amd64
nvidia-352-updates
nvidia-352-updates-dev
nvidia-cuda-dev
nvidia-cuda-toolkit
nvidia-opencl-icd-352-updates
nvidia-profiler
nvidia-settings
ocl-icd-libopencl1:amd64
ocl-icd-opencl-dev:amd64
opencl-headers
python-pycuda
python-pyopencl
python3-pycuda
python3-pyopencl
研究
因为我无法在这里发布所有适当的链接,请参阅相关的堆栈溢出帖子,获取反映我之前解决此问题的尝试的链接。
一篇文章描述了一种场景,其中包管理器安装的 opencl/cuda 实现未正确设置某些符号链接。我的系统上似乎不存在该问题。
图形驱动程序(nvidia-340)和 nvidia-opencl 软件包(352)之间存在版本号不匹配。我更新了显卡驱动程序,nvidia-352-updates-dev
但问题仍然存在。
Arch Linux 中有一个错误,似乎与未创建必要的设备文件有关。但是,我已经验证/dev/nvidia0
和/dev/nvidiactl
存在并且具有权限666
,因此它们应该可以访问。
另一篇 Stackoverflow 帖子建议以 root 身份运行演示。我已经尝试过,并且行为没有改变。
cuda/opencl 的旧安装说明说直接从 NVidia 网站下载驱动程序。请在帖子末尾查看有关结果的更新(这是灾难性的)
不同 Linux 系统上的 ATI 卡也报告了相同的错误,并通过将正确的文件放入/usr/lib/OpenCL/vendors
.该路径未在我的系统上使用,但是,我确实/etc/OpenCL/vendors/nvidia.icd
包含该行libnvidia-opencl.so.1
,这表明我的问题有所不同。
此错误已在 OSX 上观察到,但原因不相关。 OSX 上的 PyCUDA 的类似错误消息似乎也无关。
在远程访问下可能会发生此错误,因为如果未加载 X,则设备文件不会初始化。不过,我正在桌面环境中对此进行测试。此外,为了确定起见,我已经运行了该线程中建议的手动命令,并且它们是多余的,因为相关/dev
条目已经存在。
有些人建议运行这些示例几次,或者作为 sudo 运行它们,以开始工作。这似乎没有帮助。
一篇文章描述了如何cuInit failed: no device
因组中没有用户而导致类似的 CUDA 错误video
。为了检查,我跑了usermod -a -G video $USER
,但它没有解决我的问题。
过去,例行更新已经破坏了 CUDA 支持。我没有花时间探索软件包版本号的每种排列,降级某些软件包可能会改变这种情况。然而,如果没有对问题根源的进一步直觉,我不会投入时间这样做,因为我不知道它是否会起作用。
此错误最常见的 Google 搜索结果是 PyOpenCL 列表上的一个简短且未解决的电子邮件线程,在搜索结果的第一页上从不同站点出现了四次。建议检查/dev/nvidia0
和 的权限位。/dev/nvidiactl
在我的机器上,user/group/other
所有设备都具有对这些设备的读写访问权限,因此我认为这不是问题的根源。
我还尝试从最新源构建和安装 PyOpenCL,而不是使用存储库中的版本。这在早期阶段失败了,这表明它没有正确构建。
概括
问题似乎是 PyCUDA/PyOpenCL 无法找到显卡。有几个已知问题可能会导致此问题,但这些问题似乎都不适用。我错过了一些东西,而且我不知道还能做什么。
进一步更新
我尝试从直接从 NVidia 下载的 deb 重新安装cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
,但它似乎没有安装——我什至找不到命令 deviceQuery。我尝试从运行文件重新安装cuda_7.5.18_linux.run
。安装程序指出我的机器的配置不受支持。不管怎样,我还是做了最后的努力。事实上,现在 X 配置完全损坏,机器无法启动到登录屏幕。我无法修复这个问题。