6

在 Ubuntu 中对 Python 程序集进行测试时出现错误:

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

怎么可能修复它?

4

5 回答 5

3

似乎您已经安装了 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 驱动程序。

于 2018-10-23T10:32:51.450 回答
2

这是一个错误。尝试这个:

sudo apt-get install nvidia-settings
sudo nvidia-smi

或以 root 身份运行它(不带 sudo)。

之后,您应该能够运行它。

添加

nvidia-smi

到 /etc/rc.local (当然是在退出之前),所以你的 GPU 将在每次启动后可用。

于 2013-07-18T14:59:04.917 回答
0

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

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

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

于 2018-01-25T07:43:10.220 回答
0

尝试以 root 身份运行您的 python 脚本。如果cl.get_platforms()在 root 下没有抛出任何错误,那么您的用户没有足够的权限来执行该操作。为了解决这个问题,安装nvidia-modprobe包:

sudo apt-get install nvidia-modprobe

资源

于 2016-01-10T11:02:30.833 回答
-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>])

Where 对应于您要为其创建上下文的设备。例如:

context = cl.Context([my_devices[0])

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

pyopencl:为特定设备创建上下文

于 2012-10-22T07:39:44.333 回答