我有在 Linux 系统上开发并在那里工作的 CUDA 主机和内核代码。我将它们移植到 Win 7 系统以使用 Nvidia Nsight 调试和分析工具。
代码不在Win 7系统上运行;在某些时候,对 cudaMalloc 或内核调用的请求会返回一个错误代码,翻译为:cudaErrorInvalidResourceHandle。(失败的内核是第一个内核调用;使用 Nsight 在内核的第一行设置断点无法触发——错误发生在内核实际被调用之前。)
该程序创建单个流并且不创建任何事件,因此唯一的资源句柄必须是与流关联的资源句柄,但流句柄不会出现损坏。我的系统中有一个 Fermi 和一个 Kepler 板,因此我可以检查每个板的运行时间,因此我加载了最新的 Nvidia 驱动程序 [9.18.13.448 (6-11-2012) - nvoglv64][304.48]。我可以在第二个系统上复制这个问题。
有没有人见过这个错误信息?对要检查的内容有任何见解吗?通常我会注释掉程序的大部分以隔离有罪的行,但这个程序非常复杂(你能说意大利面条吗)并且 cuda 调用来自各地。所以在我开始屠杀程序之前,我想我会问这个社区是否曾经出现过这个错误。我也在考虑这可能是驱动程序问题,但由于 Nvidia 论坛关闭,我无法访问 Nvidia。
感谢您的任何想法。
杰米