如何在远程服务器上调试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.04
、CUDA 8.0.61
、nvcc v8.0.61
、Tesla 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设置页面是这样的:
到目前为止,我已经尝试了以下方法:
- 重新安装Nsight Eclipse Edition,并在服务器上的命令行中调试样例代码,运行正常
- 有些论坛提到应该打开2345端口,AFAIK,只要请求时端口不被占用就可以使用这个端口,但是,我不确定。
- 考虑到服务器对访问者的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
,这是由于不同的条件。
我想调试远程服务器上的CUDA代码,我的设备如下:
PC: Ubuntu 16.04
,CUDA 8.0.61
,nvcc v8.0.61
,Geforce MX150 and integrated graphics
服务器:Ubuntu 14.04
、CUDA 8.0.61
、nvcc v8.0.61
、Tesla 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设置页面是这样的:
到目前为止,我已经尝试了以下方法:
- 重新安装Nsight Eclipse Edition,并在服务器上的命令行中调试样例代码,运行正常
- 有些论坛提到应该打开2345端口,AFAIK,只要请求时端口不被占用就可以使用这个端口,但是,我不确定。
- 考虑到服务器对访问者的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
,这是由于不同的条件。