mpirunとmpiexecの違いは何か
MPIプログラムを起動する方法として,mpirun
とmpiexec
があります.プログラムを普通に起動するだけなら,どちらのコマンドでも困ることはありません.実行するノードとプロセス数の指定をする程度なら,どの実装のどちらのコマンドを使っても大差ないからです.
初期のMPI標準(MPI-1)には,プログラムの起動方法は言及されていませんでした.よって,それぞれのMPI実装はmpirun
と呼ばれるコマンドを実装しましたが,コマンドラインオプションはそれぞれ異なるものでした.
これは不便だということで、MPI-2においてmpiexec
が標準として定められました.現在の標準である MPI-3.1 では,「8.8 Portable MPI Process Startup」でmpiexec
コマンドが述べられています.
標準なのだから黙ってmpiexec
を使えばいいのですが,残念ながら話はそこまで単純ではありません.現実には,mpiexec
に定められているのは最大公約数的なオプションだけで,詳細は実装に任されています.
オプション | 意味 |
---|---|
-n | プロセス数 |
-host | MPIプログラムを実行するホストが指定されたファイル(書式は実装依存) |
-arch | アーキテクチャ名.よくわからん |
-wdir | プロセスが実行される実行ディレクトリ名 |
-file | 実行に関する追加情報が書かれたファイルを指定.中身は実装依存(なんじゃそりゃ) |
-sort | MPI_COMM_SPAWN などが作れるプロセス数を指定.詳細省略 |
標準なので仕方ないのですが,これではいかにも物足りません.
現実的に重要なのは,プロセスのリソースへのマッピングとバインディング,それから環境変数の指定です.MPI実装の事実上の二強である Open MPI と Mpich では,--map-by
や--bind-to
,-x
,-genv
などのオプションが実装されていますが,それぞれ詳細は異なります.これらについてのまとめは非常に少ないので,時間を見つけてまとめてみたいと思います.
余談だが,世の中の殆どのMPI実装は Open MPIか Mpichの派生で、mpichの派生としては mvapich, Intel MPI,またOpen MPIの派生としてはFujitsu MPIなどがあります.この2つのmpiexecの文法を身につければ怖くないと言えるでしょう.
- 作者: P.パチェコ,Peter S. Pacheco,秋葉博
- 出版社/メーカー: 培風館
- 発売日: 2001/07
- メディア: 単行本
- 購入: 1人 クリック: 13回
- この商品を含むブログ (7件) を見る