问题标签 [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 - 如何在 Linux 上使用 Nsight 5.5 进行远程调试?
免责声明:我知道这个问题已经被问过很多次了,但在 Nsight 5.5 之前,答案只是“你不能”。
我正在尝试在 Ubuntu 上使用 Nsight 5.5 调试 CUDA 程序。远程机器也是带有 CUDA Toolkit 5.5 的 Ubuntu。
我使用“调试远程系统上的应用程序”在 NSight 中设置调试。每当我尝试运行应用程序时,我都会收到“无法在远程主机上启动 gdbserver”错误。
这是我在控制台上得到的:
两者gdbserver
都cuda-gdbserver
安装在两台机器上。
如果我 ssh 到远程主机,我可以/tmp/nsight-debug/flow
手动运行。
这里可能有什么问题?设置中是否缺少任何内容?
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
我不知道发生了什么以及如何解决这个问题,有没有人遇到过这种情况并且知道该怎么做?请告诉我!
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 版本测试了本地调试,并且效果很好。
debugging - cuda-gdb 远程调试错误
我有一个配备 2 个 Geforce 480GTX 卡的 CentOS 6.0 x64 服务器,我正在使用它来调试我的 cuda 程序。今天我尝试在我的笔记本上使用 cuda-gdb 来远程调试我的程序。所以我尝试这样:
我打开我的 bash shell 并使用 ssh 连接到服务器,然后进入程序所在的目录。
我通过键入以下内容启动 cuda-gdbserver:cuda-gdbserver :9999 ./a.out
之后我在 bash 上得到了这个:
进程 ./a.out 创建;PID = 4356
监听 9999 端口
看来 cuda-gdbserver 运行良好。
所以我打开了一个新的 bash shell,并决定使用 cuda-gdb 调试程序。首先我打开了cuda-gdb,现在shell是这样的:(cuda-gdb)
然后我尝试连接远程服务器:target remote 192.168.2.105:9999
其中 192.168.2.105 是我的服务器的 IP 地址
但是,令我失望的是,我从 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,我可以在我的服务器本地调试好。
那么,有人知道我需要做什么吗?真的让我困惑了很久(其实我很久以前就遇到过这个问题)。我要感谢任何提前回答我问题的人!
cuda - 传递给设备函数的共享内存地址仍然是共享内存吗?
假设我有这个__device__
功能:
在__global__
内核中我以这种方式使用它:
uarray
位于共享内存中的数组在哪里。
但是当我使用 cuda-gdb 查看内核中的地址时,我得到uarray
:__global__
在__device__
内核中我得到:
尽管出现错误,但程序运行正常(可能是 cuda-gdb 的一些限制)。
所以,我想知道:在__device__
内核内部,uarray
是共享了吗?我正在将数组从全局更改为共享内存,时间几乎相同(使用共享内存的时间会差一些)。
c++ - CUDA 常量内存错误
我正在尝试使用 CUDA 5.5 做一个具有恒定内存的示例代码。我有 2 个大小为 3000 的常量数组。我有另一个大小为 N 的全局数组 X。我想计算
这是代码。
我正在尝试在此代码上运行调试器以进行分析。事实证明,在复制到常量内存的行上,我使用调试器收到以下错误
有人可以帮我保持记忆吗
cuda - Nsight Eclipse 中的内核条件断点
我在安装了 2 个 M2050 卡的 SUSE Linux 机器上运行 CUDA 5.5,这两个卡都不用于运行 X11。我正在尝试通过使用 Nsight Eclipse 调试器专门仅使用设备 0 的内核。如果我在内核中设置(无条件)断点,调试器首先在块 0/线程 0 上中断,然后如果我继续执行,它将在不同块中看似随机的线程上再次在同一点中断 5 或 6 次,之前退出内核并继续下一个内核。内核中的程序执行正确并正确显示。主机代码调试没有问题。
如果我将相同的断点设为有条件的,如本文所述:
我看不出调试器的行为有什么不同。断点上的条件似乎被忽略了,调试器在退出内核之前会在 5 或 6 个随机线程上中断。这些行为对我来说似乎都没有多大意义。我认为无条件断点应该在线程 0 或所有线程上中断。而且我认为条件断点应该只在它所依赖的线程上中断。我已经查看了所有的 NVIDIA 文档、stackoverflow 等,此时似乎已经用尽了我的选择。我想知道是否有其他人看到过类似的行为或可能有一些指示。
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 -name
helper_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,我认为我赢了。我应该使用环境变量吗?
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。
谢谢!
cuda - cudaGetLastError 返回 (0xb)
我正在尝试解决 CUDA 运行时错误。cuda-gdb 报告的调试信息(开启 cuda-memcheck):
我检查了块、网格尺寸和正在使用的动态共享内存的大小,它们远低于限制。请告诉我 (0xb) 错误类型代表什么,我在 cuda 文档中没有找到它。另外,请告诉我有关如何解决此问题的任何建议?
设备:Kepler K20 (CC=3.5) 和 CUDA 5.5
代码太大,无法在此处粘贴。