#author("2025-08-14T20:50:23+00:00","default:sysosa","sysosa")
#author("2025-08-14T20:52:51+00:00","default:sysosa","sysosa")
チュートリアルで「DynaMight flexibility」から「Visualising the deformations」を実施すると下記のような napariの画面が表示される
&ref(2025y08m15d_033002934.png,nolink,70%);
リモートアクセスにて画面真ん中の像を回転させると...重い.

この描画速度を向上させたい.

利用シーンとして
-計算機に繋がったモニター越しで使う
描画は早いでしょう. もっと高速に描画させたいならGPUにモニターを繋げ、BIOS設定で「off-board VGA表示を優先」とかにすれば最速かなと.
nvidiaドライバのインストール時に nvidia ドライバー由来のopenglライブラリを入れることに留意. 
nvidiaドライバインストール時に「--disable-nouveau --no-opengl-files --no-libglx-indirect」を付けない.
-リモートアクセスで使う
VirtualGL を有効にする
-ジョブ管理ノード使用下でログインノード[GPU搭載無し]で使用する
計算ノードに VirtualGL を載せて使用する.

以上経路としては上記3つ. 1つめのコンソール使用は説明を省く. 2つ目、3つ目は[[VirtualGL]], [[VirtualGL/memo]]にも記載しているが再度ここで説明します.

***VirtualGLのインストール [#n0d717cf]
状況確認  計算機は multi-user モードなので「nvidia-smi」としても「No running processes found」と表示される
#code(nonumber){{
[root@rockylinux9 ~]# systemctl get-default
multi-user.target

[root@rockylinux9 ~]# nvidia-smi
 :
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
[root@rockylinux9 ~]# glxinfo|grep -i opengl
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA RTX A2000/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 570.181
OpenGL core profile shading language version string: 4.60 NVIDIA
 :
[root@rockylinux9 ~]#
}}
まずは VirtualGL と turbovnc をインストールします.

#code(nonumber){{
[root@rockylinux9 ~]# dnf install https://github.com/TurboVNC/turbovnc/releases/download/3.2/turbovnc-3.2.x86_64.rpm
[root@rockylinux9 ~]# dnf install https://github.com/VirtualGL/virtualgl/releases/download/3.1.3/VirtualGL-3.1.3.x86_64.rpm

[root@rockylinux9 ~]# lsmod |grep nvidia
nvidia_uvm           4026368  0
nvidia_drm            143360  0
nvidia_modeset       1728512  1 nvidia_drm
nvidia              11685888  2 nvidia_uvm,nvidia_modeset
video                  77824  1 nvidia_modeset
drm_ttm_helper         16384  4 bochs,drm_vram_helper,nvidia_drm
drm_kms_helper        266240  4 bochs,drm_vram_helper,drm_ttm_helper,nvidia_drm
drm                   811008  8 drm_kms_helper,bochs,drm_vram_helper,nvidia,drm_ttm_helper,nvidia_drm,ttm

[root@rockylinux9 ~]# rmmod nvidia_drm nvidia_uvm nvidia_modeset nvidia                                                 <-- 設定前にnvidia関係を外します
[root@rockylinux9 ~]# nvidia-xconfig --enable-all-gpus --allow-empty-initial-configuration --use-display-device=None    <-- /etc/X11/xorg.conf を作ります
[root@rockylinux9 ~]# /opt/VirtualGL/bin/vglserver_config --help

USAGE: /opt/VirtualGL/bin/vglserver_config [flags]

Flags (for unattended mode):
+glx/-config    Configure server for use with VirtualGL (GLX + EGL back ends)
-glx/-unconfig  Unconfigure server for use with VirtualGL (GLX + EGL back ends)
+egl            Configure server for use with VirtualGL (EGL back end only)
-egl            Unconfigure server for use with VirtualGL (EGL back end only)
-s              Restrict 3D X server access to vglusers group [default]
+s              Open 3D X server access to all users of this machine
-f              Restrict framebuffer device access to vglusers group [default]
+f              Open framebuffer device access to all users of this machine
-t              Disable XTEST extension [default]
+t              Enable XTEST extension

Flags (for both interactive and unattended modes):
-gid <g>  If vglusers group must be created, then set its group ID to <g>

[root@rockylinux9 ~]# /opt/VirtualGL/bin/vglserver_config +glx +s +f -t       <-- VirtualGLの設定
[root@rockylinux9 ~]# systemctl set-default graphical.target                  <-- graphical ログインに変更します
[root@rockylinux9 ~]# reboot
}}

VirtualGLを使いたいユーザでログインして
#code(nonumber){{
[saber@rockylinux9 ~]$ /opt/TurboVNC/bin/vncpasswd                          <-- パスワードの定義(初回だけ)
[saber@rockylinux9 ~]$ /opt/TurboVNC/bin/vncserver -vgl -wm gnome-classic
[saber@rockylinux9 ~]$ /opt/TurboVNC/bin/vncserver -list
 :
X DISPLAY #     PROCESS ID      NOVNC PROCESS ID
:1              2704
[saber@rockylinux9 ~]$
}}

windowsPC/macOSにインストールした 「TurboVNC viewer」を立ち上げて「rockylinux9:5901」にアクセスします.   &color(red){注意};「firewall-cmd」で5901/tcpに穴をあけてください. あるいはfirewalldを停止.
「vncpasswd」で定義したパスワードを入力します

これでリモートアクセスでもアクセスした計算機のGPUを使っての高速な描画を体験できます.

***メモ [#b418d3d1]
napariが動いたときの「nvidia-smi」は下記のようになります
#code(nonumber){{
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            1015      G   /usr/libexec/Xorg                        53MiB |  <-- /usr/libexec/Xorg 
|    0   N/A  N/A            1371      G   /usr/bin/gnome-shell                      3MiB |  <-- gdm の /usr/bin/gnome-shell
|    0   N/A  N/A            1871      G   /usr/bin/gnome-shell                    134MiB |  <-- ユーザの /usr/bin/gnome-shell
|    0   N/A  N/A            3638    C+G   ...-1/envs/relion-5.0/bin/python       1054MiB |  <-- ユーザの napari(DynaMight) 
+-----------------------------------------------------------------------------------------+
}}
像を動かすと当然GPUは働きますが、同時にCPUも働きます(threadsで). nvtopの画面から

仕組み的にネットワーク回線が太くないと無理. 1Gbps使えるなら十分.


***ログインノードにGPUをもってなく、GPUを利用するには計算ノードを使うしかない. [#j8bfc915]

[[VirtualGL/memo]]に示したように
-1. GPU を確保した インターラクティヴジョブ を発行します
インターラクティヴジョブで割り当てられた計算ノードのホスト名を調査
-2. windowsPC/macOSから ログインノードから ホスト名 までのSSHトンネルを掘る
-3. 「TurboVNC viewer」を起動して 接続先を localhost に回す

注意点:
計算ノードに  VirtualGL と turbovnc を事前にインストールする事.
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS