【问题标题】:Loading a PTX programatically returns error 209 when run against device with CUDA capability 5.0当针对具有 CUDA 功能 5.0 的设备运行时,以编程方式加载 PTX 会返回错误 209
【发布时间】:2016-10-03 04:15:58
【问题描述】:

我正在尝试使用 CUDA SDK 中的 ptxjit 示例作为检测与 GPU 设备交互的基础。

我已经成功地编译了检测代码,并控制设备加载和执行具有 CUDA 功能 2.0 的 Geforce GT440 的 PTX 模块。

在具有 CUDA 功能 5.0 的 Geforce 830M 系统(使用 Bumblebee 控制离散 GPU 的笔记本电脑)上编译相同的仪器代码时,代码编译但给了我 209 (CUDA_ERROR_NO_BINARY_FOR_GPU)。

我尝试编译内核以兼容 CUDA 功能 5.0 但没有成功,仍然是同样的错误。

有什么想法吗?

【问题讨论】:

  • 没有minimal reproducible example,很难说哪里出了问题。通常CUDA_ERROR_NO_BINARY_FOR_GPU 意味着您的 CUBIN 中没有正确架构的代码,或者您的 PTX 在 JIT 编译期间包含语法错误或其他原因导致编译调用失败。
  • 正如我所提到的,我使用了 CUDA SDK 上提供的代码,但我会将其中的一部分与 ptx 一起复制。
  • 您实际上是在构建和运行 CUDA SDK 附带的 ptxjit 示例项目吗?或者您是否正在使用此 ptxjit 示例代码并将其放入您自己的项目中?您使用的是哪个 CUDA 版本?
  • 是的,我从 7.5 CUDA SDK 提供的示例开始。奇怪的是,在带有 gt440 的系统上它可以工作,但在带有 830m 的笔记本电脑上却不行。
  • 您可能做了一些破坏样本的更改。在您的问题中,您声明“我试图编译内核以兼容......”但示例代码项目已经以这种方式设置。如果您对该项目进行了任何更改,您可能已经破坏了它。

标签: cuda gpu ptx


【解决方案1】:

最终问题出在驱动程序上。它似乎只影响用于通过具有 CUDA Capability 5.0 的 GPU 加载 PTX 代码的功能。

我删除了所有最近更新的 nvidia 驱动程序包,并安装了 CUDA SDK 附带的驱动程序和 OpenGL 库。 SDK 7.5 的驱动程序版本是 352.39,该驱动程序在原始 ptxjit 示例和修改后的驱动程序中都能像在其他系统上一样完美执行。

我没有任何具有 CUDA 能力 3.0 的 GPU 来测试是否会出现相同的问题,而且我没有将我的桌面更新到 367.44 驱动程序以查看它是否会破坏 ptxjit 示例。

目前,解决方案是保留 CUDA SDK 附带的驱动程序并关闭来自 nvidia 存储库的更新。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多