gpt4 book ai didi

profiling - 诊断 CUDA 内核问题

转载 作者:行者123 更新时间:2023-12-02 23:47:29 35 4
gpt4 key购买 nike

CUDA 到处都有大量文档和指南,但我找不到任何形式的说明来指导如何诊断编译但收到神秘、模糊错误消息(例如“未指定启动”)的内核“这些 block /网格结构有意义吗?”等等

我可以以某种方式拦截cubin文件并对内存结构等进行一些静态分析吗?请原谅我的菜鸟,但我在任何地方都找不到任何明确的白痴指南。

祝大家周末愉快。

我在寻找什么

  • 如何分离出cubin中间文件
  • 之后如何处理它以弄清楚发生了什么,特别是寄存器和内存配置,看看我的代码是否违反了任何硬件要求,或者我是否只是在某处遗漏了一个相差一错误。<

对于后来遇到这个问题的人(我似乎有创建这样的问题的习惯,这些问题在几个月后不断出现在我自己的查询中......)CUDA-Memcheck提供比“检查错误”处理程序更有趣的响应。例如

========= Error: process didn't terminate successfully
========= Invalid __global__ write of size 4
========= at 0x00000040 in decomp
========= by thread (1,0,0) in block (0,0,0)
========= Address 0x00101024 is out of bounds
=========
========= ERROR SUMMARY: 1 error

我什至不需要解释该错误消息...

最佳答案

在 CUDA 中,“未指定的启动失败”相当于段错误。

最近的工具包版本附带了一个名为 cuda-memcheck 的实用程序。它执行类似 valgrind 的分析,对正在执行的内核中的内存事务进行分析,并报告缓冲区溢出或内核中任何非法指针的使用。您可以将其用作进一步分析的启动点。如果您使用 Fermi 卡,还有内核内的 printf 支持,那么生成您自己的断言函数来测试和报告内核内的错误条件并不困难。

CUDA 还附带源级调试器,但您需要专用 GPU 才能使用它。如果您使用的是 Linux 并且只有一个 GPU,请退出 X11 并从控制台 TTY 运行它。

关于profiling - 诊断 CUDA 内核问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5687506/

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