当针对具有CUDA功能5.0的设备运行时,以编程方式加载PTX将返回错误209

当针对具有CUDA功能5.0的设备运行时,以编程方式加载PTX将返回错误209,cuda,gpu,ptx,Cuda,Gpu,Ptx,我试图使用CUDA SDK中的ptxjit示例作为与GPU设备交互的基础 我成功地编译了检测代码,并控制设备加载和执行具有CUDA功能2.0的Geforce GT440的PTX模块 在具有CUDA能力5.0的Geforce 830M系统(使用大黄蜂控制离散GPU的笔记本电脑)上编译相同的检测代码时,代码会编译,但会给我209(CUDA_错误_NO_二进制_FOR_GPU) 我曾尝试编译内核,使其与CUDA capability 5.0兼容,但没有成功,仍然是相同的错误 有什么想法吗?最后问题出在

我试图使用CUDA SDK中的ptxjit示例作为与GPU设备交互的基础

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

在具有CUDA能力5.0的Geforce 830M系统(使用大黄蜂控制离散GPU的笔记本电脑)上编译相同的检测代码时,代码会编译,但会给我209(CUDA_错误_NO_二进制_FOR_GPU)

我曾尝试编译内核,使其与CUDA capability 5.0兼容,但没有成功,仍然是相同的错误


有什么想法吗?

最后问题出在司机身上。它只影响使用具有CUDA功能5.0的GPU加载PTX代码时使用的功能

我删除了最近更新的英伟达驱动程序包,并安装了CUDA SDK附带的驱动程序和OpenGL库。SDK 7.5的驱动程序版本为352.39,与其他系统一样,该驱动程序可以完美地执行原始ptxjit示例和修改后的ptxjit示例

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


目前,解决方案是保持与CUDA SDK一起的驱动程序,并关闭英伟达存储库中的更新。

< P>最后,问题是与驱动程序有关。它只影响使用具有CUDA功能5.0的GPU加载PTX代码时使用的功能

我删除了最近更新的英伟达驱动程序包,并安装了CUDA SDK附带的驱动程序和OpenGL库。SDK 7.5的驱动程序版本为352.39,与其他系统一样,该驱动程序可以完美地执行原始ptxjit示例和修改后的ptxjit示例

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


目前,解决方案是保持与CUDA SDK一起的驱动程序,并关闭英伟达存储库的更新。

没有一个很难说是什么错误。通常情况下,
CUDA\u ERROR\u NO\u BINARY\u FOR\u GPU
意味着您的CUBIN中没有正确体系结构的代码,或者您的PTX在JIT编译期间包含语法错误或其他内容,导致编译调用失败。正如我提到的,我使用CUDA SDK上提供的代码,但我会将其中的一部分与ptx一起复制。您是否真的在构建和运行CUDA SDK附带的ptxjit示例项目?或者,您是将这个ptxjit示例代码放到您自己的项目中?您正在使用哪个CUDA版本?是的,我从7.5 CUDA SDK提供的示例开始。奇怪的是,在gt440的系统上它可以工作,但在830m的笔记本电脑上却不能。您可能做了一些改变,破坏了示例。在您的问题中,您声明“我试图编译内核以与…兼容”,但示例代码项目已经以这种方式设置。如果你对那个项目做了任何改变,你可能已经破坏了它。如果没有一个计划,很难说什么是错的。通常情况下,
CUDA\u ERROR\u NO\u BINARY\u FOR\u GPU
意味着您的CUBIN中没有正确体系结构的代码,或者您的PTX在JIT编译期间包含语法错误或其他内容,导致编译调用失败。正如我提到的,我使用CUDA SDK上提供的代码,但我会将其中的一部分与ptx一起复制。您是否真的在构建和运行CUDA SDK附带的ptxjit示例项目?或者,您是将这个ptxjit示例代码放到您自己的项目中?您正在使用哪个CUDA版本?是的,我从7.5 CUDA SDK提供的示例开始。奇怪的是,在gt440的系统上它可以工作,但在830m的笔记本电脑上却不能。您可能做了一些改变,破坏了示例。在您的问题中,您声明“我试图编译内核以与…兼容”,但示例代码项目已经以这种方式设置。如果你对那个项目做了任何改变,你可能已经破坏了它。