Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@gracom

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

More than 1 year has passed since last update.

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

これはなに

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のみとか) 

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
gracom
HPC畑でC++とCUDAを書いています。たまにbashとpython。しかし最近は環境構築芸人になりがちなのでdockerとかmoduleとか。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?