问题标签 [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.

0 投票
1 回答
1463 浏览

cuda - 如何在 Linux 上使用 Nsight 5.5 进行远程调试?

免责声明:我知道这个问题已经被问过很多次了,但在 Nsight 5.5 之前,答案只是“你不能”。

我正在尝试在 Ubuntu 上使用 Nsight 5.5 调试 CUDA 程序。远程机器也是带有 CUDA Toolkit 5.5 的 Ubuntu。

我使用“调试远程系统上的应用程序”在 NSight 中设置调试。每当我尝试运行应用程序时,我都会收到“无法在远程主机上启动 gdbserver”错误。

这是我在控制台上得到的:

两者gdbservercuda-gdbserver安装在两台机器上。

如果我 ssh 到远程主机,我可以/tmp/nsight-debug/flow手动运行。

这里可能有什么问题?设置中是否缺少任何内容?

0 投票
0 回答
202 浏览

eclipse - Nsight eclipse for linux远程调试报错

我在笔记本上使用 ubuntu12.10 x64 和 nsight eclipse for linux 来编写 cuda 程序,我试图在运行 CentOS6.0 x64 和 2 个 Geforce GTX 260 显卡的服务器上调试它。两台计算机都安装了 cuda 工具包 5.5,但是当我尝试启动调试器时,我收到了来自 nsight 的错误,它说:

启动失败。

java.lang.reflect.invocationTargetException

我不知道发生了什么以及如何解决这个问题,有没有人遇到过这种情况并且知道该怎么做?请告诉我!

0 投票
1 回答
650 浏览

cuda - nsight eclipse远程调试超时错误

我有一台运行 CentOS 6.0 的服务器,我正在尝试将它用作远程主机进行 cuda 调试。为此,我在服务器和运行 ubuntu 12.10 操作系统的笔记本上都安装了 cuda-toolkit 5.5。我按照 NVIDIA-cuda-instruction 告诉我的方式配置了两台机器,但是当我启动 Nsight eclipse 版本并尝试远程调试我的 cuda 应用程序时,我遇到了错误,它说:

执行 MI 命令失败:

-target-select 远程 192.168.2.105:2345

来自调试器后端的错误消息:

192.168.2.105:2345:连接超时

我用谷歌搜索了这个错误,有人说这是防火墙问题,我需要手动打开端口,所以我修改了 /etc/sysconfig/iptables 文件并添加了这个:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2345 -j ACCEPT

打开 2345 端口。但事实证明它没有用。谁能给我一些建议并帮助我解决这个问题?

顺便说一句,我已经在我的服务器上使用 nsight eclipse 版本测试了本地调试,并且效果很好。

0 投票
2 回答
1254 浏览

debugging - cuda-gdb 远程调试错误

我有一个配备 2 个 Geforce 480GTX 卡的 CentOS 6.0 x64 服务器,我正在使用它来调试我的 cuda 程序。今天我尝试在我的笔记本上使用 cuda-gdb 来远程调试我的程序。所以我尝试这样:

  1. 我打开我的 bash shell 并使用 ssh 连接到服务器,然后进入程序所在的目录。

  2. 我通过键入以下内容启动 cuda-gdbserver:cuda-gdbserver :9999 ./a.out

  3. 之后我在 bash 上得到了这个:

    进程 ./a.out 创建;PID = 4356

    监听 9999 端口

    看来 cuda-gdbserver 运行良好。

  4. 所以我打开了一个新的 bash shell,并决定使用 cuda-gdb 调试程序。首先我打开了cuda-gdb,现在shell是这样的:(cuda-gdb)

  5. 然后我尝试连接远程服务器:target remote 192.168.2.105:9999

    其中 192.168.2.105 是我的服务器的 IP 地址

  6. 但是,令我失望的是,我从 shell 收到了错误信息,上面写着:192.168.2.105:9999: No route to host。

怎么了?我google了一段时间,有人告诉我应该停止服务器上的iptables服务,所以我按照他们说的做了(service iptables stop),但它仍然不起作用。对了,我也试过cuda-gdb中的target extended-remote命令,不行。

另外服务器和我的笔记本(运行ubuntu 12.10 x64)都安装了cuda toolkit 5.5的同一个subversion,我可以在我的服务器本地调试好。

那么,有人知道我需要做什么吗?真的让我困惑了很久(其实我很久以前就遇到过这个问题)。我要感谢任何提前回答我问题的人!

0 投票
1 回答
4834 浏览

cuda - 传递给设备函数的共享内存地址仍然是共享内存吗?

假设我有这个__device__功能:

__global__内核中我以这种方式使用它:

uarray位于共享内存中的数组在哪里。

但是当我使用 cuda-gdb 查看内核中的地址时,我得到uarray__global__

__device__内核中我得到:

尽管出现错误,但程序运行正常(可能是 cuda-gdb 的一些限制)。

所以,我想知道:在__device__内核内部,uarray是共享了吗?我正在将数组从全局更改为共享内存,时间几乎相同(使用共享内存的时间会差一些)。

0 投票
1 回答
1135 浏览

c++ - CUDA 常量内存错误

我正在尝试使用 CUDA 5.5 做一个具有恒定内存的示例代码。我有 2 个大小为 3000 的常量数组。我有另一个大小为 N 的全局数组 X。我想计算

这是代码。

我正在尝试在此代码上运行调试器以进行分析。事实证明,在复制到常量内存的行上,我使用调试器收到以下错误

有人可以帮我保持记忆吗

0 投票
1 回答
482 浏览

cuda - Nsight Eclipse 中的内核条件断点

我在安装了 2 个 M2050 卡的 SUSE Linux 机器上运行 CUDA 5.5,这两个卡都不用于运行 X11。我正在尝试通过使用 Nsight Eclipse 调试器专门仅使用设备 0 的内核。如果我在内核中设置(无条件)断点,调试器首先在块 0/线程 0 上中断,然后如果我继续执行,它将在不同块中看似随机的线程上再次在同一点中断 5 或 6 次,之前退出内核并继续下一个内核。内核中的程序执行正确并正确显示。主机代码调试没有问题。

如果我将相同的断点设为有条件的,如本文所述:

使用nsight进行调试

我看不出调试器的行为有什么不同。断点上的条件似乎被忽略了,调试器在退出内核之前会在 5 或 6 个随机线程上中断。这些行为对我来说似乎都没有多大意义。我认为无条件断点应该在线程 0 或所有线程上中断。而且我认为条件断点应该只在它所依赖的线程上中断。我已经查看了所有的 NVIDIA 文档、stackoverflow 等,此时似乎已经用尽了我的选择。我想知道是否有其他人看到过类似的行为或可能有一些指示。

0 投票
1 回答
2132 浏览

cuda - CUDA 错误:MapSMtoCores 未定义 SM 3.5 未定义

我无法运行包含 CUDA 代码的 python 脚本。它告诉我更新我的 CUDA SDK,但我认为问题是读取 cuda C 文件而不是同名的 cuda C++ 文件。有人知道怎么修这个东西吗?

错误信息是:

我很确定我正在使用 cuda-5。要检查,根据这个,我需要

我没有root访问权限,所以我不得不

然而,这导致:

  • 许多形式的警告

../../common/inc/helper_cuda.h:246:12: warning: command line option ‘-Wimplicit’ is valid for C/ObjC but not for C++

../../common/inc/helper_cuda.h:246:12: warning: enumeration value ‘FOO’ not handled in switch

  • 表单的许多错误

../../common/inc/helper_cuda.h:252:14: error: ‘FOO’ was not declared in this scope

我看了一下find -namehelper_cuda.h。它有 2 个版本: ./C/common/inc/helper_cuda.h,包含错误中提到的所有变量的 cuda C 文件的标头, ./CUDALibraries/common/inc/helper_cuda.h的 cuda C++ 文件的头文件。

我也看过了grep "is undefined (please update to the latest SDK)!" -r ~/CUDA_SDK了哪个文件可能正在输出导致这一切的错误(在顶部提到),并且引人注目的是,helper_cuda.h 是仅有的两个文件之一。

如果我可以读取 C++ helper_cuda.h 而不是 C helper_cuda.h,我认为我赢了。我应该使用环境变量吗?

0 投票
1 回答
2256 浏览

cuda - Cuda-gdb 没有在内核内的断点处停止

在编译时添加“-arch sm_20”标志之前,Cuda-gdb 遵守了我设置的所有断点。我必须添加它以避免抛出错误:'atomicAdd is undefined'(如此处所指出)。这是我当前编译代码的语句:

当我在内核中设置断点时,cuda-gdb 在内核的最后一行停止一次,然后程序继续。

但正如我所说,如果我删除“atomicAdd()”调用和标志“-arch sm_20”,这虽然会使我的代码不正确,但现在 cuda-gdb 会在我指定的断点处停止。请告诉我这种行为的原因。
我在 Tesla M2070(计算能力 = 2.0)上使用 CUDA 5.5。
谢谢!

0 投票
2 回答
4196 浏览

cuda - cudaGetLastError 返回 (0xb)

我正在尝试解决 CUDA 运行时错误。cuda-gdb 报告的调试信息(开启 cuda-memcheck):

我检查了块、网格尺寸和正在使用的动态共享内存的大小,它们远低于限制。请告诉我 (0xb) 错误类型代表什么,我在 cuda 文档中没有找到它。另外,请告诉我有关如何解决此问题的任何建议?
设备:Kepler K20 (CC=3.5) 和 CUDA 5.5
代码太大,无法在此处粘贴。