为什么不在我的GPU上运行OpenCL(Ubuntu)

时间:2014-07-26 10:55:05

标签: python ubuntu opencl gpgpu pyopencl

我通过从多元宇宙中获取python-pyopencl并安装amd app sdk,在我的笔记本电脑上设置了pyopencl。为了获得Nvidia ICD,我从驱动程序管理器重新安装了最新的Nvidia驱动程序。

我的系统是Thinkpad t540p,i7 4700hq,Nvidia gt 730m,64bit Ubuntu 14.04

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

不幸的是性能非常差:只有2 GFlop / s。笔记本电脑肯定会做得更好。所以我打印了供应商信息。它是真正的英特尔",显然内核不是在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

1 个答案:

答案 0 :(得分:2)

这里有两个问题。

首先,您应该将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