NIG Supercomputer

spack の使い方

Spack はユーザ権限で利用できるパッケージマネージャです。

参考資料

spack で利用可能なパッケージを表示する

spack list, spack infoコマンド

spack listコマンドにより利用可能なパッケージの一覧が表示できます。 (初回実行時のみ表示に時間がかかります。)

$ spack list | wc
   6348    6348   68228

spack infoコマンドで利用可能なパッケージの詳細を表示することができます。

$ spack info gcc
AutotoolsPackage:   gcc

Description:
    The GNU Compiler Collection includes front ends for C, C++, Objective-C,
    Fortran, Ada, and Go, as well as libraries for these languages.

Homepage: https://gcc.gnu.org

Preferred version:  
    11.2.0    https://ftpmirror.gnu.org/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz

Safe versions:  
    master    [git] git://gcc.gnu.org/git/gcc.git on branch master
    11.2.0    https://ftpmirror.gnu.org/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz
    11.1.0    https://ftpmirror.gnu.org/gcc/gcc-11.1.0/gcc-11.1.0.tar.xz
    10.3.0    https://ftpmirror.gnu.org/gcc/gcc-10.3.0/gcc-10.3.0.tar.xz
    10.2.0    https://ftpmirror.gnu.org/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
    10.1.0    https://ftpmirror.gnu.org/gcc/gcc-10.1.0/gcc-10.1.0.tar.xz
    9.4.0     https://ftpmirror.gnu.org/gcc/gcc-9.4.0/gcc-9.4.0.tar.xz
    9.3.0     https://ftpmirror.gnu.org/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz
    9.2.0     https://ftpmirror.gnu.org/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz
    9.1.0     https://ftpmirror.gnu.org/gcc/gcc-9.1.0/gcc-9.1.0.tar.xz
    8.5.0     https://ftpmirror.gnu.org/gcc/gcc-8.5.0/gcc-8.5.0.tar.xz
    8.4.0     https://ftpmirror.gnu.org/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz
    8.3.0     https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz
    8.2.0     https://ftpmirror.gnu.org/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz
    8.1.0     https://ftpmirror.gnu.org/gcc/gcc-8.1.0/gcc-8.1.0.tar.xz
    7.5.0     https://ftpmirror.gnu.org/gcc/gcc-7.5.0/gcc-7.5.0.tar.xz
    7.4.0     https://ftpmirror.gnu.org/gcc/gcc-7.4.0/gcc-7.4.0.tar.xz
    7.3.0     https://ftpmirror.gnu.org/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz
    7.2.0     https://ftpmirror.gnu.org/gcc/gcc-7.2.0/gcc-7.2.0.tar.xz
    7.1.0     https://ftpmirror.gnu.org/gcc/gcc-7.1.0/gcc-7.1.0.tar.bz2
    6.5.0     https://ftpmirror.gnu.org/gcc/gcc-6.5.0/gcc-6.5.0.tar.bz2
    6.4.0     https://ftpmirror.gnu.org/gcc/gcc-6.4.0/gcc-6.4.0.tar.bz2
    6.3.0     https://ftpmirror.gnu.org/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
    6.2.0     https://ftpmirror.gnu.org/gcc/gcc-6.2.0/gcc-6.2.0.tar.bz2
    6.1.0     https://ftpmirror.gnu.org/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2
    5.5.0     https://ftpmirror.gnu.org/gcc/gcc-5.5.0/gcc-5.5.0.tar.bz2
    5.4.0     https://ftpmirror.gnu.org/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
    5.3.0     https://ftpmirror.gnu.org/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2
    5.2.0     https://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
    5.1.0     https://ftpmirror.gnu.org/gcc/gcc-5.1.0/gcc-5.1.0.tar.bz2
    4.9.4     https://ftpmirror.gnu.org/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2
    4.9.3     https://ftpmirror.gnu.org/gcc/gcc-4.9.3/gcc-4.9.3.tar.bz2
    4.9.2     https://ftpmirror.gnu.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2
    4.9.1     https://ftpmirror.gnu.org/gcc/gcc-4.9.1/gcc-4.9.1.tar.bz2
    4.8.5     https://ftpmirror.gnu.org/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
    4.8.4     https://ftpmirror.gnu.org/gcc/gcc-4.8.4/gcc-4.8.4.tar.bz2
    4.7.4     https://ftpmirror.gnu.org/gcc/gcc-4.7.4/gcc-4.7.4.tar.bz2
    4.6.4     https://ftpmirror.gnu.org/gcc/gcc-4.6.4/gcc-4.6.4.tar.bz2
    4.5.4     https://ftpmirror.gnu.org/gcc/gcc-4.5.4/gcc-4.5.4.tar.bz2

Deprecated versions:  
    None

Variants:
    Name [Default]               When    Allowed values          Description
    =========================    ====    ====================    ===================================================

    binutils [off]               --      on, off                 Build via binutils
    bootstrap [on]               --      on, off                 Enable 3-stage bootstrap
    graphite [off]               --      on, off                 Enable Graphite loop optimizations (requires ISL)
    languages [c,c++,fortran]    --      ada, brig, c, c++,      Compilers and runtime libraries to build
                                         fortran, go, java,      
                                         jit, lto, objc,         
                                         obj-c++                 
    nvptx [off]                  --      on, off                 Target nvptx offloading to NVIDIA GPUs
    piclibs [off]                --      on, off                 Build PIC versions of libgfortran.a and libstdc++.a
    strip [off]                  --      on, off                 Strip executables to reduce installation size

Build Dependencies:
    autoconf  automake  binutils  cuda  diffutils  flex  gawk  gmp  gnat  gnuconfig  iconv  isl  libtool  m4  mpc  mpfr  texinfo  zip  zlib  zstd

Link Dependencies:
    binutils  cuda  gmp  gnat  iconv  isl  mpc  mpfr  zlib  zstd

Run Dependencies:
    binutils

"Spack packages" Web サイト

https://spack.github.io/packages/ Web サイトから spack で利用可能なパッケージを検索できます。

パッケージをインストールする

spack installコマンドでパッケージをインストールします。(アンインストールはspack unintall

最も簡単な例

spack install tree

バージョンの指定

バージョンを指定してインストールするには以下のようにします。

spack install -j 4 --fail-fast gcc@8.5.0

その他のオプションについては、spack help installの出力を参照して下さい。

インストール時のコンパイル条件の指定

spack infoコマンドの実行時に表示される Variants の項目を利用して、 インストール時のコンパイル条件を指定することができます。

spack install -j 4 --fail-fast gcc@8.5.0 binutils=True

インストールしたパッケージを利用可能にする

spack loadコマンドでインストールしたパッケージを利用可能にします。(spack unloadでロードの解除)

これにより複数のバージョンを切り替えることができます。

spack load gcc@8.5.0

複数の同一パッケージをインストールしてしまった場合

例えば、emacs@27.2をすでに spack でインストールしてあるにも関わらずもう一度同じemacs@27.2を同一条件でインストールしてしまった場合、spack load emacsを実行した際などに以下のようなエラーが出ることがあります。

==> Error: emacs matches multiple packages.  Matching packages:    
xi4oeab emacs@27.2%gcc@8.5.0 arch=linux-centos7-zen    
7ck36ru emacs@27.2%gcc@8.5.0 arch=linux-centos7-zen  

Use a more specific spec.

このようなエラーが出る場合、一方は不要なので削除してください。

以下のコマンドにより、上記ハッシュ値を用いてアンインストールできます。

spack uninstall /7ck36ru