Debugging CUDA/PyCUDA:诊断在CUDA gdb下消失的发射故障

Debugging CUDA/PyCUDA:诊断在CUDA gdb下消失的发射故障,debugging,gdb,cuda,pycuda,gdb-python,Debugging,Gdb,Cuda,Pycuda,Gdb Python,有人知道在cuda gdb下运行时会消失的内核启动故障的可能调查途径吗?内存分配在规范范围内,每次在同一内核的同一次运行中启动都会失败,而且(到目前为止)它在调试器中没有失败 哦,太好了,那么大师,现在怎么办?cuda gdb将所有共享内存和寄存器溢出到本地内存。因此,当某个东西运行正常(为调试而构建),否则失败时,通常意味着超出共享内存访问的范围。cuda memcheck可能会有所帮助,具体取决于您使用的卡的类型。在这方面,费米牌比旧牌要好 编辑: 回想过去糟糕的日子,我记得有一个orner

有人知道在cuda gdb下运行时会消失的内核启动故障的可能调查途径吗?内存分配在规范范围内,每次在同一内核的同一次运行中启动都会失败,而且(到目前为止)它在调试器中没有失败


哦,太好了,那么大师,现在怎么办?

cuda gdb将所有共享内存和寄存器溢出到本地内存。因此,当某个东西运行正常(为调试而构建),否则失败时,通常意味着超出共享内存访问的范围。cuda memcheck可能会有所帮助,具体取决于您使用的卡的类型。在这方面,费米牌比旧牌要好

编辑
回想过去糟糕的日子,我记得有一个ornery GT9500,它过去常常抛出类似的NV13错误,并且在运行具有大量共享内存活动的内存密集型内核时出现随机代码故障。调试时从不使用。我把它归因于糟糕的硬件,然后转向GT200,从此再也没有看到类似的错误。一种可能是硬件不好。这是G92(9800GT或类似产品)?

CUDA GDB可以使一些CUDA操作同步

  • 您是否在初始化后从内存中读取数据
  • 你在使用流吗
  • 您是否正在启动多个内核
  • 它在哪里以及如何失败

Cuda memcheck似乎也“修复”了问题;注意:这是在pycuda.debug导入的情况下进行的,文档中没有任何说明(除了“使用它”)pycuda.debug实际上只是一个包装器脚本,它设置driver.set_debug(),使所有JIT编译都使用正确的标志与cuda gdb一起工作。我不确定cuda memcheck在使用共享内存的旧卡上会做什么。可能没有硬件支持来完成Fermi上可以完成的所有共享内存诊断。@Talonmes,
NV13
错误是什么。搜索web没有发现任何有用的东西。@Framester:这是一类Linux驱动程序错误,报告给内核环缓冲区。在emu时代,我有时在emu模式下运行valgrind来查找bug。我最近也求助于内核printfs来解决其中的一个问题