BuildForLinux_JP - CCSEPBVR/CS-IS-PBVR GitHub Wiki

Linux環境でのビルド

CS/IS-PBVRの゜ヌスコヌドはC++で実装されおおり、コンフィグファむルで蚭定するこずで逐次凊理版、スレッド䞊列凊理甚のOpenMP版、および、超䞊列凊理甚のMPI + OpenMP版を切り替えおビルドできる。 クラむアントプログラムはC++、QtずOpenGLによっお実装されおいる。

゜ヌスコヌドのクロヌン

gitコマンドを利甚しお以䞋のようにクロヌンを行う。

git clone https://github.com/CCSEPBVR/CS-IS-PBVR.git
cd CS-IS-PBVR
git checkout release/vX.X.X

サヌバ・フィルタ・KVSMLコンバヌタのビルド

任意のディレクトリにクロヌンされた゜ヌスコヌドパッケヌゞの䞭でCS-IS-PBVR/CS_Server/ディレクトリは以䞋のpbvr.conf、Makefileによっおコンパむルされる。 pbvr.confファむルによりmakeを蚭定し、フィルタ、サヌバプログラムをビルドする。 CS-IS-PBVR/CS_server/ディレクトリの構成は以䞋の通りである。

CS-IS-PBVR
└── CS_server
    ├── main.cpp
    ├── Makefile        - CS_server/配䞋の゜ヌスコヌドをコンパむルする
    ├── pbvr.conf       - makeの蚭定ファむル
    ├── pbvr.sln
    ├── pbvr.v12.suo
    ├── Common          - プロトコル、通信、共通ラむブラリ
    ├── Filter          - フィルタプログラム
    ├── FunctionParser  - 数匏凊理ラむブラリ
    ├── arch            - 各環境のコンパむラの蚭定ファむル
    ├── VisModule       - 可芖化ラむブラリKVS※1ずサヌバプログラムを統合したもの
    ├── KVSMLConverter  - KVSMLコンバヌタ

※1. このKVSはクラむアントプログラムでは䜿甚されない、このKVSはサヌバ䞊の䞊列可芖化凊理に特化した独自のバヌゞョンである。

pbvr.confにおいお倉数の入力倀を倉曎するこずで、むンストヌルする機胜を指定する。
pbvr.confの倉数䞀芧を以䞋に瀺す。

倉数 入力倀 説明
PBVR_MACHINE 文字列 arch/配䞋のコンパむル蚭定ファむル
PBVR_MAKE_FILTER 0 or 1 フィルタのサポヌトの有無
PBVR_MAKE_SERVER 0 or 1 サヌバのサポヌトの有無
PBVR_MAKE_KVSML_CONVERTER 0 or 1 KVSMLコンバヌタのサポヌトの有無
PBVR_SUPPORT_VTK 0 or 1 VTKサポヌトの有無フィルタのみ

倉数PBVR_MACHINEではコンパむル環境に応じおarch/ディレクトリ配䞋に栌玍されおいるMakeFileの蚭定ファむルを指定する。

ファむル名 説明
Makefile_machine_gcc gccによる逐次版コンパむルの蚭定
Makefile_machine_gcc_omp gccによるOpenMP版コンパむルの蚭定
Makefile_machine_gcc_mpi_omp gccによるMPI+OpenMP版コンパむルの蚭定
Makefile_machine_intel intelによる逐次版コンパむルの蚭定
Makefile_machine_intel_omp intelによるOpenMP版コンパむルの蚭定
Makefile_machine_intel_mpi_omp intelによるMPI+OpenMP版コンパむルの蚭定
Makefile_machine_s86_mpi_omp JAEA倧型蚈算機䞊でコンパむルの蚭定
Intelコンパむラずmptラむブラリを䜿甚
Makefile_machine_fugaku_clang 富岳ARMclangモヌドでのコンパむルの蚭定
Makefile_machine_fugaku_trad 富岳ARMtradモヌドでのコンパむルの蚭定

サヌバ・フィルタのビルド

  1. CS-IS-PBVR/CS_server/ディレクトリ配䞋のpbvr.confを、各環境で䜿甚する機胜に合わせお線集する。

    gccコンパむラを䜿甚しおOpenMPにより䞊列化されたフィルタ、サヌバプログラムをビルドする䟋を瀺す。

    PBVR_MACHINE=Makefile_machine_gcc_omp 
    PBVR_MAKE_FILTER=1
    PBVR_MAKE_SERVER=1
    PBVR_MAKE_KVSML_COMVERTER=0
    PBVR_SUPPORT_VTK=0
    
  2. CS-IS-PBVR/CS_server配䞋で䞋蚘のコマンドでビルドを行う

    make -j 16
    

    CS-IS-PBVR/CS_server配䞋で䞋蚘のように実行モゞュヌルが䜜成される。
    フィルタ:Filter/pbvr_filter
    サヌバ:pbvr_server

デヌタ圢匏を拡匵したサヌバのビルド

サヌバプログラムは独自のKVSML圢匏によるボリュヌムデヌタのみ凊理できるが、
KVS・VTKラむブラリを䜿甚しおサヌバプログラムの察応デヌタ圢匏を拡匵するこずもできる。
䜿甚方法に぀いおはチュヌトリアルに蚘茉しおいる。

KVS及びVTKは事前にむンストヌルされおいるものずする。
むンストヌル方法は各ラむブラリリポゞトリを参考にする。

ただしKVSをビルドする際にGCCコンパむラ以倖のコンパむラを䜿甚する堎合は以䞋の環境倉数を倉曎する必芁がある。

環境倉数 GCC(g++) Intel(icpc) Fujitsu(FCCpx)
KVS_CPP g++ icpc FCCpx

たた、VTKのむンストヌルにあたっおはccmakeにおいお以䞋の蚭定を行うこず。

  1. BUILD_SHARED_LIBSオプションをオンにする。
  2. CMAKE_BUILD_TYPEオプションを”Release”にする。
  3. CMAKE_INSTALL_PREFIXをVTKをむンストヌルする堎所に蚭定する。

1.以䞋の環境倉数を蚭定する。

export KVS_DIR=<BASE_DIR>/KVS/install
export VTK_VERSION=n.n 
export VTK_LIB_PATH=/usr/local/lib 
export VTK_INCLUDE_PATH=/usr/local/include/vtk-n.n 
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

ここで、n.nには䜿甚するVTKのバヌゞョンを入力し、PATHはVTKラむブラリのむンストヌル環境に合わせお曞き換えるこず。

2.KVS/kvs.confのKVS_SUPPORT_EXTENDED_FILE_FORMATを1に蚭定しおKVSをビルド・むンストヌルする。
3.CS-IS-PBVR/CS_server配䞋で䞋蚘のコマンドでビルドを行う

make -j 16

4.CS-IS-PBVR/CS_server配䞋に䞋蚘のように実行モゞュヌルが䜜成される。
サヌバヌpbvr_server

VTK甚のフィルタビルド

VTK甚のフィルタのビルドにはVTK6.0以䞊が必芁である。 VTKラむブラリのむンストヌルに぀いおはVTKりェブサむトを参照するこず。 たた、むンストヌルにあたっおはccmakeにおいお以䞋の蚭定を行うこず。

  1. BUILD_SHARED_LIBSオプションをオンにする。
  2. CMAKE_BUILD_TYPEオプションを”Release”にする。
  3. CMAKE_INSTALL_PREFIXをVTKをむンストヌルする堎所に蚭定する。

VTK甚フィルタに必芁な蚭定を以䞋に瀺す。

export VTK_VERSION=n.n 
export VTK_LIB_PATH=/usr/local/lib 
export VTK_INCLUDE_PATH=/usr/local/include/vtk-n.n 

ここで、n.nには䜿甚するVTKのバヌゞョンを入力し、PATHはVTKラむブラリのむンストヌル環境に合わせお曞き換えるこず。

KVSMLコンバヌタのビルド

KVS及びVTKは事前にむンストヌルされおいるものずする。
むンストヌル方法は各ラむブラリリポゞトリを参考にする。

ただしKVSをビルドする際にGCCコンパむラ以倖のコンパむラを䜿甚する堎合は以䞋の環境倉数を倉曎する必芁がある。 KVSMLコンバヌタをビルドする際にもこの環境倉数は䜿甚する。

環境倉数 GCC(g++) Intel(icpc) Fujitsu(FCCpx)
KVS_CPP g++ icpc FCCpx

たた、VTKのむンストヌルにあたっおはccmakeにおいお以䞋の蚭定を行うこず。

  1. BUILD_SHARED_LIBSオプションをオンにする。
  2. CMAKE_BUILD_TYPEオプションを”Release”にする。
  3. CMAKE_INSTALL_PREFIXをVTKをむンストヌルする堎所に蚭定する。

1.以䞋の環境倉数を蚭定する。

export KVS_DIR=<BASE_DIR>/KVS/install
export VTK_VERSION=n.n 
export VTK_LIB_PATH=/usr/local/lib 
export VTK_INCLUDE_PATH=/usr/local/include/vtk-n.n 
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

ここで、n.nには䜿甚するVTKのバヌゞョンを入力し、PATHはVTKラむブラリのむンストヌル環境に合わせお曞き換えるこず。

2.CS-IS-PBVR/CS_Server/pbvr.confのPBVR_MAKE_KVSML_COMVERTERを1に蚭定する。
3.CS-IS-PBVR/CS_server配䞋で䞋蚘のコマンドでビルドを行うずサヌバ・フィルタず䞀緒にビルドされる。

make -j 16

4.以䞋の堎所に実行モゞュヌルが䜜成される。
CS-IS-PBVR/CS_server/KVSMLConverter/Example/Release/kvsml-converter

デヌモン・粒子サンプラのビルド

任意のディレクトリにクロヌンされた゜ヌスコヌドパッケヌゞの䞭でCS-IS-PBVR/IS_DaemonAndSampler/ディレクトリは以䞋のpbvr.conf、MakeFileによっおコンパむルされる。 pbvr.confファむルによりmakeを蚭定し、デヌモン、粒子サンプラをビルドする。 CS-IS-PBVR/IS_DaemonAndSampler/ディレクトリの構成は以䞋の通りである。

CS-IS-PBVR
└── IS_DaemonAndSampler
    ├── pbvr.conf                           - makeの蚭定ファむル
    ├── Makefile                            - IS_DaemonAndSampler/配䞋の゜ヌスコヌドをコンパむルする
    ├── Common                              - プロトコル、通信、共通ラむブラリ
    ├── Daemon                              - デヌモンプログラム
    ├── Example                             - テストシミュレヌションコヌドのサンプル
    │   ├── C                               - C版
    │   │   ├── Hydrogen_AMR                - 階局構造栌子テストプログラム
    │   │   ├── Hydrogen_struct             - 構造栌子テストプログラム
    │   │   ├── Hydrogen_unstruct           - 非構造栌子テストプログラム
    │   │   ├── Hydrogen_unstruct_prism     - プリズム芁玠非構造栌子テストプログラム
    │   │   ├── Hydrogen_unstruct_pyramid   - ピラミッド芁玠非構造栌子テストプログラム
    │   │   ├── Hydrogen_unstruct_quadhexa  - 六面䜓二次芁玠非構造栌子テストプログラム
    │   │   ├── Hydrogen_unstruct_quadtetra - 四面䜓二次芁玠非構造栌子テストプログラム
    │   │   └── Hydrogen_unstruct_tetra     - 四面䜓芁玠非構造栌子テストプログラム
    │   └── Fortran                         - Fortran版
    │       ├── Hydrogen_AMR                - 構造栌子テストプログラム
    │       ├── Hydrogen_struct             - 階局構造栌子テストプログラム
    │       └── Hydrogen_unstruct           - 非構造栌子テストプログラム
    ├── FunctionParser                      - 数匏凊理ラむブラリ
    ├── InSituLib                           - 粒子生成ラむブラリ
    │   ├── AMR                             - 構造栌子向け粒子生成ラむブラリ
    │   ├── struct                          - 階局構造栌子向け粒子生成ラむブラリ
    │   └── unstruct                        - 非構造栌子向け粒子生成ラむブラリ
    ├── KVS                                 - 可芖化ラむブラリ KVS
    ├── arch                                - 各環境のコンパむラの蚭定ファむル
    └── shell

ビルドに䜿甚するコンパむラはpbvr.confを環境に合わせお線集するこずで制埡される。倉数の倀ずしお利甚できるコンパむル蚭定ファむルの䞀芧を以䞋に瀺す。

ファむル名 説明
Makefile_machine_gcc gcc による逐次版コンパむルの蚭定
Makefile_machine_gcc_omp gcc による OpenMP 版コンパむルの蚭定
Makefile_machine_gcc_mpi_omp gcc による MPI+OpenMP 版コンパむルの蚭定
Makefile_machine_intel intel による逐次版コンパむルの蚭定
Makefile_machine_intel_omp intel による OpenMP 版コンパむルの蚭定
Makefile_machine_intel_mpi_omp intel による MPI+OpenMP 版コンパむルの蚭定
Makefile_machine_fugaku_clang 富岳(ARM)clang モヌドのコンパむル蚭定
Makefile_machine_fugaku_trad 富岳(ARM)trad モヌドのコンパむル蚭定
Makefile_machine_s86_mpi_omp 機構 SGI8600(Intel Xeon Gold)向けのコンパむルの蚭定
  1. CS-IS-PBVR/IS_DaemonAndSampler/ディレクトリ配䞋のpbvr.confを、各環境で䜿甚する機胜に合わせお線集する

  2. CS-IS-PBVR/IS_DaemonAndSampler/ディレクトリ配䞋で䞋蚘のコマンドでビルドを行う

    make -j 16
    

    makeによっお以䞋のファむルが生成される。

名前 ラむブラリ名 説明
KVS libkvsCore.a KVS ラむブラリ。粒子デヌタフォヌマットや可芖化機胜を提䟛する。
Common libpbvrCommon.a 通信ラむブラリ。゜ケット通信甚のプロトコルを提䟛する。
Daemon pbvr_daemon デヌモン
FuctionParser libpbvrFunc.a 数匏凊理ラむブラリ。数匏凊理の機胜を提䟛する。
InsituLib/struct libInSituPBVR.a 構造栌子向け粒子生成ラむブラリ
InsituLib/unstruct libInSituPBVR.a 非構造栌子向け粒子生成ラむブラリ
InsituLib/AMR libInSituPBVR.a 階局栌子向け粒子生成ラむブラリ

クラむアントのビルド

クラむアントプログラムは可芖化ラむブラリKVSず統合開発環境Qt Creatorを利甚しおビルドする。

KVSの蚭定ずビルド

本クラむアントは、オリゞナルのKVSを改良した独自バヌゞョンのKVSを利甚しおビルドする。
KVSは描画基盀゜フトりェアずしおOpenGLを利甚する。 可芖化結果をりィンドりに衚瀺するためにGLUTが必芁ずなる。 たた、OpenGLの拡匵機胜利甚の環境䟝存性を枛らすためにGLEWをむンストヌルする必芁がある。

  • GLUTのむンストヌル
    タヌミナルから以䞋のコマンドを実行しおfreeglutをむンストヌルする。

    sudo apt install freeglut3-dev
    
  • GLEWのむンストヌル
    タヌミナルから以䞋のコマンドを実行しおglewをむンストヌルする。

    sudo apt install libglew-dev
    

    glut、glewのむンストヌル埌「~/.bashrc」に以䞋のコマンドを远蚘する。

    export KVS_GLUT_DIR=/usr/
    export KVS_GLEW_DIR=/usr/
    
  • KVSラむブラリのむンストヌル
    タヌミナルから以䞋のコマンドを実行しQTPBVR甹KVSラむブラリをクロヌンする。

    git clone https://github.com/TO0603/KVS.git
    cd KVS
    git checkout main
    

    KVS/kvs.confを以䞋の通りに線集する。

    #=============================================================================
    #  KVS enable/support flags
    #  $Id: kvs.conf 1525 2013-04-11 02:58:08Z [email protected] $
    #=============================================================================
    KVS_ENABLE_OPENGL                = 1
    KVS_ENABLE_GLU                   = 1
    KVS_ENABLE_GLEW                  = 0
    KVS_ENABLE_OPENMP                = 0
    KVS_ENABLE_DEPRECATED            = 0
    
    KVS_SUPPORT_CUDA                 = 0
    KVS_SUPPORT_GLUT                 = 1
    KVS_SUPPORT_GLFW                 = 0
    KVS_SUPPORT_FFMPEG               = 0
    KVS_SUPPORT_OPENCV               = 0
    KVS_SUPPORT_QT                   = 1
    KVS_SUPPORT_OPENXR               = 0
    KVS_SUPPORT_PYTHON               = 0
    KVS_SUPPORT_MPI                  = 0
    KVS_SUPPORT_EGL                  = 0
    KVS_SUPPORT_OSMESA               = 0
    KVS_SUPPORT_EXTENDED_FILE_FORMAT = 0
    

    線集埌、「~/.bashrc」に以䞋のコマンドを远蚘する。

    export KVS_DIR=<BASE_DIR>/KVS/install
    

    远蚘埌、以䞋のコマンドを実行しむンストヌルを行う。

    source ~/.bashrc
    make -j 16
    ~~ビルドが完了するのを埅぀~~
    make install
    
  • QTPBVRのビルド

  1. CS-IS-PBVR/QTPBVR/ディレクトリ配䞋のQTPBVR.proをQtCreatorで開く。
    開いた際に「有効な蚭定が芋぀かりたせん」ず衚瀺された堎合は、「OK」ボタンをクリックする。 プロゞェクトの蚭定画面で「Desktop Qt 6.2.4 GCC 64bit」のキットにチェックを入れ、「Configure Project」のボタンをクリックする。 Local Image

  2. ビルド蚭定をReleaseに切り替える。 Local Image

  3. 䞋にスクロヌルし、環境倉数KVS_DIRが蚭定されおいるこずを確認する。 Local Image

  4. 線集からqtpbvr.confの蚭定を確認したす。.fbx、 .3dsフォヌマットを読み蟌たせる堎合はPBVR_SUPPORT_FBX、 PBVR_SUPPORT_3DSを1にし、FBXSDK、 Assimpラむブラリのinclude、libディレクトリのフルパスを入力する。 Local Image

  5. プロゞェクトを右クリックし、「qmakeの実行」をクリックする。 Local Image

  6. qmake完了埌、プロゞェクトを右クリックし、「ビルド」をクリックする。 Local Image

  7. ビルド完了埌、画面巊䞋の再生マヌクたたはCtrl+RでQTPBVRの実行ができるこずを確認する。 Local Image

⚠ **GitHub.com Fallback** ⚠