【问题标题】:Kernel code is not working for NVIDIA GPU but working in CPU mode内核代码不适用于 NVIDIA GPU,但在 CPU 模式下工作
【发布时间】:2011-11-17 12:03:09
【问题描述】:

最近我尝试运行一个程序,该程序已在运行 Windows 7 的 AMD Radeon 5670 GPU 上正确编译和执行。现在,当我想在 NVIDIA GPU Tesla 2500 上运行时,它无法正常工作。但是当我将设备更改为 CPU 时,相同的内核代码给出了输出(uisng clGetDeviceIds() 参数 CL_DEVICE_TYPE_GPU)。这里我使用的是 Ubuntu 10.10。

我尝试运行 NVIDIA SDK 附带的一些示例程序,这些程序运行正常,并显示了现有 GPU 和配置的详细信息。

如果有人遇到过这种问题,请回答问题出在哪里。

【问题讨论】:

  • 您的问题过于笼统。您能识别出的给出不同结果的最小 sn-p 代码是多少?
  • ¿您是否使用 clGetProgramBuildLog 检查错误?
  • 我们将不得不查看一些为您展示问题的最小代码部分。尽量缩小范围。没有它,我们只能做出猜测,如果我们能提出任何建议的话。
  • 感谢您的建议。我使用 clGetProgramBuildLog 进行了检查。问题是 clGetDeviceIDs() 失败了。是驱动程序未正确安装的问题吗???
  • 我什至检查了驱动程序 NVIDIA Tesla 驱动程序是否已正确安装。系统有两个显卡会导致任何问题吗?

标签: c opencl gpu


【解决方案1】:

我找到了解决上述问题的方法... 首先感谢 Eli Bendersky、Zhen 和 Bart..

我面临的问题是由于 clGetDeviceIDs() 失败。这是因为我选择的平台是 AMD 平台(我既有 AMD 也有 CUDA,但底层 GPU 是 NVIDIA GPU)所以这个平台找不到底层 GPU..

最后,在访问 clGetDeviceIDs() 时将平台 [0] 更改为平台 [1] 后,我的代码可以正常工作了...

:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多