【发布时间】: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 的笔记本电脑上却不行。
-
您可能做了一些破坏样本的更改。在您的问题中,您声明“我试图编译内核以兼容......”但示例代码项目已经以这种方式设置。如果您对该项目进行了任何更改,您可能已经破坏了它。