【问题标题】:Trace for function name from the output of cuda-memcheck从 cuda-memcheck 的输出中跟踪函数名称
【发布时间】:2015-09-16 07:11:15
【问题描述】:

我跑到cuda-memcheck调试我的代码,输出如下

========= Program hit cudaErrorCudartUnloading (error 29) due to "driver shutting down" on CUDA API call to cudaFree. 
=========     Saved host backtrace up to driver entry point at error
=========     Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x2e40d3]
=========     Host Frame:./nmt [0x53526]
=========     Host Frame:./nmt [0xfbd9]
terminate called after throwing an instance of '=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 [0x3c259]
=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 [0x3c2a5]
=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main + 0xfc) [0x21ecc]
thrust::system::system_error'
=========     Host Frame:./nmt [0x530a]
=========
  what():  driver shutting down
========= Error: process didn't terminate successfully
========= Internal error (20)
========= No CUDA-MEMCHECK results found

是否有可能从Host Frame:./nmt [0x53526] 行看出代码中的哪里出错了?如果是这样,我该怎么做?

【问题讨论】:

标签: memory cuda gpu memcheck


【解决方案1】:

正如@talonmies 所指出的(我怀疑他不会介意我发布CW 答案),cuda-memcheck 工具提供了额外的堆栈回溯功能,可以通过添加到命令行的--show-backtrace 开关来启用。

回溯可能包含主机和设备功能(即主机和设备回溯。)

如果应用程序还使用主机调试符号信息编译(例如,Linux 上的-g),那么cuda-memcheck 可以在主机回溯中显示主机函数的函数名称。

documentation 中提供了其他使用信息。

【讨论】:

    【解决方案2】:

    对我来说cuda-memcheck 使用不同的子工具,例如memcheckracecheckinitchecksynccheck,通常会产生没有行号甚至没有提到的主机功能的主机回溯。在互联网上搜索只显示这个问题,但我已经将-g 甚至-g3 传递给主机编译器,并且--show-backtrace 标志cuda-memcheck 在文档中被称为yes 默认情况下(传递它明确没有帮助)。所以我对回溯执行以下操作:

    考虑你的编译程序被称为a.out,你会在主机回溯中得到一行Host Frame:./nmt [0x530a]。然后在cuda-gdb 中打开你的程序:

    cuda-gdb a.out
    

    然后,让您的程序加载所有共享库(至少到main() 函数中的某个点)。在cuda-gdb 提示符中输入以下内容:

    b main
    r
    

    然后,使用以下命令查找函数名称:

    info symbol 0x530a
    

    或使用以下命令查找行号:

    info line *0x530a
    

    其中0x530a 是为您打印的地址cuda-memcheck。我猜 NVIDIA 可以轻松地实现这一点的自动化(以及在打印它们的地方解构主机函数名称)。

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 2011-01-03
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 2018-05-31
      • 1970-01-01
      相关资源
      最近更新 更多