ほぼほぼ自分用です。半分は備忘録で半分は愚痴。
これはなに
Paraview-Superbuild使って任意の環境でParaviewをmakeするだけの簡単な作業。(簡単ではない)
公式READMEを読めという話ではあるのだけど、前提知識が多いのかなんなのか、行間を読む力が求められており、しょっちゅう詰まってしまう。。。1
何度も地雷踏んでしまって随分時間が掛かってしまったけど、うまく行ったところだけ抜き出すとすごく少ない作業で済んだので、作業ログとして残しておきます。
環境の用意
以下、Ubuntu想定です。
- ディレクトリを用意する
/opt
はなんでも。sudo持って無くてかつ自分しか使うつもりがないなら~/.local
とかですかね。
# superbuildの作業用
mkdir -p /opt/paraview/src/superbuild
mkdir -p /opt/paraview/src/superbuild/ccmake_workspace
# インストール先
mkdir -p /opt/paraview/5.7.0
- apt install系
いくらsuperbuildとはいえあまりに基本的なライブラリはaptで入れろと怒られます。(build_essentials+CUDAくらいなら元々入ってそうだけど他は怪しい)
OpenGLは特に入れ忘れないようにしましょう。
HPCクラスタだと入ってないことが多いし、忘れててもcmakeは通ってしまうので。
make -jで初めてエラーが出るので、ドローバックが極めて大きくなる問題があります。2
sudo apt install -y cmake cmake-curses-gui mesa-common-dev
sudo持ってない人は必要ライブラリがすべてインストールされていることを祈りましょう。
- その他環境
CUDAとかMPIとか使うなら事前にPATH通しておかないとcmakeがエラーで落ちる。
module前提の環境だと忘れがちなので気をつけたい。。。
# 例
module load cuda/10.1 openmpi/4.0.2
superbuild開始
- superbuildのソース取ってくる
cd /opt/paraview/src/superbuild
git clone --recursive https://gitlab.kitware.com/paraview/paraview-superbuild.git
cd paraview-superbuild
git checkout v5.7.0 -b v5.7.0_build
git submodule update
ここに罠がいくつかあります。
-
--recursive
付けないとsubmoduleがおかしくなります。忘れないようにしましょう。2
-
paraview-superbuild.gitのディレクトリとccmakeの作業用ディレクトリは入れ子になるとエラー吐きます。ディレクトリは分けましょう。
-
最後の
git submodule update
を忘れるとバージョン不整合が起こるかも
- ccmake叩く
簡単だけど難しい。エラーが出なくなるまでオプションをつけたり消したりする無限ループに陥りがち。
以下は上手く行った例。
cd ccmake_workspace
ccmake \
-D CMAKE_INSTALL_PREFIX:STRING=/opt/paraview/5.7.0 \
-D CMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-D ENABLE_cuda:BOOL=ON \
-D CMAKE_CUDA_HOST_COMPILER:STRING=g++ \
-D ENABLE_ffmpeg:BOOL=ON \
-D ENABLE_vortexfinder2:BOOL=ON \
-D ENABLE_vtkm:BOOL=ON \
-D ENABLE_python:BOOL=ON \
-D ENABLE_numpy:BOOL=ON \
-D ENABLE_matplotlib:BOOL=ON \
-D ENABLE_scipy:BOOL=ON \
-D ENABLE_ospray:BOOL=ON \
-D ENABLE_png:BOOL=ON \
-D ENABLE_paraview:BOOL=OFF \
-D ENABLE_paraviewpluginsexternal:BOOL=ON \
-D ENABLE_nvidiaindex:BOOL=ON \
../paraview-superbuild.git
ENABLE_*
は目的別で完全に好みだけど、私の場合pvserverでNVIDIA-IndeXプラグインを使いたかったのでこんな感じになりました。
ここでは変数は-D
で指定したけど、ccmakeの中でやっても大丈夫なはず。
- make
make && make install
1行だけですね。簡単。(簡単じゃない)
だいたいここで失敗するので、エラーメッセージ見ながらccmakeのオプション変えてmakeやり直してを繰り返します。
あとめんどくさいけどやり直すときは必ずccmake_workspaceを空にしましょう。ゴミが残ってて次のmakeが無為にエラーを吐く場合があります。
# PWD=/opt/paraview/src/superbuild
rm -rf ccmake_workspace
mkdir ccmake_workspace && cd ccmake_workspace
ccmake -D ....
- PATH通す
paraview_path=/opt/paraview/5.7.0
export PATH+=:$paraview_path/bin
export LD_LIBRARY_PATH+=:$paraview_path/lib
- 念のため確認
$ pvserver --version
paraview version 5.7.0
$ pvserver
Waiting for client...
Connection URL: cs://***:11111
Accepting connection(s): ***:11111
Client connected.
よかったですね。
なお肝心のNVIDIA-IndeXでボリュームレンダリングすると、エラー吐いてクラッシュします。うーん……
参考
変更履歴
- 2020/2/7: 微妙にディレクトリを間違えていたので修正。その他文面の修正。