我一直在尝试让PyOpenCL和PyCUDA在linuxmint机器上运行。我已经安装了一些东西,但演示脚本失败,错误如下:pyopencl.cffi_cl.LogicError: clgetplatformids failed: PLATFORM_NOT_FOUND_KHR
配置
$ uname -a && cat /etc/lsb-release && lspci | grep NV
^{pr2}$
相关安装包: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实现的包管理器没有正确设置一些simlinks。我的系统似乎没有这个问题。在<> P>图形驱动程序(NVIDIA340)和英伟达OpenCL包(352)之间存在版本号不匹配。我将图形驱动程序更新为nvidia-352-updates-dev,但问题仍然存在。在
有一个bug in Arch linux似乎围绕着没有创建的必要设备文件。但是,我已经验证了/dev/nvidia0和{}存在并且拥有666权限,因此它们应该是可访问的。在
Another Stackoverflow post建议以根用户身份运行演示。我试过了,但行为没有改变。在
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行,这表明我的问题不同。在
这里有一个注释here是关于简单地运行一个命令几次来解决某个排序临时问题的。这似乎没什么用。在
This post描述了相似的cuInit failed: no deviceCUDA错误是如何由于用户不在video组中而引起的。为了检查,我运行了usermod -a -G video $USER,但它没有解决我的问题。在
In the past, routine updates have broken CUDA support。我并没有花时间去研究软件包版本号的每一种排列方式,而且有可能某些软件包的降级可能会改变这种情况。然而,如果没有对问题根源的进一步直觉,我不会花时间去做这件事,因为我不知道它是否有效。在
这个错误的most common google search result,第一页上的appearingfourtimes,是PyOpenCL列表上的一个短而未解析的电子邮件线程。建议检查/dev/nvidia0和/dev/nvidiactl的权限位。在我的机器上,用户/组/其他人都有对这些设备的读写权限,所以我不认为这是问题的根源。在
我还尝试过从最新的源代码构建和安装PyOpenCL,而不是使用存储库中的版本。这是失败的早期阶段,这表明我的建设是不正确的。在
摘要
问题似乎是PyCUDA/PyOpenCL找不到显卡。有几个已知的问题可能导致这种情况,但它们似乎都不适用于这里。我遗漏了一些东西,我不知道还能做什么。在