1. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Rescale で Singularity を使ってみよう!
株式会社アルゴグラフィックス / 古家 真之介
第一回 Singularity 勉強会 / 2018.01.10
2. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Quick Overview of Containers
2
物理マシン 物理マシン 物理マシン
ホストOS ホストOS ホストOS
ハイパーバイザ Dockerエンジン
ゲストOS
ライブラリ
ミドルウェア
アプリ
ライブラリ
ミドルウェア
アプリ
ゲストOS
ライブラリ
ミドルウェア
アプリ
ライブラリ
ミドルウェア
アプリ
ライブラリ
ミドルウェア
アプリ
ライブラリ
ミドルウェア
アプリ
物理基盤 仮想化基盤 コンテナ
仮想化と似ているが、コンパクト&シンプル
3. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
What is Singularity?
▍Docker のようなコンテナ
HPC 用途に特化
▍Lawrence Berkley National Laboratory で作られた
http://singularity.lbl.gov
▍GPU / Infiniband / MPI に対応
これらは HPC 用途では必須
▍Job Scheduler にも対応
SLURM / Torque / SGE など
▍実行時に root 権限不要
システム管理者的にハードルが低い
▍コンテナ管理がラク
コンテナが一つのファイルに全て入っているため、他のホストで実
行する際はこれをコピーするだけ
3
4. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
What is Singularity?
▍主なコマンド
コンテナ作成時に設定したコマンドを実行
▶ singularity run xxx.img
▶ ./xxx.img
任意のコマンドを実行
▶ singularity exec xxx.img /path/to/command
コンテナ内でシェルを起動
▶ singularity shell xxx.img
▍詳細は以下の論文で。。。
Kurtzer GM, Sochat V, Bauer MW (2017)
Singularity: Scientific containers for mobility of compute.
PLoS ONE 12(5): e0177459.
https://doi.org/10.1371/journal.pone.0177459
4
5. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Presentations of Singularity
▍2016年の Intel HPC Developer Conference
▍2017年の ISC で開催された Linux Container Workshop
5
6. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Singularity on Rescale
▍Rescale で Singularity をサポート (ちょい古い 2.3系だが)
Bring Your Own Singularity Container
Bring Your Own Singularity Container (MPI)
6
7. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Singularity on Rescale - Let’s try!
▍Rescale の「Bring Your Own Singularity Container (MPI)」を
使って、複数ノードにまたがる MPI ジョブを実行してみる
Bring Your Own (MPI) Software との大きな違いは、OSやラ
イブラリ等を選ぶ自由度がある
▶ CentOS6 / CentOS7 / Ubuntu16.04 / SLES12 などなど
▍今回は分子動力学法のアプリ LAMMPS で試してみる
他のアプリでも基本的な手順は一緒
▍(お金が無いので) 今回は Nickel を 2ノード (32コア) で動作確認
2ノードで実行できるのであれば、3ノード以上も大丈夫かと。。。
7
9. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Build Container Image
▍イメージファイル作成
9
$ singularity img.create -s 768 lammps-23Oct2017.img ← 768MBのイメージファイル作成
$ sudo singularity build -w lammps-23Oct2017.img singularity-lammps ← singularity-lammps (さっき作ったファイル) の内容に従い
イメージの中身作成
※バージョン2.4よりも古いSingularityで実行する場合、
-w を付けて読み書き可能な(古い)形式でビルドする
mkdir /tmp/build
cd /tmp/build ← ここから OpenMPI の build
wget https://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.4.tar.gz
tar xvfz openmpi-1.6.4.tar.gz
cd openmpi-1.6.4
./configure --prefix=/usr/local
make
make install
cd /tmp/build ← ここから LAMMPS の build
git clone https://github.com/lammps/lammps.git
cd lammps
git checkout -b patch_23Oct2017
cd src/
make g++_openmpi
cp lmp_g++_openmpi /usr/local/bin/
cd / ← 後処理とゴミ掃除
mkdir /enc
rm -rf /tmp/build
yum clean all
10. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Run My-LAMMPS on Rescale
▍入力ファイル
コンテナのイメージファイル (lammps-23Oct2017.img) と
LAMMPS のインプットファイル (in.lj) を選択
10
11. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Run My-LAMMPS on Rescale
▍ソフトウェア
Bring Your Own Singularity Container (MPI) を選択
バージョンは OpenMPI 1.6.4 を選択
コマンドは適切なものに変更
▶ mpirun ... singularity run lammps-23Oct2017.img < in.lj
11
12. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Run My-LAMMPS on Rescale
▍ハードウェア
適切なものを選択 (今回は Nickel 32コア; 2ノード)
12
13. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Run My-LAMMPS on Rescale
▍ジョブ実行
13
14. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Run My-LAMMPS on Rescale
▍ジョブ終了
14
15. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Run My-LAMMPS on Rescale
▍結果の確認
15
16. COPYRIGHT ARGO GRAPHICS INC. ALL RIGHTS RESERVED.
ARGO GRAPHICS Inc.
Summary
▍Singularity について概要を説明
HPC 用途に特化したコンテナ
GPU / Infiniband / MPI / Job Scheduler 等に対応
コンテナは一つのファイルに全て入っている
▍Rescale は Bring Your Own Singularity Container でサポート
シリアル版は GPU 対応 (CUDA 8.0)
MPI 版は Intel MPI 5.0.3 と OpenMPI 1.6.4 に対応
▍LAMMPS が実行できるコンテナを作成し、Rescale で実行
Nickel 2ノードで問題なく実行できた
16