モチベーション
分散処理の実験をやってみたかったので、かねてからインストールしようと思っていたOpenMPIをインストールする。 ホスト上のアプリケーションから使えるだけでなく、Singularityで動作するアプリケーションでOpenMPIを使えるようにする。
はじめに - Typora正式版リリース(有償化)
久しぶりに、記事を書こうかと、Typoraを起動すると、バージョンアップするか聞かれたので、バージョンアップしたところ、起動時にライセンスキーの入力を求められた。遂に有償になったかと思いネット上を検索する。2021年11月23日に正式版がリリースされ、有料化された。
税抜きで14.99$で、日本円で税込で2,000円弱。PayPalで支払い、ライセンスキーを入力した。
バージョンは、1.0.5(6032)となっていた。
参考資料
SingularityからOpenMPIを使う場合に、どのようなインストール形態になるのか、そのように構築すれば良いのか分からなかったので、次の記事を参考にした。
-
上記スライドの13ページには、次の二つの方式を説明していた。
-
ホストのMPIをコンテナ側に見せる(コンテナのメリットが薄い)
-
コンテナ内にMPIをインストールし、コンテナの外からキックする。
この場合、ホスト側と同じMPIを使用し、Buildも同じにする必要がある、との記載があった。
-
-
上記のページでは、次の二つのアプローチがあると。
-
Host MPI、Hybridモデル
上記の2.の方式のことだと理解。
-
Bindモデル
上記の1.の方式のことだと理解。
-
方向性
前節・参考資料を参考に、Hybridモデルでインストールすることにした。 上記本家のページには、テスト用のアプリケーションプログラムも掲載されていたので、Singularityアプリとしてそのテストアプリケーションを動かすところまでを今回のゴールとする。
ホストにOpenMPIをインストール
OpenMPIのダウンロードページから最新の4.1をホスト・ホームディレクトリのDownloadsにダウンロードし、その後、次の手順でOpenMPIをコンパイル、インストールした。
$ cd ~/Downloads
$ tar -xjf openmpi-4.1.1.tar.bz2
$ cd openmpi-4.1.1
$ ./configure --prefix=/opt/ompi
$ make all install
上記では、makeの最終版の/opt/ompiにインストール(コピー)する際に次のようにエラーとなる。
/usr/bin/mkdir -p '/opt/ompi/share/openmpi/amca-param-sets'
/usr/bin/mkdir: ディレクトリ `/opt/ompi' を作成できません: 許可がありません
そこで、次でインストールを強行する。
$ sudo make install
ホストの.bashrcで、/opt/ompi/binにパスを通しておく。
Singularity版のテストアプリケーションを構築
参考資料を示した、Singulariy本家のページから、mpitest.cとmpi_test.defをダウンロードし、次の手順でsingularityアプリを構築する。
$ sudo singularity build mpi_test.sif mpi_test.def
出来上がったsifファイルを次の様にして実行する。
$ mpirun -n 4 singularity run mpi_test.sif /opt/mpitest
Hello, I am rank 3/4
Hello, I am rank 0/4
Hello, I am rank 1/4
Hello, I am rank 2/4
自分の実行環境では、8スロットでは動作しないので、上記の通り「-n 4」で実行した。
今後について
上記の手順で、MPIを使ったアプリケーションをSingularityコンテナとして動作させることができたので、今後は、別のアプリケーションの実行などを試してみたい。
出来上がったsifファイルは、約1,600MB(1.6GB)と巨大、これで良いのか、ちょっと疑問。