私のひらめき日記スマートフォン用の表示で見る私のひらめき日記ようこそ2019-06-29ABCIシステムの使い方(応用編)はじめにABCIシステムの使い方というタイトルでブログ記事を書いたがまぁまぁ反響があったため、自身が実際にどうスパコンの上で基盤構築したかをアプリケーション依存1の話を極力避けてお話したい。MPIやOpenMPについては説明しない。お約束ですが、あくまで個人の使用感と知見なので、詳細かつ正確な動作については、公式のドキュメントを見ましょう。こちらをまず初めにご覧になることをおすすめします。スパコンを利用するモチベーションとかも書いてる。スパコン(多分、京)を使用する際のスパコンの構成やら使い方やらが非常にわかりやすく説明されているのでおすすめ。Imageをdownloadしてきて所要のプログラムを実行するだけで良い。imageの作成方法」の4番目の方法を踏襲している。今回は、次節で述べられている事情があり、Dockerfileから直接imageを作りに行ったので、かなりめんどくさいことをやっている。loadコマンドで使用できる2ので気軽に使用できるはずだ。やりたい事に応じてABCIのドキュメントを適宜参照するのが一番良い。参照してC++用のtensorflowの環境をDockerfileで作成する。Python用はDockerHubにあるが、C++用で所要のバージョンのものがなかったので、Dockerfileから作成した。nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04の上で構築した。アプリケーションを動作させるための環境もDockerfileで作成する。knknkn/tensorflow(1番のやつ)の上で構築する。1と2でDockerfileを分離した理由としては、1のC++用tensorflowのbazelでのビルドが数時間かかる(!!)ので、できるだけ1の再ビルドを避けたいという意図から。アプリケーションのソースコードレポジトリのmasterへのコミットをトリガーにして、2で作成したDockerfileをビルドし、imageを作成する。Imageに変換しておく。辺りを見て確認すると良い。ldconfig.tf_configure.bazelrcの設定ファイルでCUDAに関する諸々を設定しているので、これでGPUサポートされている形となる。cudnn/7.3/7.3.1としておく必要がある。nvidia-docker2を用いる。こちらは、CentOS7かRedHat上でインストールする必要がある。/bin/bashと実行すれば良い。Singularityの場合、--nvオプションがGPU仮想化に相当する。imageの作成方法」2番を参照した。Recipe(Dockerfileみたいなもの)を作成する必要があった。cloneする)だけなので、特にAnsibleを使用する必然性はなかった3が、自分はReference[1]の「ABCIの概要」にも述べたように、sshのトンネリングを掘ってから、ansible-playbookを実行した。デプロイ、プログラム実行までさて、Ansibleでいろいろスクリプトファイルを置ける準備が整ったので、後はscriptを実行して、所要のプログラムを実行させることができる。次節ではABCIを便利に扱うことのできるコマンドをざっと紹介する。した」という事例をいくつか紹介する。Scheduler」の章に既にだいたいまとめてある。した」的な感じでまとめる。GRIDScaler)を共有します。」と書いてあることを確認すること。あるファイルをどっかのノードに置けば、そのファイルが全ノードに共有される。簡易なものを作成するときはこの性質を利用すれば事足りてしまう。SingularityについてSingularityとはHPC用のコンテナライブラリでDockerと同種のものだが、使用感がややDockerと異なる。基本的な使用法についてはReference[1]の「Singularity」の節を参照のこと。singularityコマンドの--nvを指定する。