【问题标题】:CUDA/PyCUDA: Diagnosing launch failure that disappears under cuda-gdbCUDA/PyCUDA:诊断在 cuda-gdb 下消失的启动失败
【发布时间】:2011-08-09 19:12:06
【问题描述】:

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

哦,伟大的 SO 大师,现在怎么办?

【问题讨论】:

  • 在emu 时代,我有时会在emu 模式下通过valgrind 运行它以查找错误。我最近还求助于内核 printfs 来解决其中一个问题。

标签: debugging gdb cuda pycuda gdb-python


【解决方案1】:

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

编辑: 回想过去糟糕的日子,我记得有一个讨厌的 GT9500,它曾经抛出类似的 NV13 错误,并且在运行具有大量共享内存活动的内存密集型内核时会出现随机代码故障。调试时从不。我把它归结为坏硬件,然后转向 GT200,从那以后再也没有看到类似的错误。一种可能是硬件不好。这是 G92(9800GT 或类似型号)吗?

【讨论】:

  • Cuda-memcheck 似乎也“修复”了这个问题;注意:这是使用 pycuda.debug 导入的,文档没有说明它(除了“使用它”)
  • pycuda.debug 实际上只是一个设置 driver.set_debugging() 的包装脚本,使所有的 JIT 编译都使用正确的标志来处理 cuda-gdb。我不确定 cuda-memcheck 在具有共享内存的旧卡上会做什么。可能没有硬件支持来执行它可以在 Fermi 上执行的所有共享内存诊断。
  • @talonmies,NV13 错误是什么。在网上搜索并没有发现任何有用的东西。
  • @Framester:是Linux驱动类错误,报告给内核环缓冲区。
【解决方案2】:

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

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

【讨论】:

猜你喜欢
  • 2011-08-15
  • 2013-07-15
  • 2011-12-09
  • 1970-01-01
  • 2012-04-11
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多