我通过从multiverse获取python-pyopencl并安装amd应用程序sdk在笔记本电脑上设置了pyopencl。为了获得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”,显然内核不是在GPU上运行,而是在CPU上运行。我该如何改变呢?

似乎pyopencl找不到GPU。

for dev in ctx.devices:
    print dev.vendor


这仅返回“ GenuineIntel”

使用以下内容创建上下文:

import pyopencl as cl
ctx=cl.create_some_context()


更新:

这似乎与以下内容重复:ERROR: pyopencl: creating context for specific device

最佳答案

这里有两个问题。

首先,您应该指定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启动离散GPU来为其程序激活:

optirun python yourscript.py

关于python - 为什么不在我的GPU上运行OpenCL(Ubuntu),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24970265/

10-13 08:30