並列可視化†
可視化ソフトウェアParaViewの並列可視化は、クライアント・サーバ方式により実現します。ここで、クライアント・サーバ方式とは、複数サーバで並列に処理した可視化結果を、クライアント側で閲覧する方式で、大規模なデータを高速に可視化したいときに適しています。
以下では、例として
- クライアント・サーバ:Windows 11 PC
- データ/レンダー・サーバ:Ubuntu 22.04 LTS
を使用した場合について、クライアント・サーバ方式の設定を説明します。
ParaViewのインストール†
クライアント・サーバ方式では、クライアント側とデータ/レンダー・サーバ側に、同一バージョンのParaViewをダウンロード・インストールする必要があります。
ParaViewのダウンロードサイトから、対応するプラットフォームの最新版をそれぞれ、ダウンロードしインストールします。
まず、クライアント側のWindowsサーバーに、ParaViewをインストールします。
下図のWindows版をダウンロードし、ダウンロードされたexeを実行することで、そのままインストールすることができます。
次に、データ/レンダー・サーバ側にLinux版のインストールを行います。
下図のLinux版をダウンロードし、適当な場所に展開します。
バージョンによるインストーラの違い†
ParaView 6.0以降では、Linux版のバイナリ構成が大きく変わりました。
| バージョン | Linux版の構成 |
|---|---|
| 5.13以前 | MPI版、osmesa-MPI版(ソフトウェアレンダリング専用)、egl-MPI版(GPUレンダリング専用)が個別に提供 |
| 6.0以降 | 統合バイナリ(MPI版のみ)に一本化。osmesa版・egl版の個別配布は廃止 |
ParaView 6.0以降では、レンダリングバックエンドを実行時に --opengl-window-backend オプションで切り替えます。
$ ./mpiexec -np 8 ./pvserver --opengl-window-backend OSMesa (ソフトウェアレンダリング) $ ./mpiexec -np 8 ./pvserver --opengl-window-backend EGL (GPUレンダリング)
環境変数 VTK_DEFAULT_OPENGL_WINDOW でも指定可能です。
なお、ParaView 5.13以前のosmesa-MPI版を使用する場合は、従来通り以下のコマンドで起動します。
$ ./mpiexec -np 8 ./pvserver --force-offscreen-rendering
インストール内容の確認†
展開後、ParaView-6.0.1-MPI-Linux-Python3.12-x86_64/bin の中身は以下の通りです。並列可視化に必要なファイルを確認してください。
| ファイル名 | 用途 | 並列可視化 |
|---|---|---|
| mpiexec | MPI並列起動コマンド | 必須 |
| pvserver | pvserver-realを起動するランチャー | 必須 |
| pvserver-real | 並列可視化サーバの本体バイナリ | 必須 |
| hydra_pmi_proxy | MPIプロセス管理 | 必須 |
| pvbatch | バッチ処理用(Pythonスクリプトの並列実行) | - |
| pvbatch-real | pvbatchの実体バイナリ | - |
| pvpython | Python対話型インターフェース | - |
| pvpython-real | pvpythonの実体バイナリ | - |
| pvdataserver | データサーバ(分離構成用) | - |
| pvdataserver-real | pvdataserverの実体バイナリ | - |
| pvrenderserver | レンダーサーバ(分離構成用) | - |
| pvrenderserver-real | pvrenderserverの実体バイナリ | - |
| paraview | ParaView GUI(Linux上でGUIを使う場合) | - |
| paraview-real | paraviewの実体バイナリ | - |
| paraview.conf | ParaView設定ファイル | - |
| qt.conf | Qt設定ファイル | - |
| ospray_mpi_worker | OSPRayレイトレーシング用ワーカー | - |
| collaboration_server | コラボレーション機能用サーバ | - |
| vrpn_server | VR入力デバイス用サーバ | - |
並列可視化(クライアント・サーバ方式)に最低限必要なのは、bin/内の mpiexec、pvserver、pvserver-real、hydra_pmi_proxy の4ファイルと、lib/ ディレクトリです。pvserverはランチャーとしてpvserver-realを呼び出し、mpiexecはhydra_pmi_proxyを使用してMPIプロセスを管理します。
なお、pvserverバイナリは $ORIGIN/../lib をライブラリ検索パス(RPATH)として使用しています。そのため、bin/ の1つ上の階層に lib/ が配置されている必要があります。
Pvserverの起動†
クライアント・サーバ方式を実現するためには、以下のようにして、データ/レンダー・サーバ上でpvserverを起動する必要があります。
1. データ/レンダー・サーバにインストールしたParaViewのbinフォルダに移動します。
$ cd (展開したパス) /ParaView-6.0.1-MPI-Linux-Python3.12-x86_64/bin
2. 並列するプロセス数を指定して、pvserverを以下のコマンドで起動します。以下は、-npオプションで、8 cpuで起動した例です。
$ ./mpiexec -np 8 ./pvserver --opengl-window-backend OSMesa
ParaView 5.13以前の場合:
$ ./mpiexec -np 8 ./pvserver --force-offscreen-rendering
3. 下記のようなログが表示されると、pvserverが正しく起動したことを意味します。
$ ./mpiexec -np 8 ./pvserver --opengl-window-backend OSMesa Waiting for client.. Connection URL: cs://everest.astea.rccm.co.jp:11111 Accepting connection(s): everest.astea.rccm.co.jp:11111
クライアント・サーバからデータ/レンダー・サーバへの接続†
次に、クライアント・サーバからデータ/レンダー・サーバへの接続する手順を説明します。
1. クライアント・サーバ(ここではWindowsマシン)でParaViewを起動します。ParaViewが起動しますと、下図のような画面が立ち上がります。
2. "Connect"アイコンをクリックしますと、"Choose Server Configuration"窓が起動します。
3. [Add Server」ボタンをクリックすると、"Edit Server Configuration"窓が起動します。
4. "Edit Server Configuration"のNameとHostにpvserverを起動しているサーバ名を入力し、「Configure」ボタンを押します。
注意:Hostに入力した名称が名前解決されず接続できない場合は、Hostに直接、サーバのIPアドレスを記入します。
なお、サーバ名でそのサーバに接続できるかは、コマンドプロンプトからpingコマンドを実行してエラーが出ないかを確認します。
$ ping サーバー名
5. "Edit Server Launch Configuration"では、そのままの設定で「Save」します。
6. 登録したサーバを選択し、「Connect」ボタンを押し、データ/レンダー・サーバに接続します。
接続が上手くいくと、Pipeline Browserに指定したデータ/レンダー・サーバ名が表示されます。
以上で、データ/レンダー・サーバにあるデータを可視化した結果を、クライアント側で描画することができます。
例えば、
Sources > Data Objects > Unstructured Cell Types
をクリックし、Applyし、vtkProcessIdで色付けすると、メッシュがプロセス数と同じ数だけ領域分割されていることを確認できます。
トラブルシューティング†
libGL.so.1 が見つからないエラー(ParaView 6.0以降)†
ParaView 6.0以降の統合バイナリでは、OSMesaモードのみを使用する場合でも、システムにXライブラリ(libGL.so.1等)が必要です。以下のようなエラーが表示される場合があります。
pvserver-real: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
不足ライブラリの確認方法:
$ ldd (ParaViewのパス)/bin/pvserver-real 2>&1 | grep "not found"
典型的な不足ライブラリとして、以下が報告されています。
- libGL.so.1
- libGLX.so.0
- libGLdispatch.so.0
- libXcursor.so.1
- libXfixes.so.3
root権限がある場合の対処法:
Ubuntu/Debian系:
$ sudo apt install libgl1 libglx0 libglvnd0 libxcursor1 libxfixes3
RHEL/Rocky Linux系:
$ sudo dnf install mesa-libGL libglvnd-glx libXcursor libXfixes
root権限がない場合の対処法:
debパッケージを手動で展開することで、root権限なしにライブラリを配置できます(Ubuntu/Debian系の場合)。
$ mkdir -p ~/local/lib && cd /tmp
$ apt download libgl1 libglx0 libglvnd0 libxcursor1 libxfixes3
$ mkdir -p extracted
$ for deb in libgl1*.deb libglx0*.deb libglvnd0*.deb libxcursor1*.deb libxfixes3*.deb; do
dpkg -x "$deb" extracted/
done
$ cp -a extracted/usr/lib/x86_64-linux-gnu/lib*.so* ~/local/lib/
pvserver起動時にLD_LIBRARY_PATHを設定します。
$ export LD_LIBRARY_PATH=~/local/lib:$LD_LIBRARY_PATH $ ./mpiexec -np 8 ./pvserver --opengl-window-backend OSMesa
ParaView 5.13以前のosmesa-MPI版を使う方法†
ParaView 5.13以前では、osmesa-MPI版の個別バイナリが提供されています。この版はlibGL.so.1等のシステムライブラリが不要で、展開するだけで動作します。
$ tar xzf ParaView-5.13.3-osmesa-MPI-Linux-Python3.10-x86_64.tar.gz $ cd ParaView-5.13.3-osmesa-MPI-Linux-Python3.10-x86_64/bin $ ./mpiexec -np 8 ./pvserver --force-offscreen-rendering
GPUを搭載していないサーバでは、この方法が最も簡単です。ただし、クライアント側のParaViewも同じバージョン(5.13.3)を使用する必要があります。










