私の小さな知識によれば、mpirun
とmpiexec
は両方ともランチャーです。誰でもmpiexec
とmpirun
の正確な違いを知ることができますか?
mpiexec
は、MPI標準(少なくとも最新バージョン)で定義されています。詳細については、お気に入りの検索エンジンで検索できます)を参照してください。
mpirun
は、多くのMPI実装によって実装されたコマンドです。ただし、標準化されたことはなく、実装の間には微妙な違いが常にありました。詳細については、ドキュメントを参照してください。選択した実装の.
はい、両方ともMPIプログラムを起動するために使用されます。最近ではmpiexec
が標準化されているため、一般的に望ましいです。
質問が回答されたことは知っていますが、答えは最高ではないと思います。ここでmpirunを使用してクラスターでいくつかの問題に遭遇し、mpirunとmpiexecに違いがあるかどうかを確認しました。これは私が見つけたものです:
説明
Mpiexecは、mpichパッケージの一部であるスクリプトmpirunの代替プログラムです。 PBSバッチ環境またはインタラクティブ環境内から並列ジョブを初期化するために使用されます。 Mpiexecは、PBSのタスクマネージャーライブラリを使用して、PBS割り当てのノードで実行可能ファイルのコピーを生成します。
スクリプト(mpirun)または外部デーモン(mpd)ではなくmpiexecを使用する理由:
- TMインターフェースを使用したタスクの開始は、プロセスごとに個別のrshまたはsshを呼び出すよりもはるかに高速です。
- Mpirunなどの起動スクリプトを使用する場合とは異なり、並列ジョブのすべてのプロセスはPBSの制御下にあるため、生成されたプロセスで使用されるリソースはmpiexecで正しく考慮され、PBSログに報告されます。
- CPU時間、ウォールクロック時間、メモリ使用量、またはディスク容量の割り当てられた制限を超えるタスクは、PBSによって完全に強制終了されます。 mpiexecを使用する場合、プロセスがリソースマネージャーの制御を逃れることは非常に困難です。
- Mpiexecを使用して、セキュリティポリシーを実施できます。 mpiexecおよびPBS実行環境を使用してすべてのジョブを起動する必要がある場合、クラスター内の計算ノードへのrshまたはsshアクセスを有効にする必要はありません。