我通过从多元宇宙中获取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
答案 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