Python LogicError:clGetPlatformIDs失败:未找到平台khr

时间:2012-08-16 15:03:35

标签: ubuntu pyopencl

在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

如何修复它?

5 个答案:

答案 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}}

Source

答案 3 :(得分:0)

这可能是因为OpenCL驱动程序没有正确安装。

Intel CPU需要针对Intel Core和Intel Xeon处理器(16.1.1或更高版本)的OpenCL Runtime。从intel网站下载并安装最新的OpenCL™Runtime。忽略兼容性警告。

来源:https://youtu.be/AieYqNQ6ADM

答案 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])

也参考我的这篇文章,它会有所帮助。我也有这个问题:

pyopencl: creating context for specific device