[转]如何远程连接运行OpenGL/Cuda 等GPU程序
发现一篇神文,解决了困扰许久的远程桌面OpenGL/GPU 等问题。。。
原地址在这:http://www.tanglei.name/how-to-run-gpu-programs-using-remote-connection/
有时候往往需要通过远程桌面连接进行coding工作,像一般的比如web之类的可能不需要GPU等支持的coding工作直接用windows远程桌面连接编码然后debug即可,而一些需要依靠显卡支持的工作如渲染、cuda等GPU操作时,往往远程桌面连接debug会失败。因为当用远程桌面连接电脑B时,比如本来电脑B是具有牛X显卡,驱动啥之类都没有问题,但此时用另外一台电脑A远程连接过去,在B上跑需要GPU支持的程序,如需要用到Opengl3.X的功能或者cuda,而此时B检测到是远程连接过来的,就不会给予相应的支持或者说没有相应的驱动能够使得远程连接过来的也能支持。啊。。晕了。意思就是说可能此时只能驱动OpenGL1.X,程序就会crash掉。下面用个实例来说吧。
比如我在电脑B上有一段代码时检测GPU 对CUDA的支持。
此时我直接通过电脑A通过windows自带的远程桌面连接工具练过去,运行。
![]()
得到这样的结果,就是没有cuda相应的支持,而实际上,我直接通过本地执行时能够正常运行的。现在的问题是采取怎样的方式能够正常跑电脑B上的程序,就像自己本人在电脑B所在地本地操控电脑B一样。
开始设想通过QQ的远程控制能否解决?因为感觉QQ远程控制貌似就是传输图片,然后将在电脑A对电脑B传输过来的图片做相应鼠标等操作映射到电脑B上。于是有了如下的解决方案:电脑A、B各登陆1个QQ,QQ A 和QQ B,然后远程桌面连接过去,通过在电脑B上用B QQ申请 QQ A进行远程协助。然后断掉连接、QQ A上接受申请,然后就可以通过QQ的远程桌面控制电脑B了,然后再运行程序。结果……结果失败~ 意思就是这样还是解决不了问题。实验证明,不用远程连接,而直接让人在电脑B上操作,申请电脑A这边的远程协助,这样是可以的。但不能每次都得先让其他人在电脑B上帮忙申请下远程协助吧。
最后在@大鑫的帮助下得到解决。
方法:
1、电脑A用windows自带远程桌面连接到电脑B,在电脑B上登陆QQ B,电脑A这边已经登陆了QQ A。
2、在电脑B上通过QQ B申请远程协助QQ A。
![]()
3、电脑A上 QQ A接受邀请。
![]()
此时已经建立好连接了。并也能通过QQ的远程协助控制电脑B了。
4、关键,在windows自带的远程桌面连接工具中通过在电脑B上运行如下脚本。没有的话,copy一个过去。
脚本在这:
脚本名:login-as-local-user.cmd
脚本内容(只有一句):
for%%i in (0123456789)do (tscon %%i/dest:console )
![]()
注意得以管理员身份运行。运行后,此时通过windows远程连接的会话会断开。现在只能通过QQ的远程协助操作电脑B了。
5、下面就是见证奇迹的时刻了。
![]()
现在能够检测到电脑B上的显卡对cuda 支持。
以上演示是得到了显卡对Cuda支持的驱动,相应的OpenGL也一样。其实现在操作就跟在本地实际操作电脑B一样了。
原理:
个人认为,以上关键步骤中的那个脚本(那个脚本是个循环试探,其实可以在电脑B上通过命令行query session得到在线的准确的会话,然后运行那个命令得到准确的session切换)中有个应用程序tscon,其相应的语法用法可以参考这里。其实QQ远程协助也是用到了windows底层的RDP协议。从电脑A通过远程桌面通过QQ
B申请QQ A远程协助,此时被控电脑B有两个session,即一个QQ远程协助的另外一个windows远程桌面的。此时运行tscon是将session切换到QQ桌面的那个session。而这个session就是被控那台电脑的。因此gpu opengl啥驱动之类的就以为是本地执行的。因此才得以成功。
其实这也是个人猜测而已啦,实际上什么原理也还不清楚呢。能解决这个问题就好。也希望懂的童鞋给予解释下。另外有同学指出一些团队协助类的软件也能支持,没试过不清楚。
[转]如何远程连接运行OpenGL/Cuda 等GPU程序的更多相关文章
- windows下使用xShell远程连接virtualbox里面的linux
第一阶段:基本安装 安装virtual box 在virtualbox里面安装xubuntu:是ubuntu+xfce桌面环境的一个linux的发行版本 在windows下安装Xmanager Ent ...
- UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试
UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试 下载参考: 百度网盘:https://pan.baidu.com/s/15g-oXT ...
- Oracle-本地连接没问题,远程连接有问题解决方式
1. 问题 我的环境是oracle11gr2,本地用plsql还是toad连接都没有不论什么问题,而用别的机器远程连接就提示 无监听程序等错误. 2. 原因 oracle安装路径 --- 比如: F ...
- Docker运行MongoDB及Redis及ssh端口映射远程连接
Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...
- 运行MySQL远程连接
方法一:修改MySQL自带的“mysql”数据库中的“USER”表 USE mysql; UPDATE USER SET HOST='%' WHERE USER='root'; SELECT * FR ...
- Windows下pycharm远程连接服务器调试-tensorflow无法加载问题
最近打算在win系统下使用pycharm开发程序,并远程连接服务器调试程序,其中在import tensorflow时报错如图所示(在远程服务器中执行程序正常): 直观错误为: ImportError ...
- Windows远程连接Linux
目录 xrdp方式 vnc方式 xrdp方式 ----------------------------------------------------------------------------- ...
- 虚拟机主机能互相ping通,但是无法远程连接
首先将虚拟机关机,找到Edit virtual machine Settings(编辑虚拟机设置)
- 全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)
注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作 ...
随机推荐
- C# http监听之Nancy.net
通过winform或者是控制台应用程序监听http请求,之前使用的是微软的HttpListener,参考https://www.cnblogs.com/duanjt/p/5566336.html 然后 ...
- 十分钟带你理解Kubernetes核心概念
什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...
- 雷林鹏分享:C# 可空类型(Nullable)
C# 可空类型(Nullable) C# 可空类型(Nullable) C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 nu ...
- Linux上rsync配置
一.服务器端配置1.rsyncd.conf文件说明uid = rsync #用户,用来控制用户访问模块目录的读写权限gid = rsync #组,用来控制组访问模块目录的读写权限use ...
- 常用音频协议介绍&&有关音频编码的知识与技术参数
(转载)常用音频协议介绍 会议电视常用音频协议介绍及对比白皮书 一.数字化音频原理:声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线.通常人耳可以听到的频率在20 ...
- Agile敏捷开发Planning Poker简介
关注嘉为科技,获取运维新知 一.为什么不用“人天”? 传统的IT项目,尤其是软件开发项目,往往使用“人天”来作为工作量评估的量词.甚至是代表一种评估方式.在软件项目开发经典著作<人月神话&g ...
- 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug
0.11内核rd_load@ramdisk.c中memcpy函数好像有bug,如:#define memcpy(dst,src,n) \ __asm__("cld;rep;movsl& ...
- hdu-3366 Passage 概率DP 读懂就能AC hhh
http://acm.split.hdu.edu.cn/showproblem.php?pid=3366 读题的时候没发现这个P Q 1-P-Q是全集的划分,以为是独立事件,写错了转移方程233 先贪 ...
- HTML页面加载完毕后运行的js
Js方法:<script type=”text/javascript”> window.onload=function (){ var userName=”xiaoming”; alert ...
- DVWA-CSRF
Low等级 image 抓包 image 正常跳转 image image 在这里我们把密码改为qwer image image image image image ...