0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

便利なパッケージマネージャSpack

Posted at

Spack とは

Spack(スパック)は、ローレンス・リバモア国立研究所(LLNL)で開発された、HPC環境向けの柔軟なパッケージマネージャーです。
一般的なLinuxのパッケージマネージャー(aptやyum)と異なり、HPCでは以下の要件が求められます。

  • 性能の最大化: 特定のCPUアーキテクチャ(AVX-512など)に最適化してコンパイルしたい。
  • コンパイラの多様性: GCC, Intel, NVIDIA (PGI), LLVMなど、異なるコンパイラを使い分けたい。
  • MPIの依存関係: OpenMPI, MVAPICH2, Intel MPIなど、異なるMPIライブラリ上で動作させたい。
  • バージョンの共存: 同じライブラリの「バージョン1.2」と「バージョン1.3」を同時に維持したい。

Spackは、これらの組み合わせを管理し、衝突することなくインストールすることができます。

インストール方法

以下のリポジトリをクローンし,読み込むだけ

git clone --depth=2 --branch=releases/v1.1 https://github.com/spack/spack.git
cd ./spack
source share/spack/setup-env.sh

最初にコンパイラを認識させるため,以下のコマンドを実行

spack compiler find
spack compilers

これでパスが通っているコンパイラが見つかるはずです.あとは,ライブラリやコンパイラをインストール出来ます.

コンパイラのインストール

例えば,私が使っている Ryzen9 9800X3D では AOCC コンパイラを利用する方が,性能が出るとされています.AOCC をインストールするには以下のコマンドを実行してください.

spack install aocc +license-agreed

たったこれだけで,AOCC のビルドからインストールまでやってくれます.
インストール後,AOCC コンパイラを使うには以下のコマンドでパスなどを読み込みます.

spack load aocc

ライブラリのインストール

インストール出来るライブラリの一覧は,以下のコマンドで見られます.
一度に数千件出るので注意です.

spack list

この中から,BLASライブラリを調べたいときには,以下の方法で検索できます.

spack list blas

OpenBLAS等が引っかかると思います.今回は,様々なOpenBLASをインストールしてその便利さを確かめたいと思います.BLAS を普段はマルチコアで動かし,MPI経由などではシングルスレッドで動かしたい.という要望はよくあります.このとき,ライブラリにサフィクスを付けて管理する方法もありますが,Spack ではもっと簡単出す.各ライブラリを aocc でコンパイル,その他いろいろなオプションでインストールするには以下の方法で出来ます.

# マルチスレッド版
spack install openblas +locking threads=openmp %aocc
# シングルスレッド版
spack install openblas +locking threads=none %aocc

意味としては +locking で USE_LOCKING オプションを有効化,threads でマルチ/シングル切り替え,%aocc で AOCCコンパイラでビルドです.

それぞれ,インストールされたライブラリを使用したいときは,load オプションで読み込むことが出来ます.

# マルチスレッド版
spack load openblas threads=openmp
# シングルスレッド版
spack load openblas threads=none

あとはビルドする時などに以下の記述を利用すれば,場所などは取得できます.

$(spack location -i openblas threads=none)

終わりに

以上,駆け足でしたが簡単に Spack の情報をまとめてみました.科学技術計算をやる上では,非常に便利なパッケージマネージャとなっているので,私みたいに研究を趣味としている人は是非使ってみてください.

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?