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