发现一篇神文,解决了困扰许久的远程桌面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程序的更多相关文章

  1. windows下使用xShell远程连接virtualbox里面的linux

    第一阶段:基本安装 安装virtual box 在virtualbox里面安装xubuntu:是ubuntu+xfce桌面环境的一个linux的发行版本 在windows下安装Xmanager Ent ...

  2. UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试

    UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试 下载参考: 百度网盘:https://pan.baidu.com/s/15g-oXT ...

  3. Oracle-本地连接没问题,远程连接有问题解决方式

    1. 问题 我的环境是oracle11gr2,本地用plsql还是toad连接都没有不论什么问题,而用别的机器远程连接就提示 无监听程序等错误. 2. 原因 oracle安装路径  --- 比如: F ...

  4. Docker运行MongoDB及Redis及ssh端口映射远程连接

    Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...

  5. 运行MySQL远程连接

    方法一:修改MySQL自带的“mysql”数据库中的“USER”表 USE mysql; UPDATE USER SET HOST='%' WHERE USER='root'; SELECT * FR ...

  6. Windows下pycharm远程连接服务器调试-tensorflow无法加载问题

    最近打算在win系统下使用pycharm开发程序,并远程连接服务器调试程序,其中在import tensorflow时报错如图所示(在远程服务器中执行程序正常): 直观错误为: ImportError ...

  7. Windows远程连接Linux

    目录 xrdp方式 vnc方式 xrdp方式 ----------------------------------------------------------------------------- ...

  8. 虚拟机主机能互相ping通,但是无法远程连接

    首先将虚拟机关机,找到Edit virtual machine Settings(编辑虚拟机设置)

  9. 全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)

    注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作 ...

随机推荐

  1. Sublime Text 安装插件时出现There are no packages available for installation解决步骤

    1.点击 ctrl+`打开控制台后,发现是因为http://packagecontrol.io/channel_v3.json 获取失败,下载v3.json(在百度云盘) 2.找到Sublime\Da ...

  2. 启动node程序报错:event.js:183 throw er; // unhandled 'error' event

    启动node程序时,报如下错误:

  3. 雷林鹏分享:XML 相关技术

    XML 相关技术 下面是一个 XML 技术的列表. XHTML (可扩展 HTML) 更严格更纯净的基于 XML 的 HTML 版本. XML DOM (XML 文档对象模型) 访问和操作 XML 的 ...

  4. 协方差分析 | ANCOVA (Analysis of Covariance)

    If you are worried about leaving out covariates you could regress out them first and analyse the res ...

  5. Elasticsearch-基础介绍及索引原理分析

    介绍 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 L ...

  6. (Gorails) activeStore模块,把一堆属性放在一个hash对象内。gem 'activerecord-typedstore'增强了store模块,更好用了

    https://api.rubyonrails.org/classes/ActiveRecord/Store.html https://gorails.com/episodes/preferences ...

  7. 【洛谷p1601】A+B Problem(高精)

    高精度加法的思路还是很简单容易理解的 A+B Problem(高精)[传送门] 洛谷算法标签: 附上代码(最近懒得一批) #include<iostream> #include<cs ...

  8. HDu4794 斐波那契循环节

    题意:Arnold变换把矩阵(x,y)变成((x+y)%n,(x+2*y)%n),问最小循环节 题解:仔细算前几项能看出是斐波那契数论modn,然后套个斐波那契循环节板子即可 //#pragma GC ...

  9. Spring boot(三)在Spring boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

  10. Leetcode 150

    class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> st; ;i < ...