計算ノードからインターネットに出れない環境でSpack Package Managerを使用する 2020年5月30日


TL; DR;

  • spack mirrorを使うことで、ソースのダウンロードとコンパイルを分割できる
    • (ログインノードで) spack mirror create -D llvm
    • (計算ノードで) spack install llvm

Spackとは

Spack package managerとは、Lawrence Livermore National Laboratory(LLNL)により開発された、HPC向けのパッケージマネージャーである。SC15で発表され、日本のフラグシップスパコンである富岳を含めた様々な環境で使用されている。同一のソフトウェアでも複数のバージョンを簡単にビルド・管理でき、本質的ではない退屈な作業から我々を解放してくれる有益なソフトウェアである。

例えば、llvmをビルドしたいときは、以下のコマンドで簡単に実行することが可能である。

spack install llvm

バージョンを指定してビルドする場合は次のとおりである。

spack install llvm@10.0.0

ビルドしたパッケージを使用する場合は以下の通りである。

spack load llvm@10.0.0

計算ノードから外部に疎通できない場合の使用方法

計算システムによっては、セキュリティ上の都合により、ログインノードからのみインターネットに疎通でき、計算ノードからは疎通できないこともある。一方、ログインノードでllvmのような大きいものをビルドするのは一般的にご法度であるため、ログインノードでspack installするのは避けたい。そのような環境においては、Spackのmirror機能を用いてパッケージのダウンロードとビルドを分割することで対応できる。

llvmをインストールしたい場合、はじめにログインノードで以下を実行する。-Dオプションを用いることで、依存するパッケージをよしなに探してダウンロードすることが可能である。

spack mirror create -D llvm

次に、計算ノードで以下を実行する。ローカルにあるmirrorから優先してパッケージを探すため、インターネットに疎通することなくビルドすることができる。

spack install llvm

以上のように、少々手間ではあるが、mirror機能を使うことで、計算ノードからインターネットへの疎通がない環境においてもご法度をすることなくSpackを使うとが可能である。ただし、ログインノードと計算ノードのOSが違う場合は、compilers.yaml を適宜修正する必要がある。

Leave a Reply