Closed22
Geant4のインストール
Geant4
インストール先
- MacBook Pro (2018)
- macOS: Sonoma 14.2.1
- CPU: Intel Core i5 (2.3 GHz Quad-Core)
- GPU: Intel Iris Plus
- Memory: 16GB
- Homebrew :
/usr/local/bin/brew
- MacBook Air (2022)
- macOS: Ventura 13
- CPU:
- GPU:
- Memory:
- Homebrew:
/opt/homebrew/bin/brew
- 2台のパソコンにインストールする
- Homebrewのパスが異なるので、パス表記が揺れるかも
インストールガイド
- 以前(10年くらい前)はソースコードを自分でDLし、コンパイルしたが、とても苦労した
- 現在はパッケージ管理ツールでもインストールできるようになっているみたい
- 実は、ちょっと前(5年くらい前?)はHomebrewにもフォーミュラがあったが、いまはなくなってしまった
- 今回は
spack
を使ったインストールに挑戦してみる
ソースからビルドする手順
作業ディレクトリに移動する
$ mkdir ~/geant4
$ cd ~/geant4/
(~/geant4) $
ソースコードを準備する
(~/geant4/) $ cp ~/Downloads/geant4-v11.2.0.tar.gz ~/geant4/
(~/geant4/) $ tar xzvf geant4-v11.2.0.tar.gz
ビルド用のディレクトリを準備する
(~/geant4/) $ mkdir build
$ ls -l
geant4-v11.2.0.tar.gz
geant4-v11.2.0/
build/
ビルド用のディレクトリでビルドする
(~/geant4/) $ cd build
(~/geant4/build/) $ cmake -DCMAKE_INSTALL_PREFIX=~/geant4/11.2.0 ../geant4-v11.2.0
ビルドする
(~/geant4/build/) $ make -j8
(~/geant4/build/) $ make install
(~/geant4/build/) $ ls ~/geant4/
geant4-v11.2.0.tar.gz # DLしたソースコード(削除してもOK)
geant4-v11.2.0/ # 展開したソースコード
build/ # ビルド用ディレクトリ
11.2.0/ # インストール先ディレクトリ(CMAKE_INSTALL_PREFIX)
Spack
- スパコンなどのHPC向けのパッケージ管理ツール
- クロスプラットフォーム対応していて、LinuxやmacOSなどでも使える
- 基本的にソースからコンパイルするため、それなりに時間がかかる
- 複数のバージョン、設定、プラットフォーム、コンパイラでパッケージをビルドすることができる
- ビルドしたものすべてを同じマシン上に共存させることができる
Spackのインストール
$ brew install curl gcc git gnupg zip
$ brew install spack
- Homebrewでインストールできる
- 事前に追加しておいたほうがよいフォーミュラがある
-
git
は他の用途でインストール済みだった -
curl
、gcc
、zip
も追加したが、OS標準のものを使ってる -
gnupg
はSpack用のパッケージを作成しないので、必要なかったかも
-
Geant4のインストール
$ spack install geant4
(ひたすら待つ)
# パッケージ情報を確認
$ spack find -v geant4
-- darwin-ventura-m2 / apple-clang@15.0.0 -----------------------
geant4@11.1.2~ipo~motif~opengl~qt~tbb+threads~vecgeom~vtk~x11 build_system=cmake build_type=Release cxxstd=17 generator=make patches=2979cb7
==> 1 installed package
# パッケージのパスを確認
$ spack find -p geant4
-- darwin-ventura-m2 / apple-clang@15.0.0 -----------------------
geant4@11.1.2 /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/geant4-11.1.2-2b2cxmb4pwpzivdc4hazcw3hbajmenyz
==> 1 installed package
- オプションをつけずにインストールした
- コンパイルに30分くらいかかった
- OpenGLやQtを使いたい場合は、オプションを有効にして別途インストールすればよいはず
- パスを確認したらHomebrewでインストールした
spack
の下にインストールされていた-
spack
のバージョンを更新したら、再インストールが必要になるかもしれない
-
- 必要なデータ(
geant4-data
)も依存パッケージとしてインストールされた
サンプルを準備する
# 作業ディレクトリを作成
$ mkdir ~/repos/sandbox/g4work/
$ cd ~/repos/sandbox/g4work/
# Geant4のパスを確認
(~/r/s/g4work) $ spack find -p geant4
# サンプルを作業ディレクトリにコピー
(~/r/s/g4work) $ cp -r /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/geant4-11.1.2-2b2cxmb4pwpzivdc4hazcw3hbajmenyz/share/Geant4/examples .
# サンプルの中身を確認
(~/r/s/g4work) $ cd examples
(~/r/s/g/examples) $ ls -1
CMakeLists.txt
GNUmakefile
History
README
README.HowToRun
README.HowToRunMT
advanced/
basic/
extended/
novice
- 作業用ディレクトリを作成した(
~/repos/sandbox/g4work/
) - インストールしたパスの中の
share/Geant4/examples/
ディレクトリにサンプルがある - これを作業用ディレクトリにコピーした
- サンプルは
basic
、advanced
、extended
に分かれている- 以前
novice
だったものが、basic
にリネームされ、内容も見直されたみたい
- 以前
- とりあえず
basic
にあるサンプルを動かせるか確認する
シェルの設定
まず失敗させてエラーを確認する
$ spack load geant4
==> Error: `spack load` requires Spack's shell support.
To set up shell support, run the command below for your shell.
...
For fish:
source /usr/local/Cellar/spack/0.21.1/share/spack/setup-env.fish
...
- シェルにGeant4関係のパッケージのパスを設定する必要がある(んだと思う)
-
spack load geant4
を実行する - シェル設定ができてない場合は、エラーが表示される
- エラーにしたがって
setup-env.fish
を読み込ませる
シェル設定し、Geant4を読み込む
$ source /usr/local/Cellar/spack/0.21.1/share/spack/setup-env.fish
$ spack load geant4
$ echo $CMAKE_PREFIX_PATH
- Fishシェル用の
setup-env.fish
を読み込ませた - Geant4をロードした
-
$CMAKE_PREFIX_PATH
が設定されていた
シェル設定の詳細
$ source /usr/local/Cellar/spack/0.21.1/share/spack/setup-env.fish
- このスクリプトの中で設定される環境変数の一覧をChatGPTに聞いてみた
-
_sp_initializing
: スクリプトが再帰的に自身を呼び出すのを防ぐための変数。スクリプトの実行開始時に設定され、処理の最後に削除される。 -
SPACK_PYTHON
: Spackが使用するPythonインタープリタのパス変数- 今回は
python3
(=/opt/homebrew/bin/python3
)に設定されていた。
- 今回は
-
SPACK_ROOT
: Spackのインストールディレクトリへのパス変数-
which python3
のパスに設定されていた - MBA:
/opt/homebrew/Cellar/spack/0.21.1
に設定 - MBP:
~/.local/share/mise/installs/python/latest/bin/python3
に設定
-
-
SPACK_SHELL
: 使用中のシェルの種類を示す変数- これは
"fish"
に設定(ハードコード)されている。
- これは
-
_sp_shell
: 内部で利用されるシェルを示す変数- これも
"fish"
に設定されている。
- これも
-
SPACK_SKIP_MODULES
: 環境変数が設定されている場合、モジュールの設定ステップはスキップされる。ユーザーが必要に応じてモジュールの自動設定を無効にできる。 -
MODULE_PREFIX
: モジュールシステムがインストールされているディレクトリのパス変数。Spackが設定する。module
コマンドのラッパー関数によって使用される。- 確認したら未設定(見つからなかった)だった。
-
MODULEPATH
: モジュールが検索するディレクトリのリスト。Spackが設定する。- 確認したら空欄だった。
-
SPACK_*
で始まるDYLD_*
:SPACK_
のプレフィックスがついたDYLD_LIBRARY_PATH
やDYLD_FALLBACK_LIBRARY_PATH
Geant4の設定
$ spack load --fish geant4
-
--fish
オプションをつけて、シェル設定の内容を出力した - ここで設定された環境変数の一覧をChatGPTに教えてもらった
-
ACLOCAL_PATH
: Autoconfのマクロを探すためのパス変数。- MBA:
/opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/curl-8.4.0-m7hp2jt6w6zubawptowsumvqxgwekhjm/share/aclocal
に設定された。 - MBP:
/usr/local/Cellar/spack/0.21.1/opt/spack/darwin-sonoma-skylake/apple-clang-15.0.0/curl-8.4.0-tn6jxo5o2ler3ndstbhlzd2jormaesjo/share/aclocal
に設定された -
アーキテクチャ
-OS
-CPU
ごとに分かれている
- MBA:
-
CMAKE_PREFIX_PATH
: CMakeがパッケージを探すためのプレフィックスのリスト -
DYLD_FALLBACK_LIBRARY_PATH
:macOS
で見つからなかったライブラリのためのフォールバックパス - Geant4で使用されるデータセットのパス変数
G4ABLADATA
G4ENSDFSTATEDATA
G4INCLDATA
G4LEDATA
G4LEVELGAMMADATA
G4NEUTRONHPDATA
G4PARTICLEXSDATA
G4PIIDATA
G4RADIOACTIVEDATA
G4REALSURFACEDATA
G4SAIDXSDATA
-
MANPATH
: マニュアルページを探すためのパス変数 -
PATH
: 実行可能ファイルを探すためのパス変数。/opt/homebrew/Cellar/spack/0.21.1/bin
が追加された。 -
PKG_CONFIG_PATH
:pkg-config
がパッケージのメタデータを探すためのパス変数 -
SPACK_LOADED_HASHES
: Spackによってロードされたパッケージのハッシュ値
サンプルをビルドする手順
cmakeのインストール
$ brew install --cask cmake
-
cmake
が必要だったのでHomebrewでCaskをインストールした
B1をビルドする
(~/r/s/g4work) $ cd examples/basic/B1
# ビルド用のディレクトリを作成する
(~/r/s/g/e/b/B1) $ mkdir build
(~/r/s/g/e/b/B1) $ cd build
# CMakeでビルドする
(~/r/s/g/e/b/B/build)$ cmake ..
(~/r/s/g/e/b/B/build)$ cmake --build .
[100%] Built target exampleB1
-
B1
サンプルをCMakeを使ってビルドする -
B1
ディレクトリの中にビルド用ディレクトリを作成する- ディレクトリ名はなんでもよいので
build
とした - このディレクトリの中に移動してCMakeを実行する
- ディレクトリ名はなんでもよいので
-
cmake
の引数はCMakeLists.txt
があるディレクトリを指定する- 今回の場合
cmake ..
となる - 現在のディレクトリ(
build
)にMakefile
をはじめ、必要なファイルが作成された
- 今回の場合
-
cmake --build
の引数はMakefile
があるディレクトリを指定する- 今回の場合
cmake --build .
となる -
make -j 8
でもビルドできる(make install
は必要ない)
- 今回の場合
-
exampleB1.cc
を確認した - 引数なし/ありで対話モード/バッチモードを切り替える様になっていた
- 対話モードでは
init_vis.mac
とvis.mac
を読み込むようになっていた
サンプルを実行する
# 前からの続き
(~/r/s/g/e/b/B/build) $ ./exampleB1 run1.mac
(~/r/s/g/e/b/B/build) $ ./exampleB1 run2.mac
(~/r/s/g/e/b/B/build) $ ./exampleB1 vis.mac
- ビルド用ディレクトリ(
build
)の中に、マクロ(.mac
)のサンプルもある - ビルドした実行ファイル(
exampleB1
)の引数に、このマクロを与えて実行する - ・・・なんか動いているっぽいが、
vis.mac
はなにも表示されなかった -
OpenGL
を有効にしてGeant4をビルドしてみる
OpenGLを有効にして再ビルド
$ spack install -j 8 geant4 +opengl
[+] /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk (external apple-gl-4.1.0-7zxl4gtxbssrebxhmlybw3hr2jtbhgki)
[+] /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk (external apple-glu-1.3.0-qlgfxf4jnhznzm35ucxxxcyygkfkcnxc)
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/clhep-2.4.6.4-vxupzlxhqgg6dy7v5c6dxvjuumlpj6az
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/nghttp2-1.57.0-l636eprnaph6brbh2lxuomalssi2qcbs
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/zlib-ng-2.1.4-2vspbawpttxcm7tufot74eo75onlephf
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/ncurses-6.4-wxifsbix6xick4zhqpadwqpbjwj6iexz
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/expat-2.5.0-mpf2j3zq2xuqyek66fubnobuwpfdx6fi
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4abla-3.1-zohy2vrjttwsvpdcbgp7upvw3wyp2z5r
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4emlow-8.2-jvpl4zvihulhxlxj7ntvmu4enai73syb
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4ensdfstate-2.3-z4ughquur4a2ycjvllfzobaeo4npcpeh
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4incl-1.0-p5uvyzctvilba553zvlde4u67weqy32g
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4ndl-4.7-jtnt5wt5fnza4ihunenxbg76rwsfbsca
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4particlexs-4.0-xcfhvmgg3tkoxsudvc2452prz7ojo7ux
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4photonevaporation-5.7-mmymywt4nuiihrd6uu54q7ll2zb4ct5v
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4pii-1.3-nogoyjgxjnvjqvrub4ks6nghvyormqot
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4radioactivedecay-5.6-insd4z3fmazyoloowjvp7jvkk4ew4t2o
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4realsurface-2.2-il76qwhy6okjt32jdvts5vbpoj5i7jjo
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/g4saiddata-2.0-ytgdtr2p53vhllkvwdzllnhxdgo3uj75
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/gmake-4.4.1-vskkbu4ps2ur6myydqb2bfcqhn3p362n
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/geant4-data-11.1.0-f5ohhrt2srcwxzsvyazg4qamrux5hu5h
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/curl-8.4.0-m7hp2jt6w6zubawptowsumvqxgwekhjm
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/xerces-c-3.2.4-aj4f3te7v4xucjnok4e5ln4fhhckxggp
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/cmake-3.27.7-q7awqrbrdatxqq5pxc26dtubrx3t7rio
==> Installing geant4-11.1.2-sjyyq7lvwgmtz3tkl2w4hn2fpm6fhh3t [24/24]
==> No binary for geant4-11.1.2-sjyyq7lvwgmtz3tkl2w4hn2fpm6fhh3t found: installing from source
==> Using cached archive: /opt/homebrew/Cellar/spack/0.21.1/var/spack/cache/_source-cache/archive/e9/e9df8ad18c445d9213f028fd9537e174d6badb59d94bab4eeae32f665beb89af.tar.gz
==> Applied patch /opt/homebrew/Cellar/spack/0.21.1/var/spack/repos/builtin/packages/geant4/package-cache.patch
==> geant4: Executing phase: 'cmake'
==> geant4: Executing phase: 'build'
==> geant4: Executing phase: 'install'
==> geant4: Successfully installed geant4-11.1.2-sjyyq7lvwgmtz3tkl2w4hn2fpm6fhh3t
Stage: 3.24s. Cmake: 6.74s. Build: 11m 33.38s. Install: 23.25s. Post-install: 7.08s. Total: 12m 14.10s
[+] /opt/homebrew/Cellar/spack/0.21.1/opt/spack/darwin-ventura-m2/apple-clang-15.0.0/geant4-11.1.2-sjyyq7lvwgmtz3tkl2w4hn2fpm6fhh3t
$ spack find -lv geant4
-- darwin-ventura-m2 / apple-clang@15.0.0 -----------------------
2b2cxmb geant4@11.1.2~ipo~motif~opengl~qt~tbb+threads~vecgeom~vtk~x11 build_system=cmake build_type=Release cxxstd=17 generator=make patches=2979cb7
sjyyq7l geant4@11.1.2~ipo~motif+opengl~qt~tbb+threads~vecgeom~vtk~x11 build_system=cmake build_type=Release cxxstd=17 generator=make patches=2979cb7
==> 2 installed packages
- インストール済みのパッケージがあるものはスキップされた
- 全体で12mくらいかかった
- 2種類のGeant4がインストールされていることを確認した
-
geant4/sjyyq7l
(+opengl
)を使って、シェルのセッションを新しくして、再度サンプルを実行する
- 同じ手順でビルドできた
-
vis.mac
はなにも表示されなかった -
Qt
を有効にしてトライしてみる
Qtを有効にして再ビルド
$ spack install -j 8 geant4 +qt
...
==> Installing qt-5.15.11-5ikzf36gofdcury3sgf4jzrbqaqkiwmx [58/59]
==> No binary for qt-5.15.11-5ikzf36gofdcury3sgf4jzrbqaqkiwmx found: installing from source
==> Using cached archive: /opt/homebrew/Cellar/spack/0.21.1/var/spack/cache/_source-cache/archive/74/7426b1eaab52ed169ce53804bdd05dfe364f761468f888a0f15a308dc1dc2951.tar.xz
==> Applied patch /opt/homebrew/Cellar/spack/0.21.1/var/spack/repos/builtin/packages/qt/qt5-pcre.patch
==> Applied patch /opt/homebrew/Cellar/spack/0.21.1/var/spack/repos/builtin/packages/qt/qt515-quick3d-assimp.patch
==> Applied patch /opt/homebrew/Cellar/spack/0.21.1/var/spack/repos/builtin/packages/qt/qt5-macos12.patch
==> Applied patch /opt/homebrew/Cellar/spack/0.21.1/var/spack/repos/builtin/packages/qt/qt59-qtbase-qtconfig256.patch
==> qt: Executing phase: 'configure'
==> Error: ProcessError: Command exited with status 3:
==> Warning: Skipping build of geant4-11.1.2-ykv2eqylvbaghtdo54eexn3i65qpyzia since qt-5.15.11-5ikzf36gofdcury3sgf4jzrbqaqkiwmx failed
==> Error: geant4-11.1.2-ykv2eqylvbaghtdo54eexn3i65qpyzia: Package was not installed
==> Error: Installation request failed. Refer to reported errors for failing package(s).
-
Qt
に関するパッケージが追加でインストールされた - だけど
Qt
のインストールには失敗した-
configure
でエラーがでているっぽい
-
Motifを有効にして再ビルド
$ spack install -j 8 geant4 +motif
- これも
motif
のビルドに失敗した
- ビジュアライズ系がうまくいかないのでひとやすみ
- VRML(
.wrl
ファイル)に書き出して、オンラインサービスで確認するのがいいかも- https://imagetostl.com/jp/view-vrml-online
- HomebrewでインストールできそうなVRMLビューワが見つからなかった
(ひとまず)まとめ
-
spack
を使ってGeant4本体はインストールできるが、可視化ツール(Qt)を有効にできない - シミュレーションの過程/結果をインタラクティブに確認したい場合は、通常のインストールがよい
- シミュレーションをひたすら実行したいだけなら問題ないのかもしれない
- スパコン上でビルドして実行してみたい
no LC_RPATH's found
実行時エラー:$ ./bin/Application_Main
dyld[7796]: Library not loaded: @rpath/libG4Tree.dylib
Referenced from: <ECA6C6F9-F3CE-3F83-BA3C-2191F7D130C1> ~/repos/sandbox/g4work/g4tutorial2024-1.0.1/P09_Scoring1/WaterBox_CBS/bin/Application_Main
Reason: no LC_RPATH's found
zsh: abort ./bin/Application_Main
-
make install
で./bin
に実行ファイルを作成した - そのファイルを実行すると
no LC_RPATH's fond
というエラーがでた- ビルド用のディレクトリで実行すればOK
- 最初の行に
Library not loaded: @rpath/libG4Tree.dylib
とあるように、原因はmacのダイナミックライブラリのパス設定にあるっぽい
CMakeLists.txtを修正
#----------------------------------------------------------------------------
# RPATH settings
set(CMAKE_MAXOSX_RPATH TRUE)
set(G4LIB "$ENV{HOME}/geant4/11.2.1/lib")
set(CMAKE_BUILD_RPATH ${G4LIB})
set(CMAKE_INSTALL_RPATH ${G4LIB})
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- CMakeLists.txtにRPATHの設定を追加した
- ライブラリのパスは(ほぼ)直打ちした
-
add_executable
などより前に設定する必要があった
Geant4の使い方
ここに整理した
このスクラップは2ヶ月前にクローズされました