在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
Run Code Online (Sandbox Code Playgroud)
如何修复它?
小智 5
看来您已经安装了 pyopencl 但没有实际的设备驱动程序。请参阅https://documen.tician.de/pyopencl/misc.html上的文档。
\n\n以下是对这种行为的描述:
\n\n\n\n\n请注意,如果没有 OpenCL 设备驱动程序(所谓的 \xe2\x80\x9cICD\xe2\x80\x9d,用于 \xe2\x80\x9c 可安装客户端驱动程序\xe2\x80\x9d),PyOpenCL 就毫无乐趣(即无法运行代码) ),通过 OpenCL 提供对硬件的访问。如果您收到类似 pyopencl.cffi_cl.LogicError: clGetPlatformIDs failed: 的错误消息,则意味着您没有安装 OpenCL 驱动程序。
\n
基本上,下一个命令应该足以让它在 CPU 上运行:
\n\n[pip]conda install pocl\nRun Code Online (Sandbox Code Playgroud)\n\n为了正确安装 AMD 和 Nvidia 设备,请查找供应商提供的 OpenCL 驱动程序。
\n小智 5
尝试
$ sudo apt install pocl-opencl-icd
Run Code Online (Sandbox Code Playgroud)
我在适用于 Windows 10、Python 3.8.10 的 Ubuntu WSL 上进行了测试。
Yas*_*ash -1
尝试这个。它应该有效:
devices = [ d for d in cl.get_platforms()[0].get_devices(cl.device_type.GPU)]
Run Code Online (Sandbox Code Playgroud)
如果您想列出您平台上的所有兼容设备,只需使用
platform = cl.get_platform()
my_devices = platform[0].get_devices(device_type = cl.devices_type.ALL)
print my_devices
Run Code Online (Sandbox Code Playgroud)
要在任何兼容设备上创建上下文,请使用以下命令:
context = cl.Context([my_devices[<index>])
Run Code Online (Sandbox Code Playgroud)
其中对应于您要为其创建上下文的设备。例如:
context = cl.Context([my_devices[0])
Run Code Online (Sandbox Code Playgroud)
也可以参考我的这篇文章,会有帮助。我也遇到了这个问题:
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |