OpenMPIをインストール

モチベーション

分散処理の実験をやってみたかったので、かねてからインストールしようと思っていたOpenMPIをインストールする。 ホスト上のアプリケーションから使えるだけでなく、Singularityで動作するアプリケーションでOpenMPIを使えるようにする。

はじめに - Typora正式版リリース(有償化)

久しぶりに、記事を書こうかと、Typoraを起動すると、バージョンアップするか聞かれたので、バージョンアップしたところ、起動時にライセンスキーの入力を求められた。遂に有償になったかと思いネット上を検索する。2021年11月23日に正式版がリリースされ、有料化された。

税抜きで14.99$で、日本円で税込で2,000円弱。PayPalで支払い、ライセンスキーを入力した。

バージョンは、1.0.5(6032)となっていた。

参考資料

SingularityからOpenMPIを使う場合に、どのようなインストール形態になるのか、そのように構築すれば良いのか分からなかったので、次の記事を参考にした。

  • Singularityで分散深層学習

    上記スライドの13ページには、次の二つの方式を説明していた。

    1. ホストのMPIをコンテナ側に見せる(コンテナのメリットが薄い)

    2. コンテナ内にMPIをインストールし、コンテナの外からキックする。

      この場合、ホスト側と同じMPIを使用し、Buildも同じにする必要がある、との記載があった。

  • Singularity本家のページ

    上記のページでは、次の二つのアプローチがあると。

    1. Host MPI、Hybridモデル

      上記の2.の方式のことだと理解。

    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)と巨大、これで良いのか、ちょっと疑問。