2016-10-03 163 views
1

我尝试使用CUDA SDK中的ptxjit样本作为仪器与GPU设备的交互基础。加载PTX以CUDA功能运行时,以编程方式返回错误209.0

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

在使用具有CUDA功能5.0的Geforce 830M(使用大黄蜂控制独立GPU的笔记本电脑)系统上编译相同的工具代码时,代码会编译但会提供209(CUDA_ERROR_NO_BINARY_FOR_GPU)。

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

任何想法?

+0

没有[MCVE],很难说出什么问题。通常情况下''CUDA_ERROR_NO_BINARY_FOR_GPU'意味着你要么没有代码的CUBIN没有正确的体系结构,要么你的PTX包含语法错误,或者在JIT编译过程中包含其他内容,导致编译调用失败。 – talonmies

+0

正如我所提到的,我使用CUDA SDK上提供的代码,但我会将它的一部分与ptx一起复制。 – prmottajr

+1

你真的在构建和运行CUDA SDK附带的ptxjit示例项目吗?或者你是否将这个ptxjit示例代码放入你自己的项目中?你正在使用哪种CUDA版本? –

回答

0

最后问题出在司机身上。它认为它只影响用于具有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存储库的更新。

相关问题