[英]Fine Grained Memory Checker for CUDA?
我怀疑我正在运行的大型CUDA内核中存在细粒度的内存错误。 设备端printf显示了一些应该确定的变量值。 我使用的CUDA开发工具的“稳定”版本已删除设备仿真模式,而其cuda-gdb版本不适用于模板化功能。 Cuda-memcheck运行,但是没有捕获任何东西。
在CPU上,我将使用valgrind或电篱笆来捕获这样的内存错误。 如果您只有printf,有什么巧妙的技巧可以调试内存错误?
例如,是否有一种方法可以用nans充斥整个内存空间,并使用printfs查找它们在我的计算中首次弹出的位置?
对于这种事情,我喜欢分配整个可用的全局内存空间,然后自己管理内存。 使用自定义memset函数将整个分配设置为可识别的字大小的位模式,然后初始化分配中的块供内核使用。 如果您实现了一个简单的设备端声明来捕获该位模式并报告线程,块,行在其中显示的位置,则您应该能够隔离cuda-memcheck无法捕获的全局内存读取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.