问题标签 [cuda-gdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - 在 Cuda-gdb 中打印反汇编信息
我想打印来自 cuda 反汇编的信息。
例如,我可以使用信息寄存器 R1 在 cuda 中打印寄存器,但是我无法弄清楚如何在 ( ) 中打印 c[0x0][0x20]
或MOV R1, c[0x0][0x20]
在[R13+0x9f]
( STL.U8 [R13+0x9f], RZ
)中打印
c++ - C/C++ 中的 CUDA-GDB 查看变量
我已安装 NVIDIA 提供的最新版本的 CUDA 驱动程序
但是当我调试一个程序时,我收到一条关于 python 的错误消息。
我的程序是一个非常简单的程序,我读到它可能是处理 python 和 gdb 的错误,但我不确定如何使用 Ubuntu 和 Nvidia 的最新软件修复错误。关于如何解决这个问题的任何建议?
c++ - 为什么 cuda-gdb 启动多个线程?
当我在 cuda-gdb 中启动我的程序时,我得到如下输出:
我不明白为什么一开始就启动了这些多个线程。我还没有以多线程模式启动我的程序。我正在使用 MPI,但我启动了一个进程。那么,这些线程是从哪里来的呢?
这不会以任何方式影响我的调试过程。只是我不明白这是什么意思。
callback - 使用 cuda-gdb 启动带有 CUPTI 调用的程序失败
我遇到了这个奇怪的问题:我有一个程序使用 CUPTI 回调 API 来监视程序中的内核。直接启动时运行良好;但是当我将它放在 cuda-gdb 下并运行时,它失败并出现以下错误:
错误:函数 cuptiSubscribe(&subscriber, CUpti_CallbackFunc)my_callback, NULL) 失败,错误 CUPTI_ERROR_NOT_INITIALIZED
我已经尝试了 CUPTI/samples 中的所有示例,并得出结论,使用 callbackAPI 和 activityAPI 的程序将在 cuda-gdb 下失败。(它们在没有 cuda-gdb 的情况下都表现良好)但是失败的原因不同:如果我有来自 activityAPI 的调用,那么一旦在 cuda-gdb 下运行它,它会挂起一分钟然后退出并出现错误:
CUDA 驱动程序遇到内部错误。错误代码:0x100ff00000001c 进一步执行或调试不可靠。请确保您的临时目录以写入和执行权限挂载。
如果我像我自己的程序一样从 callbackAPI 调用,那么它会更快地失败并出现相同的错误:
CUPTI_ERROR_NOT_INITIALIZED
对这种问题有任何经验吗?我非常感谢!
c++ - 如何预防cuda-gdb 中的值
如何防止 cuda-gdb 优化任何值(无论是设备还是主机,本地还是全局)?我检查了 nvidia 论坛,但其中大多数都已有多年历史,似乎没有旧 cuda 版本的解决方案,但有最新版本(cuda 9.2 和 sm 61)的解决方案吗?
我正在使用nvidia 文档中描述的标志:
-g
- “为主机代码生成调试信息。”
-G
- “为设备代码生成调试信息。关闭所有优化。不要用于分析;改用 -lineinfo。”
cuda - 将 CUDA-gdb 与 NVRTC 一起使用
我有一个应用程序,它生成 CUDA C++ 源代码,在运行时使用 将其编译成 PTX NVRTC
,然后使用 CUDA 驱动程序 API 从它创建 CUDA 模块。
如果我使用 调试此应用程序cuda-gdb
,它会在回溯中显示内核(发生错误的位置),但不显示行号。
我将生成的源代码导出到一个文件中,并将目录提供给cuda-gdb
使用该--directory
选项。我还尝试将其文件名传递给nvrtcCreateProgram()
(name
参数)。我使用编译选项--device-debug
和--generate-line-info
NVRTC。
有没有办法让cuda-gdb
知道生成的源代码文件的位置,并在其回溯中显示行号信息?
c++ - cuda-gdb 给出错误“警告:检测到 Cuda API 错误:返回 cudaLaunchKernel (0x7)”
我正在尝试调试 cuda-gdb 中的程序。我能够在主机 (CPU) 上运行的代码中成功设置断点,但是每当我尝试在 GPU 上运行的代码中设置断点时,调试器就会跳过断点并给我以下错误:
然后它继续成功地执行其余的代码。我怎样才能使这些工作?
c++ - Cuda 错误 (209): cudaLaunchKernel 返回 cudaErrorNoKernelImageForDevice
操作系统:CentOS 7 Cuda Toolkit 版本:11.0
Nvidia 驱动程序和 GPU 信息:
NVIDIA-SMI 450.51.05
驱动程序版本:450.51.05
CUDA 版本:11.0
GPU:Quadro M2000M
我对 cuda 编程非常陌生,因此非常感谢任何指导。我有一个非常简单的 cuda c++ 程序,它计算 GPU 上统一内存中两个数组的总和。但是,由于 cudaErrorNoKernelImageForDevice 错误,内核似乎无法启动。代码如下:
cuda-gdb - cuda-gdb 附加:一个程序已经在调试中。杀了它?
在 dmesg 中找到与 GPU 相关的日志后,我尝试附加到正在运行的进程(python3)。ex) 西 13、31、45
但由于以下消息,我无法获得任何线索。有谁知道这个消息是什么意思?
无法写入扩展状态状态:地址错误。
已经在调试程序。杀了它?
cuda - 有没有办法在 CUDA 中访问常量内存库的值
我一直在尝试调试使用内联 PTX 程序集的 cuda 程序。具体来说,我在指令级别进行调试,并试图确定指令参数的值。有时,反汇编包含对常量内存的引用。我正在尝试让 gdb 打印此常量内存的值,但没有找到任何说明如何执行此操作的文档。例如,反汇编包括 IADD R0, R0, c[0x0] [0x148]
我想确定如何让 gdb 打印 c[0x0] [0x148] 的值。我试过使用 print * (@constant) ... 但这似乎不起作用(我在这里传递了 0x148 并且它什么也没打印出来)。这可以在 cuda-gdb 中做到吗?
我试图通过在编译期间传递编译器选项 --disable-optimizer-constants 来避免这种情况,但这不起作用。