cudaErrorInvalidResourceHandle?

cudaErrorInvalidResourceHandle?,cuda,Cuda,我有CUDA主机和内核代码,它们是在Linux系统上开发的,并在那里工作。我将它们移植到一个Win 7系统中,以便使用英伟达NVIEW调试和分析工具。 这些代码不在Win 7系统上运行;在某个时刻,对cudaMalloc或内核调用的请求会返回一个错误代码,翻译为:cudaErrorInvalidResourceHandle。(失败的内核是第一个内核调用;在内核的第一行使用Nsight设置断点无法触发——错误发生在内核实际被调用之前。) 程序创建单个流,并且不创建任何事件,因此唯一的资源句柄必须是

我有CUDA主机和内核代码,它们是在Linux系统上开发的,并在那里工作。我将它们移植到一个Win 7系统中,以便使用英伟达NVIEW调试和分析工具。 这些代码不在Win 7系统上运行;在某个时刻,对cudaMalloc或内核调用的请求会返回一个错误代码,翻译为:cudaErrorInvalidResourceHandle。(失败的内核是第一个内核调用;在内核的第一行使用Nsight设置断点无法触发——错误发生在内核实际被调用之前。)

程序创建单个流,并且不创建任何事件,因此唯一的资源句柄必须是与流关联的资源句柄,但流句柄不会出现损坏。我的系统中既有一个费米板也有一个开普勒板,因此我可以检查每个板上的运行时,以便加载最新的Nvidia驱动程序[9.18.13.448(6-11-2012)-nvoglv64][304.48]。我可以在另一个系统上重复这个问题

以前是否有人看到过此错误消息?对检查什么有什么见解吗?通常情况下,我会对程序中的大部分内容进行注释,以隔离罪过,但这个程序非常复杂(你可以说是意大利面),cuda的电话来自世界各地。所以,在我开始破坏这个程序之前,我想我应该问问这个社区,这个错误是否曾经出现过。我也在考虑这可能是一个驱动程序问题,但随着Nvidia论坛关闭,我无法访问Nvidia

谢谢你的想法


JM的问题似乎是nvidia驱动程序和cuda版本之间不匹配。将nvidia驱动程序简化为cuda版本,问题就消失了。

您提到要使用Win7来使用Nsight Visual Studio版本。您是否尝试过在启用错误时调用堆栈跟踪的情况下使用Nsight CUDA跟踪活动?如果执行此操作,则可以打开CUDA运行时API调用页面并过滤cudaResult列,以仅显示有错误的API。使用相关窗格(左下角),您可以找到发生错误的API调用和调用堆栈。然后,您可以在该位置插入断点,并用C++调试器重新启动,以帮助标识该问题。最后解决了问题——重新调整的驱动程序和CUDA版本。