呼叫时找不到设备pyopencl.内容

2024-09-29 19:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为以下Python代码而挣扎:

import pyopencl as cl
ctx = cl.Context(dev_type=cl.device_type.GPU)

例外情况如下:

^{pr2}$

我的操作系统是LinuxMintDebianEdition2,在i7-5600U的笔记本电脑上运行,它也有一个显卡,但我不使用它。我使用的是python3.4.2。在

我已经安装了Debian包amd-opencl-icd(我第一次尝试beignet,但随后命令clinfo失败)。在

我已经用pip和{}安装了pyopencl,使用了tutorial。注意,我没有执行第四步(创建到intel64.icd的符号链接),因为我没有这个文件。教程最后的测试成功了。在

你对发生的事有什么线索吗?我惊讶的是,OpenCL(教程中)的C++测试和PyopCunl的安装都成功了,但是这个简单的PyopCunl命令失败了。在


编辑 在安装了Intel driver之后,我现在遇到了一个不同的问题。在

命令clinfo给出以下内容:

terminate called after throwing an instance of 'unsigned long'

上面的Python代码给出了:

LogicError: clcreatecontextfromtype failed: INVALID_PLATFORM

Tags: 代码devimport命令pyopenclcldeviceas
1条回答
网友
1楼 · 发布于 2024-09-29 19:23:03

您已经安装了intel openclsdk,它为您提供了编译器和CPU运行时。您正在尝试创建一个由GPU设备组成的上下文,这意味着您需要intel HD graphics的运行时。从下面的链接获取64位驱动程序。在

https://software.intel.com/en-us/articles/opencl-drivers#latest_linux_driver

CPU运行时也可以从该链接获得。对于openclhd图形驱动程序(将.rpm转换为.deb),您需要遵循与之前相同的过程。CPU驱动程序有一个可以执行的脚本。在

安装运行时后出现的“无效平台”错误似乎是因为它希望在从设备类型创建时将平台作为属性传递。它期望属性是键-元组对的列表。这在下面第一个可用平台的代码片段中显示。关键字是context_属性中的一个值,该值是平台对象本身。在

import pyopencl as cl

platforms = cl.get_platforms()

ctx = cl.Context(dev_type=cl.device_type.GPU, properties=[(cl.context_properties.PLATFORM, platforms[0])])
print(ctx.devices)

在我的平台上

^{pr2}$

因为我的第一个平台是英特尔。在

相关问题 更多 >

    热门问题