【问题标题】:Why doesn't run OpenCL on my GPU (Ubuntu)为什么不在我的 GPU (Ubuntu) 上运行 OpenCL
【发布时间】:2014-09-18 03:59:19
【问题描述】:

我通过从 multiverse 获取 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。当然,笔记本电脑可以做得更好。所以我打印了供应商信息。它是“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 指定为运行代码的设备?
  • for dev in ctx.devices: print dev.vendor # 只返回“GenuineIntel”
  • 你是如何创建上下文的?请出示该代码。
  • @jprice 请参阅问题正文中链接的示例。

标签: python ubuntu opencl gpgpu pyopencl


【解决方案1】:

这里有两个问题。

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

【讨论】:

  • 谢谢,这行得通。难以置信,你在 10 分钟内解决了问题
  • 有趣的是,我的第一个平台是cpu。我必须选择平台 [1] 否则会失败并显示未找到 gpu 的错误消息
  • (删除了编辑,因为文档不清楚在平台上找不到 GPU 并且我现在无法测试代码的情况下会发生什么)。
  • 如果没有找到设备,调用会产生运行时错误:pyopencl.RuntimeError: clGetDeviceIDs failed: device not found
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 2021-12-23
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多