本家様 http://www.virtualgl.org/
Linux-PC環境において、X描画(2D/3D)を担当するPC側のXサーバ描画をより高速にするために、
大本のXクライアント側のリソースを使い描画を補助して、その結果をPC側に流して、PC側のX描画(2D/3D)の負担/未対応を減らす。

重い処理はLinux側のグラフィックカードに任せるって感じで、その担当が「VirtualGL」となる.
VirtualGLの結果をPC側で受ける方法に2つ方法がある。

  • VirtualGLクライアントをPCにインストール(VGL Transport)
    macOSのXサーバの「XQuartz」に対応
    windowsPCではXサーバの「OpenText Exceed」「Cygwin/X」に対応 共に「MIT-SHM extension」機能があるのが重要. Xmingは未対応...
  • VirtualGLと中継するVNCをサーバに入れて、このVNCサーバ経由でPCに接続する(X11 Transport)
    汎用的に使用可能であるが、接続まで手間が掛かる 仮想フレームバッファっぽいのだが、、、、

VirtualGLサーバをインストールする

*「サーバ」と「クライアント」、「Xサーバ」と「Xクライアント」の違いには要注意

サーバ側には最低限のX環境を構築して、一応X環境で動作を確認しておきます。nvidia/amdのカードで描画できるかなど
ここではnvidiaのQuadro K600を使ってます. Xがこのnvidiaカードを使用しています.

[root@e ~]# nvidia-smi
Tue Jul 18 23:39:04 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.51                 Driver Version: 375.51                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro K600         Off  | 0000:01:00.0     Off |                  N/A |
| 25%   51C    P8    N/A /  N/A |     14MiB /   979MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0       694    G   /usr/bin/Xorg                                    8MiB |
|    0       955    G   gnome-shell                                      5MiB |
+-----------------------------------------------------------------------------+
[root@e ~]#

次に、一旦シングルモードにして再起動して、「VirtualGL」をインストールします
入手先はhttps://sourceforge.net/projects/virtualgl/で「Files」から「VirtualGL-2.5.2.x86_64.rpm」を入手した

[root@e ~]# systemctl set-default multi-user
[root@e ~]# reboot
 
 :
 
[root@e ~]# yum localinstall ./VirtualGL-2.5.2.x86_64.rpm

インストール後に設定を行う.

[root@e ~]# /opt/VirtualGL/bin/vglserver_config
 
1) Configure server for use with VirtualGL
2) Unconfigure server for use with VirtualGL
X) Exit
 
Choose:
1          <---- [1]を入力してリターン
 
Restrict 3D X server access to vglusers group (recommended)?
[Y/n]
n          <---- [n]を入力してリターン
 
Restrict framebuffer device access to vglusers group (recommended)?
[Y/n]
n          <---- [n]を入力してリターン
 
Disable XTEST extension (recommended)?
[Y/n]
Y          <---- [Y]を入力してリターン
 :
(中略
 :
1) Configure server for use with VirtualGL
2) Unconfigure server for use with VirtualGL
X) Exit
 
Choose:
X          <---- [X]を入力してリターン
 
[root@e ~]#

これで設定は完了である。
*SELinuxは外した方がいいかも。あとfirewalldは停止の方向で

次に、Xをgraphicalモードに戻して再起動します

[root@e ~]# systemctl set-default graphical
[root@e ~]# reboot

以上でVirtualGLサーバのインストールと設定は完了


接続方法:VGL Transport、MIT-SHM extension機能を使用するなら

前述の通り、MIT-SHM extensionな機能を有するPC-Xサーバで利用可能.
macOSのxquartz経由で試してみる. xquartz向けのVirtualGLはhttps://sourceforge.net/projects/virtualgl/の「Files」から「VirtualGL-2.5.2.dmg」で、これをmacOSにインストールする. XQuartzはインストール済みとします

ただし、ダウンロードした「VirtualGL-2.5.2.dmg」をダブルクリックすると下記メッセージが表示されるかも.
2017y07m19d_134023421.png
この場合、「システム環境設定」の「セキュリティーとプライバシー」画面へ行くと、
下記画面のように「"VirtualGL.pkg"は開発元を確認できないため、開けませんでした。」とあるが、その右隣の「そのまま開く」ボタンを押下して、VirtualGLのインストールを進めます。
2017y07m19d_134319123.png

するとVirtualGLのインストーラーが起動します。そのまま続けてインストールを完了させます
2017y07m19d_134612564.png

これでVirtualGLに関するアプリが/opt/VirtualGL配下にインストールされます.
っで下準備はこれで完了. 次に実際にopenglアプリを動かしてみます
http://www.virtualgl.org/vgldoc/2_2_1/に寄れば、XQuartzのターミナルを起動させ(単にXQuartzを起動すれば端末も起動します)、そこからVirtualGLのコマンドvglconnectを使ってVirtualGLサーバにアクセスします. 別にterminal.appでも出来ます

bash-3.2$ /opt/VirtualGL/bin/vglconnect illya@e
illya@e's password:
 
[illya@e ~]$

そしてこのセッションの中でVirtualGLサーバにインストールした VirtualGL コマンドで openGLアプリを起動します

[illya@e ~]$ /opt/VirtualGL/bin/vglrun \
     /usr/local/cuda/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release/particles

すると新たな画面が表示され particles アプリが動きます
2017y07m19d_135952632.png

windowsでcygwin/Xを使った場合 cygwin#o7698e63


接続方法:X11 Transport、VNCで繋ぎ通すなら

前述の通り、見た目には「仮想フレームバッファ」で実際もそんなもんかな

Linuxにvncサーバをインストールします

[root@e ~]# yum install http://downloads.sourceforge.net/project/turbovnc/2.1/turbovnc-2.1.x86_64.rpm

そして、vncで接続したいユーザでアクセスして、vncserverを起動します
もし初回の起動ならパスワードの定義が求められます。

[illya@e ~]$ /opt/TurboVNC/bin/vncserver -depth 24
 
You will require a password to access your desktops.
 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
 
Desktop 'TurboVNC: e.sybyl.local:1 (illya)' started on display e.sybyl.local:1
 
Creating default startup script /home/illya/.vnc/xstartup.turbovnc
Starting applications specified in /home/illya/.vnc/xstartup.turbovnc
Log file is /home/illya/.vnc/e.sybyl.local:1.log
 
[illya@e ~]$

これでユーザ「illya」の「今」のアクセスは「e.sybyl.local:1」であると判明します。
事前の他のユーザでvncserverが起動されていれば、ディスプレイ番号が変わって「e.sybyl.local:2」とかになります。

vncserverを停止するには

[illya@e ~]$ /opt/TurboVNC/bin/vncserver -kill :1
Killing Xvnc process ID 2681
[illya@e ~]$

とします。-kill の以降はディスプレイ番号です

っで、まずはwindowsPCからアクセスしてみます。windowsPCにもTurboVNCをインストールして「e:1」へアクセスしてみます
2017y07m19d_002712681.png
パスワードが問われ、先ほど定義したパスワードを入力します。
2017y07m19d_002854155.png

っが、下図のような画面が表示されます。
2017y07m19d_060850392.png
この画面は「e.sybyl.local:1」のVirtualGL画面のようで、これにOpenGLなアプリの画面を流し込みます

[illya@e ~]$ export DISPLAY=localhost.localdomain:1
[illya@e ~]$ /opt/VirtualGL/bin/vglclient -detach -force
 
[illya@e ~]$ export VGL_CLIENT=127.0.0.1
[illya@e ~]$ /opt/VirtualGL/bin/vglrun \
     /usr/local/cuda/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release/particles

最終行で実行すべきOpenGLなアプリをしていしてます。「particles」はNVIDIA_CUDA-8.0_Samplesのサンプルプログラムの一つです
2017y07m19d_121056552.png
他、「smokeParticles」とかも動きました。

[illya@e ~]$ cd /usr/local/cuda/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
[illya@e release]$ /opt/VirtualGL/bin/vglrun ./smokeParticles

2017y07m19d_121600605.png

ただ、、この方法は面倒...


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-07-19 (水) 21:30:20 (33d)