调试 CUDA MMU 故障
Debugging CUDA MMU Fault
在我的代码中,我反复出现内存访问错误,我找不到发生这种情况的原因。
首先,CUDA 上的 MMU 错误是什么,我如何调试它的来源?目前它发生在定义 lambda 函数时,但是当我重写代码时,它发生在其他地方,所以它的行为非常未定义,我什至不知道如何开始调试它。
您所指的 MMU 故障可能是此处所述的 Xid 31 错误。
根据我的经验,最常见的原因是 CUDA 代码缺陷(由 CUDA 用户编写的代码,即 GPU 内核/设备代码(,导致在执行 GPU 内核期间发生错误。 根据我的经验,这些问题几乎总是可以使用cuda-memcheck
捕获/本地化。 (也可以使用上述链接中所述的调试器(。
对于这些情况,开始调试的最佳方法是 IMO 开始使用此处描述的方法。 它基本上是我上面链接的文件中提到的内容。 使用该方法,cuda-memcheck
通常能够将错误本地化为特定的源代码行。 此后,您可以使用内核内printf
和/或调试器进行其他调试途径,如前所述。
如果cuda-memcheck
没有报告任何问题,但每次运行特定应用程序时,系统日志中都会记录 Xid 31 错误,那么如第一个链接文档所示,这不是真正的最终用户可调试的(并且应该很少发生(,此时唯一的办法是在 developer.nvidia.com 提交错误, 使用此处描述的常规方法。
相关文章:
- 分段故障(堆芯转储)矢量
- C++中的动态铸造故障
- 数组的指针从不分段故障
- vscode g++链路故障:体系结构x86_64的未定义符号
- 访问被拒绝后,c++中的故障保护代码
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 调试 CUDA MMU 故障
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 正在处理故障(堆芯转储)
- 在 Boost::fiber 中引发的BOOST_ASSERT故障 Visual Studio "Debug" 构建
- 如何进行故障排除:未定义对"非虚拟 thunk to ..."的引用
- C++函数过载会导致 SEG 故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 当新的故障时,是否有必要留出一些紧急内存?
- Python & C-C++ 扩展模块案例段故障
- 带升压的 SEG 故障::make_shared / 特征3 内存.h.
- 在 c++ 中,发生故障后是否需要 stream.clear()?
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串