我一直试图在Linux Mint计算机上运行PyOpenCL和PyCUDA。我安装了一些东西但是演示脚本因错误而失败:
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
This post描述了一个安装opencl / cuda实现的软件包管理器没有正确设置一些simlink的方案。这个问题似乎没有出现在我的系统上。
图形驱动程序(nvidia-340)和nvidia-opencl程序包(352)之间存在版本号不匹配。我将图形驱动程序更新为nvidia-352-updates-dev
,但问题仍然存在。
有bug in Arch linux似乎围绕未创建的必要设备文件。不过,我已经确认/dev/nvidia0
和/dev/nvidiactl
已存在且拥有权限666,因此应该可以访问它们。
Another Stackoverflow post建议以root身份运行演示。我试过这个并且行为没有改变。
Older installation instructions cuda / opencl说要直接从NVidia网站下载驱动程序。我不确定这仍然适用,所以我暂时不要这样做,因为在资源库中似乎有很多相关的软件包。
The same error, but for an ATI card on a different linux system已通过在/usr/lib/OpenCL/vendors
中放入适当的文件来解决。该路径未在我的系统中使用,但是,我的/etc/OpenCL/vendors/nvidia.icd
包含行libnvidia-opencl.so.1
,表明我的问题不同。
This error has been observed on OSX,但出于无关的原因。 Similar error messages for PyCUDA似乎也不相关。
This error can occur under remote access since the device files are not initialized if X is not loaded。但是,我在桌面环境中对此进行了测试。此外,我确实运行了该线程中建议的手动命令,并且它们是多余的,因为相关的/ dev条目已经存在。
有一个注释here关于简单地运行命令几次以解决某种临时故障。这似乎没什么帮助。
This post描述了如何在cuInit failed: no device
组中没有用户导致类似的video
CUDA错误。为了检查,我运行了usermod -a -G video $USER
,但它没有解决我的问题。
In the past, routine updates have broken CUDA support。我没有花时间去探索软件包版本号的每个排列,并且降级某些软件包可能会改变这种情况。然而,如果没有进一步直观的问题来源,我不会花时间去做这件事,因为我不知道它是否会起作用。
此错误的most common google search result,第一页上的appearing four times,是PyOpenCL列表中一个简短且未解析的电子邮件主题。建议检查/ dev / nvidia0和/ dev / nvidiactl的权限位。在我的机器上,用户/组/其他人都拥有对这些设备的读写权限,因此我不认为这是问题的根源。
我还尝试构建和安装PyOpenCL,形成最新的源代码,而不是使用存储库中的版本。这是在早期阶段失败,这表明我没有正确构建。
问题似乎是PyCUDA / PyOpenCL找不到显卡。有几个已知问题可能导致这种情况,但这些问题似乎都不适用于此。我错过了一些东西,而且我不确定还能做什么。