はじめに
本資料は、CentOS 7上で、paraview v5.1.4をインストールし、OSmesaを用いたオフスクリーンレンダリングによって、可視化を行うための資料です。
オフスクリーン可視化のメリットとしては、X window systemやGPU環境に依存せずに可視化を行える点が挙げられます。また、筆者は普段この手順によって、大規模なメッシュを利用した有限要素解析の結果を、リモート環境で可視化するために利用しています。
参考文献は以下の通りです。
ParaView (v5.1.2) のビルド
GPU なしで OpenGL を使う方法
Paraview v5.1.4のインストール
周辺環境のインストール
paraviewをインストールするために、以下のコマンドで周辺環境の整備を行います。
sudo yum -y update
sudo yum -y install boost boost-devel
sudo yum -y install mesa-libGLU mesa-libGLU-devel mesa-libOSMesa-devel
インストールディレクトリの作成
本資料では、
/home/morita/tools
ディレクトリに、コンパイルしたライブラリをインストールすることとします。
また、
/home/morita/paraview_src
ディレクトリに、ソースファイルなどをダウンロードすることとします。
OSmesaのインストール
OSmesaは、mesaのオフスクリーン利用ができるAPIとして知られています。
/home/morita/paraview_src
ディレクトリにおいて、以下のコマンドによって、インストールを行います。
wget https://mesa.freedesktop.org/archive/older-versions/12.x/12.0.3/mesa-12.0.3.tar.gz
tar -xvf mesa-12.0.3.tar.gz
cd mesa-12.0.3
sed -i "/pthread-stubs/d" configure.ac
sed -i "/seems to be moved/s/^/: #/" bin/ltmain.sh
bash autogen.sh --disable-xvmc \
--disable-dri \
--with-dri-drivers= \
--with-gallium-drivers=swrast \
--disable-shared-glapi \
--enable-texture-float \
--disable-egl \
--with-egl-platforms= \
--enable-gallium-osmesa \
--enable-gallium-llvm=yes \
--disable-gles1 \
--disable-gles2 \
--prefix=/home/morita/lib
make install
paraview v5.4.1のインストール
/home/morita/paraview_src
ディレクトリにおいて、以下のコマンドによって、インストールを行います。
cmake
コマンドは、環境によってcmake3
コマンドに切り替えます。
git clone https://github.com/Kitware/ParaView.git paraview
cd paraview
git config submodule.VTK.url https://github.com/Kitware/VTK.git
git checkout v5.1.4
git submodule update --init --recursive
cd ..
mkdir build
cd build
cmake -D BUILD_DOCUMENTATION:BOOL=OFF \
-D BUILD_EXAMPLES:BOOL=OFF \
-D BUILD_SHARED_LIBS:BOOL=ON \
-D BUILD_TESTING:BOOL=OFF \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/home/morita/tools \
-D PARAVIEW_BUILD_QT_GUI:BOOL=OFF \
-D PARAVIEW_DATA_ROOT=/home/morita/tools \
-D PARAVIEW_ENABLE_COPROCESSING:BOOL=ON \
-D PARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON \
-D PARAVIEW_USE_VISITBRIDGE:BOOL=ON \
-D PARAVIEW_USE_BOOST:BOOL=ON \
-D OPENGL_INCLUDE_DIR=/home/morita/tools/include \
-D OPENGL_xmesa_INCLUDE_DIR= \
-D OPENGL_gl_LIBRARY= \
-D OPENGL_glu_LIBRARY=/home/morita/tools/lib/libGLU.so \
-D VTK_USE_X:BOOL=OFF \
-D VTK_OPENGL_HAS_OSMESA:BOOL=ON \
-D VTK_DEFAULT_RENDER_WINDOW_OFFSCREEN:BOOL=ON \
-D OSMESA_INCLUDE_DIR=/home/morita/tools/include \
-D OSMESA_LIBRARY=/home/morita/tools/lib/libOSMesa.so \
-D PARAVIEW_ENABLE_PYTHON:BOOL=ON \
-D PYTHON_LIBRARY=/usr/lib64/libpython2.7.so \
-D PYTHON_INCLUDE_DIR=/usr/include/python2.7 \
-D PYTHON_EXECUTABLE=/usr/bin/python \
-D PARAVIEW_USE_MPI:BOOL=OFF \
-D PARAVIEW_ENABLE_FFMPEG:BOOL=OFF \
-D VTK_USE_FFMPEG_ENCODER:BOOL=OFF \
../paraview
make install
オフスクリーンレンダリング
pvbatchの利用
前節でのインストールが完了すると、/home/morita/tools/bin
ディレクトリに、以下のバイナリが生成されていることが確認できます。
paraview-config
pvbatch
pvdataserver
pvpython
pvrenderserver
pvserver
smTestDriver
vtkParseJava-pv5.5
vtkWrapClientServer-pv5.5
vtkWrapHierarchy-pv5.5
vtkWrapJava-pv5.5
vtkWrapPython-pv5.5
vtkWrapPythonInit-pv5.5
vtkkwProcessXML-pv5.5
このうち、筆者が普段利用しているのは、pvbatch
バイナリです。このバイナリは、GUI環境のparaviewにおける操作手順をまとめたpythonスクリプトを読み込むことができ、そのスクリプトに記載された手順によってレンダリングを行います。このとき、pythonスクリプトは、GUI環境のparaviewから出力することができます。GIU環境のparaviewは、任意のOSで利用することができますが、GUI環境のparaviewのバージョン番号は、CentOS上にインストールしたparaviewのバージョンと一致していることが重要です。
pythonスクリプトの生成
pythonスクリプトを生成するために、GUI環境のparaviewに付属している、trace機能を利用します。paraviewのツールバーから、Tools > Start trace
の順に選択します。
その後、以下のように、Trace options
の設定を行います。
この設定が終わったら、いつものようにGUI環境で可視化を行います。
具体的には、
- ファイル読み込み
- 変形図・コンタ図の作成
- スクリーンショットの保存
を行います。
スクリーンショットの保存までが終わったら、paraviewのツールバーから、Tools > Stop trace
の順に選択します。この手順によって、paraviewに新しいウインドウが生成され、自動生成されたpythonスクリプトが表示されます。このpythonスクリプトを、例えばpvbatch.py
として保存します。
生成されたpythonスクリプトを保存した後は、pythonスクリプトと可視化ファイルをリモートのCentOS環境に転送し、以下のコマンドによって可視化を行います。このとき、pvbatch.pyでは、ローカル環境のパスに基づいて、読み込みファイルと書き出しファイルのパスが記述されているので、リモート環境のディレクトリ構成にあわせて書き換える必要があります。
pvbatch pvbatch.py
展望
展望として、MPI環境におけるインストール、性能評価が挙げられます。