MEGADOCK
- タンパク質ドッキングによるタンパク質間相互作用予測ソフトウェア
- FFTによるグリッドベースの高速なドッキング計算
- OpenMP/MPI/GPUによる高速化
SIGBIO49
- Docker + MEGADOCK + MPI/GPU + クラウド環境 + 性能評価
- SIGBIO49@JAIST(2017/03/23)
- SpeakerDeck: https://speakerdeck.com/metavariable/evaluation-of-container-virtualized-megadock-system-in-distributed-computing-environment
物理1ノード上の性能比較
- CPU(MPI)版の実行はDocker版が若干遅く
- GPU版は、ほぼ差はない
クラウド環境上でMPI並列実行
- 16 threads / 4 MPI process / 1 Container / 1 VM
- DockerSwarmでコンテナ間ネットワークを構築
クラウド上のMPI並列実行の結果
- VM版とDocker on VM版でスケーラビリティはほぼ同じくらい
DockerでMEGADOCKのサンプルを動かす
1. (前提条件)Docker Engineを導入
公式Docker Docsに従って導入する
https://docs.docker.com/engine/installation/
- 今回は詳細は省略
- 要:管理者権限
- 現時点でDockerの実行は管理者権限が必須
- Docker互換のOSSツールなどはある
- ホストOSのカーネルバージョンが古いと入れられない場合がある
2. とりあえずMEGADOCKサンプルを動かす
MEGADOCKをビルド済みのコンテナイメージをDockerHubからダウンロードしてサンプルを実行をする
(https://github.com/metaVariable/Megadock-Docker)
mpirun -n 4 megadock-dp -tb SAMPLE.table
-
内部処理
- コマンド実行
- ローカル環境に指定されたコンテナイメージがなければ、DockerHubからダウンロード
- ダウンロードしたコンテナイメージから、コンテナのプロセスを生成
- プロセス内でサンプルを実行
-
今回は余計なものがない、シングルノード上のサンプル実行用のイメージ
-
研究報告ではSSH鍵登録なども行ったコンテナイメージで複数ノードのMPI並列実行
デモ
3. 研究の再現性
GitHub <---> DockerHub の連携
- GitHubのリポジトリを更新するとDockerHubのコンテナイメージを自動的に更新できる
- コードの更新と同時にコンテナイメージの作成とテストコードの実行なども可能
- 担当者がいなくなったあともコードと実行環境を保持できる
4. Dockerは便利
-
拾ってきたアプリを触ってみるとき
- 適当なOSイメージに、適当にライブラリを入れて、ビルドできるか試せる
- 失敗したらコンテナを破棄すればよい
- 誰かが作成したコンテナのイメージを使うと、ビルドせずに試せる(GitHubやDockerHubに多くある)
- 適当なOSイメージに、適当にライブラリを入れて、ビルドできるか試せる
-
別のマシンと環境を共有したいとき
- 構築済みの環境を他の人にそのまま手渡せる
- 環境の構築をコード化して画一的に管理できる(Dockerfile)