在Ubuntu中为Python程序集进行nosetests时会发生错误:
devices = [ d for d in cl.get_platforms()[0].get_devices() if
LogicError: clGetPlatformIDs failed: platform not found khr
File "/home/fateeva/prog/deflectometry/SGMFMeasurement/_PhaseShifts.py", line 30, in <module>
devices = [ d for d in cl.get_platforms()[0].get_devices() if
LogicError: clGetPlatformIDs failed: platform not found khr
如何修复它?
答案 0 :(得分:2)
这是一个错误。试试这个:
sudo apt-get install nvidia-settings
sudo nvidia-smi
或以root身份运行它(不带sudo)。
之后你应该能够运行它。
添加
nvidia-smi
到/etc/rc.local(当然是在退出之前),所以每次启动后你都可以使用GPU。
答案 1 :(得分:2)
似乎您已安装pyopencl,但没有实际的设备驱动程序。请查阅https://documen.tician.de/pyopencl/misc.html上的文档。
以下是这种行为的描述:
请注意,没有提供通过OpenCL访问硬件的OpenCL设备驱动程序(对于“可安装的客户端驱动程序”,所谓的“ ICD”),PyOpenCL不好玩(即无法运行代码)。如果收到诸如pyopencl.cffi_cl.LogicError之类的错误消息:clGetPlatformIDs failed:,则表明您没有安装OpenCL驱动程序。
基本上,下一条命令应该足以使其在CPU上运行:
[pip]conda install pocl
为正确安装AMD和Nvidia设备,请寻找供应商提供的OpenCL驱动程序。
答案 2 :(得分:0)
尝试以root身份运行python脚本。如果nvidia-modprobe
未在root下引发任何错误,则您的用户没有足够的权限来执行操作。要解决此问题,请安装sudo apt-get install nvidia-modprobe
包:
{{1}}
答案 3 :(得分:0)
这可能是因为OpenCL驱动程序没有正确安装。
Intel CPU需要针对Intel Core和Intel Xeon处理器(16.1.1或更高版本)的OpenCL Runtime。从intel网站下载并安装最新的OpenCL™Runtime。忽略兼容性警告。
答案 4 :(得分:-1)
试试这个。它应该工作:
devices = [ d for d in cl.get_platforms()[0].get_devices(cl.device_type.GPU)]
如果要列出平台上的所有兼容设备,请使用
platform = cl.get_platform()
my_devices = platform[0].get_devices(device_type = cl.devices_type.ALL)
print my_devices
要在任何兼容设备上创建上下文,请使用以下命令:
context = cl.Context([my_devices[<index>])
对应于要为其创建上下文的设备。例如:
context = cl.Context([my_devices[0])
也参考我的这篇文章,它会有所帮助。我也有这个问题: