LoginSignup
1
3

More than 3 years have passed since last update.

Paraview-Superbuildで失敗しないための操作メモ

Last updated at Posted at 2019-10-08

ほぼほぼ自分用です。半分は備忘録で半分は愚痴。

これはなに

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

ここに罠がいくつかあります。

  1. --recursive付けないとsubmoduleがおかしくなります。忘れないようにしましょう。2

  2. paraview-superbuild.gitのディレクトリとccmakeの作業用ディレクトリは入れ子になるとエラー吐きます。ディレクトリは分けましょう。

  3. 最後の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通す
.bashrc
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: 微妙にディレクトリを間違えていたので修正。その他文面の修正。

  1. CMake使ってmakefile作るのは一般教養の範囲らしい。苦しい。 

  2. 2020/2/7追記:cmakeのオプションによってはOpenGL無くても通るらしい(pvserverのみとか) 

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3