iT邦幫忙

0

該如何讓遠端桌面(RDP)支援顯卡openGL

我在AWS啟用含GPU的EC2想要用來算粒子
但實測下來發現不如自己電腦來得有效率汗
後來爬文發現因為微軟的RDP不支援遠端的顯卡..
AWS的文件也說明使用像TeamViewer的工具才行.
但用TeamViewer實測後發現只是共用遠端桌面而已.
RDP一樣要一直開著.也無法使用openGL落寞
不知道是否有哪位大大有解決方案呢?
在此先謝過了~~謝謝

小成 iT邦高手 10 級 ‧ 2015-05-21 15:50:47 檢舉
empyrean提到:
但用TeamViewer實測後發現只是共用遠端桌面而已.
RDP一樣要一直開著.也無法使用openGL


你的意思是在RDP連線中開TEAMVIEWER?
你嘗試把 TEAMVIEWER 安裝成 SERVICE,登出遠端桌面,在完全沒有連線的狀況下再用 TEAMVIEWER 連連看
empyrean iT邦新手 1 級 ‧ 2015-05-21 19:42:27 檢舉
依照大大的做法是可成功的~
沒注意到可安裝成service
感謝大大協助~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

19
Ray
iT邦大神 1 級 ‧ 2015-05-21 16:35:04
最佳解答

你可能要先弄清楚: 是你的數據資料需要靠 GPU 運算? 還是你的顯示方式需要靠 GPU 運算?

AWS 的 G2.2xlarge Instance 至少有 8 core Xeon E5-2670 + 1x 4GB 的 NVIDIA GPU (含 1,536 CUDA Core), 除非你自己的實體電腦硬體超過這個規格, 否則不太可能比你的電腦慢.

G2.8xlarge 甚至可以到 32 core Xeon + 4x NVIDAI GPU, 這個如果你自己組硬體的話, 恐怕要超過 20 萬才組得起來.

資料要給 GPU 運算的過程, 會有幾個階段:
資料輸入 > 數值運算 > 資料輸出 > 畫面呈現
我任為在「數值運算」這個階段, AWS 有 9 成的機率可以勝過你的電腦, 但是因為他遠在雲端, 所以其他三個項目: 資料輸入/資料輸出/畫面呈現 的完成速度, 是否足以匹配 AWS 數值運算的高速產出結果? 這點我就沒辦法確定.

回到 RDP 這個問題, RDP 負責處理「畫面呈現」的部分, 不幸的是, RDP 是個對圖形處理非常沒有效率的通訊協定, 即使你的 CPU/GPU 拚老命用最高速算完數值, 但當數值被畫到螢幕上去的時候, 馬上被 RDP 的龜速給拖慢下來了. 這不需要複雜的測試, 只需簡單從 RDP 上去播放 1920x1080 的視訊就知道結果有多差了.

第二點, 你在 RDP 內用了 OpenGL.

OpenGL 有個特性, 他可以用 Client-Server 的方式運作, 也就是運算端和顯示端可以是跨網路的不同的電腦. 如果你先 RDP 進去 AWS, 然後啟動你的程式, 當他要輸出 OpenGL 的時候, 他會把指令丟回到你的電腦上去運算, 這樣你不但用不到 AWS 上面的 GPU, 同時還耗費網路傳輸的時間, 把資料傳回到你這台比較慢的電腦, 用他的能力去運算 OpenGL 指令之後再輸出到畫面上, 這樣當然比你原來的電腦還慢.

這也是為何用 Teamviewer 可以解此問題, 因為 Teamviewer 不會搶走 OpenGL 的指令.
但是你的 Teamviwer 必須跑在 Console Session, 不能跑在 RDP Session, 否則結果還是一樣.

正確的做法應該是:
先設法叫 AWS 啟動你的程式, 此時因為沒有 RDP 的 Session 存在, 他就會把 OpenGL 指令丟給自己運算, 想當然會用到高速的 GPU, 然後你再 RDP 進去已經啟動好的程式, 此時 OpenGL 不會被你本地的電腦給搶走, 他才能真正用到 AWS 上面的 GPU 運算.

這裡有一篇類似的狀況, 雖然不是跑 AWS, 他是用一台高階的 Server 想要跑 OpenGL 運算, 結果每次畫面都跑回本地電腦來造成速度下降. 後來人家教他用上面的方法去啟動, 就不會有問題:
OpenGL and Remote Desktop

但是這類的問題並非都是用同樣的方法去解, Windows 還有 RemoteFX 可以用, Linux 也有 Xwindows 是 Client-Server 架構, 遠端運算有很多架構上的問題要先規劃好, 否則你會卡在某個環節把整體速度拉低下來而不自知. 如果您的專業領域不是高效能運算(HPC)的話, 建議直接找一位懂得高速運算的人協助規劃好架構, 只要使用他的架構就可以, 不用這樣辛苦地自己找問題還要想破頭, 你才能專注在粒子運算的本業上.

看更多先前的回應...收起先前的回應...
李大瑋 iT邦好手 1 級 ‧ 2015-05-21 16:49:08 檢舉

光看完就覺得厲害
打完以上專業論述的果然是大神...
我先去睡個覺先...........

外獅佬 iT邦大師 1 級 ‧ 2015-05-21 16:58:59 檢舉

筆記拍手讚

簽名筆記拍手

empyrean iT邦新手 1 級 ‧ 2015-05-21 19:45:26 檢舉

我是數據資料需要靠GPU運算

先設法叫 AWS 啟動你的程式, 此時因為沒有 RDP 的 Session 存在, 他就會把 OpenGL 指令丟給自己運算, 想當然會用到高速的 GPU, 然後你再 RDP 進去已經啟動好的程式, 此時 OpenGL 不會被你本地的電腦給搶走, 他才能真正用到 AWS 上面的 GPU 運算.

感謝大大簡單白話的說出重點~
目前是可正常用的~
謝謝

我要發表回答

立即登入回答