gpt4 book ai didi

CUDA memcheck 地址 - 如何确定代码中的位置?

转载 作者:行者123 更新时间:2023-12-04 22:36:03 37 4
gpt4 key购买 nike

cuda-memcheck 正在报告 Release模式 CUDA 内核的此信息:

========= Error: process didn't terminate successfully
========= Invalid __global__ read of size 4
========= at 0x000002c8 in xx_kernel
========= by thread (0,0,0) in block (0,0)
========= Address 0x10101600014 is out of bounds
=========
========= ERROR SUMMARY: 1 error

此故障仅在 Release模式下发生。在 cuda-gdb 下运行时也不会发生这种情况。

如何获取 0x000002c8 地址并确定导致故障的代码?我查看了缓存的中间文件(.ptx、.cubin 等),但没有发现确定错误源代码的​​明显方法。

这是在带有 CUDA 3.2 的 x86_64 Linux 上。

更新:原来这是 3.2 中的编译器错误。升级到 4.0 会使 memcheck 错误消失。此外,我能够使用 4.0 的 cuobjdump 反汇编 CUBIN,但由于它是 Release模式并经过优化,因此将反汇编与源代码匹配起来非常困难。

最佳答案

下载 CUDA Toolkit 4.0 from the NVIDIA Developer Zone 。使用支持 2.x cubin 的新 cuobjdump
cuobjdump -sass /path/to/your/cubin > /path/to/dump.txt

示例输出(在 sm_20 cubin 上测试,代码版本 2.3)

    ...
/*6018*/ /*0xe00100075003ff9a*/ CAL 0x46d8;
/*6020*/ /*0x10001de428000000*/ MOV R0, R4;
/*6028*/ /*0x00001de428000000*/ MOV R0, R0;
/*6030*/ /*0x40011de428000000*/ MOV R4, R16;
...

关于CUDA memcheck 地址 - 如何确定代码中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6449195/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com