如何在远程服务器上调试CUDA代码?

How to Debug CUDA code on a remote server?

我想调试远程服务器上的CUDA代码,我的设备如下:

PC: Ubuntu 16.04,CUDA 8.0.61,nvcc v8.0.61,Geforce MX150 and integrated graphics

服务器:Ubuntu 14.04CUDA 8.0.61nvcc v8.0.61Tesla P100-PCIE*2

我已经在我的电脑上安装了Nsight Eclipse Edition 7.5,我想要的是使用远程调试功能,我可以在我的电脑和远程上使用可视化调试window gdbserver,但是我遇到了一些问题。

当我配置远程调试以尝试连接到远程服务器时,Connection timed out return 来自连接。

不知道是不是端口的问题。当我登录到服务器时,它看起来像这样:

SSH -P 50034 username@xxx.xxx.xxx.xxx

在设置连接的时候,发现好像使用了2345端口,所以不知道有没有conflict.The设置页面是这样的:

到目前为止,我已经尝试了以下方法:

  1. 重新安装Nsight Eclipse Edition,并在服务器上的命令行中调试样例代码,运行正常
  2. 有些论坛提到应该打开2345端口,AFAIK,只要请求时端口不被占用就可以使用这个端口,但是,我不确定。
  3. 考虑到服务器对访问者的IP地址有一定的限制,所以尝试了几次换网,最后都失败了。

有什么想法吗?

这个问题终于解决了,松了一口气

由于我的服务器在集群中,因此端口已映射。比如连接服务器时的命令,端口id要附加(即ssh -p 50034 uesrname@xxx.xxx.xxx.xxx),所以nsight eclipse版的2345端口(默认)访问服务器时,不识别该端口,则给定超时延迟,所以我把2345端口映射到服务器的2345端口,映射大致如下图:

-A PREROUTING -d xxx.xxx.xxx.xxx -p tcp -m tcp --dport 2345 -j DNAT --to-destination xxx.xxx.xxx.xxx:2345

第一个xxx.xxx.xxx.xxx是服务器的IP地址,最后一个是集群中你的服务器的真实地址,比如11.11.11.24,这是由于不同的条件。