为什么我的GPU上无法运行OpenCL(Ubuntu)

2 投票
1 回答
2267 浏览
提问于 2025-04-18 14:51

我在我的笔记本电脑上安装了pyopencl,方法是从multiverse获取python-pyopencl,并安装了amd的应用程序开发工具包。为了获得Nvidia的ICD,我重新安装了最新的Nvidia驱动程序。

我的系统是Thinkpad t540p,配备i7 4700hq处理器,Nvidia gt 730m显卡,运行的是64位的Ubuntu 14.04。

为了测试opencl的安装,我运行了这个pyopencl的示例:http://wiki.tiker.net/PyOpenCL/Examples/MatrixMultiply

不幸的是,性能非常差:只有2 GFlop/s。显然,这台笔记本电脑的性能应该更好。所以我打印了供应商信息,结果是“GenuineIntel”,这表明程序是在CPU上运行,而不是在GPU上。我该怎么改变这个呢?

看起来pyopencl没有找到GPU。

for dev in ctx.devices:
    print dev.vendor

这个只返回了“GenuineIntel”。

上下文是这样创建的:

import pyopencl as cl
ctx=cl.create_some_context()

更新:

这似乎是一个重复的问题:错误:pyopencl:为特定设备创建上下文时出错

1 个回答

3

这里有两个问题。

首先,你需要指定使用GPU作为执行内核的设备。把:

ctx = cl.create_some_context()

替换成:

platform = cl.get_platforms()
gpus = platform[0].get_devices(device_type=cl.device_type.GPU)
ctx = cl.Context(devices=gpus)

其次,你似乎在使用Optimus可切换显卡,所以NVIDIA显卡实际上是处于待机状态,所有的图形任务都是由CPU来处理,以节省电力。你需要通过使用Bumblebee来激活独立显卡,以便你的程序能够正常运行:

optirun python yourscript.py

撰写回答