「VirtualGLでリモートのOpenGLアプリをぬるぬる動かす」の版間の差分
(→実行) |
(→サーバー側) |
||
(同じ利用者による、間の7版が非表示) | |||
行1: | 行1: | ||
* VirtualGLを使ってリモートのOpenGLアプリをぬるぬる動かす試み | * VirtualGLを使ってリモートのOpenGLアプリをぬるぬる動かす試み | ||
** https://virtualgl.org/About/Introduction | ** https://virtualgl.org/About/Introduction | ||
− | |||
== 実行環境 == | == 実行環境 == | ||
行25: | 行24: | ||
** [[VNCでリモートデスクトップ]]の2.1.1節を参照 | ** [[VNCでリモートデスクトップ]]の2.1.1節を参照 | ||
** また、公式の https://cdn.rawgit.com/VirtualGL/virtualgl/2.6.1/doc/index.html#hd005001 も参照 | ** また、公式の https://cdn.rawgit.com/VirtualGL/virtualgl/2.6.1/doc/index.html#hd005001 も参照 | ||
+ | * <b>セキュリティ云々の問題はさておき、インストール時のオプションでvglの使用をvglusersグループのみに限定するか?的なのをyesにすると、多分そのせいでdocker関係で色々辛いことが起こるので(追記参照)、noの方がいいかも。わかりませんが。</b> | ||
=== クライアント側 === | === クライアント側 === | ||
行32: | 行32: | ||
== 実行 == | == 実行 == | ||
クライアント側(Mac)で、新規ターミナルを起動。そこで、 | クライアント側(Mac)で、新規ターミナルを起動。そこで、 | ||
− | $ /opt/VirtualGL/bin/vglconnect <ユーザー名>@<サーバーipアドレス> | + | (client)$ /opt/VirtualGL/bin/vglconnect -s <ユーザー名>@<サーバーipアドレス> |
− | + | により、サーバーへsshログインする。 | |
− | + | このとき<span style="color:red">-sオプションをつけないとVGLの通信が暗号化されない</span>ので注意。 | |
− | + | ||
− | + | ||
− | + | 今回はサーバーが研究室のLANの外にあるため、暗号化している。暗号化の代償として、描画速度が遅くなる。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | (試しに一瞬だけ-sオプションを外して暗号化をなくして以下を実行すると、glxgearsの動きが目に見えて速くなった) | |
+ | |||
+ | 実験としてglxgearsを動かしてみる。 | ||
+ | (server)$ /opt/VirtualGL/bin/vglrun glxgears | ||
+ | -sによる暗号化の代償で、期待したほど速く動いてくれない。それでもvirtualglを使わない場合と比べればマシではある。 | ||
+ | |||
+ | 重めの3D OpenGLアプリ UCSF Chimeraを動かしてみた。 | ||
+ | (server)$ /opt/VirtualGL/bin/vglrun chimera | ||
+ | |||
+ | chimeraのコマンドラインで適当にpdbをfetchして描画してみる。 | ||
+ | (chimera)$ open 2zwh | ||
+ | |||
+ | [[File:vnc-draw2.png|500px]] | ||
+ | |||
+ | 嗚呼!割とぬるぬる動く!-sオプションのせいで遅くなりすぎるのではと心配したが、意外となんとかなった。 | ||
+ | |||
+ | さらに大きいものとして、EMD-6844とPDB-5yu8の組み合わせも描画してみた。 | ||
+ | |||
+ | [[File:vnc-draw.png|200px]] | ||
+ | |||
+ | transparencyを入れたままで動かすのは辛いところがあるが、transparencyを切ればこのサイズでもマップのダウンサンプリングなしでぐるぐる回せた。 | ||
+ | |||
+ | さらに、以下によりvglrunでbashを起動すると、そのbashターミナルの中で起動したOpenGLアプリは全てVirtualGLが描画を手伝ってくれ、描画が高速になる。 | ||
+ | (server)$ /opt/VirtualGL/bin/vglrun bash | ||
+ | (server)$ chimera | ||
+ | vglrunをいちいち打たなくてよくなり、楽。 | ||
+ | |||
+ | == 総括 == | ||
+ | 研究室のLAN外にあるサーバーでも、VirtualGLを使えば、重めの3D描画アプリもぬるぬる動かせることがわかりました。 | ||
+ | |||
+ | == 追記 == | ||
+ | === <u>LD_PRELOAD関係のエラーが出る件への対処</u> === | ||
+ | 2019/5/14 | ||
+ | |||
+ | sudoを使うとこんなエラーが出る様になった。 | ||
+ | ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. | ||
+ | ERROR: ld.so: object 'libvglfaker.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. | ||
+ | |||
+ | VirtualGL関係のエラーの様。以下リンクの方法に従って対処してみる。<br/> | ||
+ | [https://www.linuxquestions.org/questions/linux-desktop-74/%27libdlfaker-so%27-from-ld_preload-cannot-be-preloaded-4175614572/ <nowiki>[SOLVED]</nowiki> 'libdlfaker.so' from LD_PRELOAD cannot be preloaded] | ||
+ | |||
+ | 現状のLD_PRELOAD環境変数は以下のようになっている。 | ||
+ | $ echo $LD_PRELOAD | ||
+ | libdlfaker.so:libvglfaker.so | ||
+ | |||
+ | これをフルパス指定に変更する。libdlfaker.soおよびlibvglfaker.soは/usr/lib/以下に見つかった(それっぽい場所をlsで探し回った)ので、$HOME/.profileに下記行を追加。 | ||
+ | # For VirtualGL | ||
+ | export LD_PRELOAD=/usr/lib/libdlfaker.so:/usr/lib/libvglfaker.so:$LD_PRELOAD | ||
+ | |||
+ | ログアウトしてログインし直すと、エラーは解消された。 | ||
+ | |||
+ | |||
+ | === <u>VirtualGL入れたらNVIDIA Dockerが動かなくなったとき</u> === | ||
+ | 2019/5/14 | ||
+ | * VirtualGLを入れると/dev/nvidia-*の一部のファイルの所有者がroot:rootからroot:vglusersに書き換わるようです。 | ||
+ | * 対処策 : [[NVIDIA Dockerのインストール]] ページの下の方に書きました。 | ||
+ | |||
+ | |||
+ | === <u>VirtualGL入れたらDockerコンテナ内でnon-rootユーザーがGPU使えなくなりました</u>=== | ||
+ | 2019/5/18 | ||
+ | * NVIDIA Dockerが動かなくなるのと同じ理由で動かなくなりました | ||
+ | * 対処策:[[Dockerトラブルシューティング]]のどこか |
2019年5月18日 (土) 10:21時点における最新版
- VirtualGLを使ってリモートのOpenGLアプリをぬるぬる動かす試み
目次
実行環境
サーバー
Ubuntu 16.04.6 LTS
- 3.6 GHz Intel Xeon E5-1650
- 64 GB 2133 MHz DDR4
- NVIDIA GeForce GTX 1080 8 GB x 4台
- Driverバージョン 418.74
- CUDAバージョン 10.1
クライアント
macOS Mojave 10.14.4
- Mac mini (Late 2012)
- 2.3 GHz Intel Core i7
- 16 GB 1600 MHz DDR3
- Intel HD Graphics 4000 1536 MB
- XQuartx 2.7.11
インストール
サーバー側
- VirtualGL 2.6.1(virtualgl_2.6.1_amd64.deb)をインストール
- VNCでリモートデスクトップの2.1.1節を参照
- また、公式の https://cdn.rawgit.com/VirtualGL/virtualgl/2.6.1/doc/index.html#hd005001 も参照
- セキュリティ云々の問題はさておき、インストール時のオプションでvglの使用をvglusersグループのみに限定するか?的なのをyesにすると、多分そのせいでdocker関係で色々辛いことが起こるので(追記参照)、noの方がいいかも。わかりませんが。
クライアント側
- VirtualGL 2.6.1(VirtualGL-2.6.1.dmg)をインストール
実行
クライアント側(Mac)で、新規ターミナルを起動。そこで、
(client)$ /opt/VirtualGL/bin/vglconnect -s <ユーザー名>@<サーバーipアドレス>
により、サーバーへsshログインする。
このとき-sオプションをつけないとVGLの通信が暗号化されないので注意。
今回はサーバーが研究室のLANの外にあるため、暗号化している。暗号化の代償として、描画速度が遅くなる。
(試しに一瞬だけ-sオプションを外して暗号化をなくして以下を実行すると、glxgearsの動きが目に見えて速くなった)
実験としてglxgearsを動かしてみる。
(server)$ /opt/VirtualGL/bin/vglrun glxgears
-sによる暗号化の代償で、期待したほど速く動いてくれない。それでもvirtualglを使わない場合と比べればマシではある。
重めの3D OpenGLアプリ UCSF Chimeraを動かしてみた。
(server)$ /opt/VirtualGL/bin/vglrun chimera
chimeraのコマンドラインで適当にpdbをfetchして描画してみる。
(chimera)$ open 2zwh
嗚呼!割とぬるぬる動く!-sオプションのせいで遅くなりすぎるのではと心配したが、意外となんとかなった。
さらに大きいものとして、EMD-6844とPDB-5yu8の組み合わせも描画してみた。
transparencyを入れたままで動かすのは辛いところがあるが、transparencyを切ればこのサイズでもマップのダウンサンプリングなしでぐるぐる回せた。
さらに、以下によりvglrunでbashを起動すると、そのbashターミナルの中で起動したOpenGLアプリは全てVirtualGLが描画を手伝ってくれ、描画が高速になる。
(server)$ /opt/VirtualGL/bin/vglrun bash (server)$ chimera
vglrunをいちいち打たなくてよくなり、楽。
総括
研究室のLAN外にあるサーバーでも、VirtualGLを使えば、重めの3D描画アプリもぬるぬる動かせることがわかりました。
追記
LD_PRELOAD関係のエラーが出る件への対処
2019/5/14
sudoを使うとこんなエラーが出る様になった。
ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. ERROR: ld.so: object 'libvglfaker.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
VirtualGL関係のエラーの様。以下リンクの方法に従って対処してみる。
[SOLVED] 'libdlfaker.so' from LD_PRELOAD cannot be preloaded
現状のLD_PRELOAD環境変数は以下のようになっている。
$ echo $LD_PRELOAD libdlfaker.so:libvglfaker.so
これをフルパス指定に変更する。libdlfaker.soおよびlibvglfaker.soは/usr/lib/以下に見つかった(それっぽい場所をlsで探し回った)ので、$HOME/.profileに下記行を追加。
# For VirtualGL export LD_PRELOAD=/usr/lib/libdlfaker.so:/usr/lib/libvglfaker.so:$LD_PRELOAD
ログアウトしてログインし直すと、エラーは解消された。
VirtualGL入れたらNVIDIA Dockerが動かなくなったとき
2019/5/14
- VirtualGLを入れると/dev/nvidia-*の一部のファイルの所有者がroot:rootからroot:vglusersに書き換わるようです。
- 対処策 : NVIDIA Dockerのインストール ページの下の方に書きました。
VirtualGL入れたらDockerコンテナ内でnon-rootユーザーがGPU使えなくなりました
2019/5/18
- NVIDIA Dockerが動かなくなるのと同じ理由で動かなくなりました
- 対処策:Dockerトラブルシューティングのどこか