我通过从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/