Mpirun、mpiexec、mpiexec.hydraの3つについて混乱しました。
私のクラスターには、それらすべてが存在し、それらはすべてIntelに属しています。
それらの違いと関係は何ですか?特に、mpiexec.hydraとは一体何ですか? mpiexecとhydraの間にドットがあるのはなぜですか?それはどういう意味ですか?
mpirun
とmpiexec
は基本的に同じです-多くのMPI実装におけるプロセスランチャーの名前。MPI標準ランクを開始および制御する方法については何も述べていませんが、(要求はしていませんが)何らかのランチャーがある場合は、mpiexec
という名前にすることをお勧めします。一部のMPI実装はmpirun
で始まり、互換性のためにmpiexec
を採用しました。他の実装はその逆でした。最終的に、ほとんどの実装は両方の名前でランチャーを提供します。実際には、 mpirun
とmpiexec
の機能に違いはありません。
さまざまなMPI実装には、プロセスの起動と制御のさまざまな手段があります。MPICHは、MPD(Multi-Purpose Daemonなど)と呼ばれるインフラストラクチャから始まりました。その後、新しいHydraプロセスマネージャーに切り替えました。Hydra以降MPDとは異なる動作をするため、Hydraベースのmpiexec
はMPDベースの引数とは異なるコマンドライン引数を取り、ユーザーがHydraベースの引数を明示的に選択できるようにするために、mpiexec.hydra
として利用可能になります。 。古いものはmpiexec.mpd
と呼ばれます。Hydraランチャーのみを提供するMPICHベースのMPIライブラリを使用すると、mpiexec
とmpiexec.hydra
が同じ実行可能になります。 Intel MPIはMPICHに基づいており、その新しいバージョンはHydraプロセスマネージャーを使用します。
Open MPIはOpenRun-Time Environment(ORTE)の上に構築され、独自のプロセスランチャーはorterun
と呼ばれます。互換性のために、orterun
もシンボリックリンクされていますmpirun
およびmpiexec
として。
要約すると:
mpiexec.something
は、特定の実装のMPIプロセスランチャーの特定のバージョンです。mpiexec
およびmpirun
は一般的な名前であり、通常は実際のランチャーのコピーまたはシンボリックリンクです。mpiexec
とmpirun
の両方が同じことをする必要がありますmpiexec
という名前を付ける実装もあれば、mpirun
という名前を付ける実装もあり、両方に名前を付ける実装もあります。これは、複数のMPIシステムパスで同時に利用可能です(たとえば、distroパッケージからインストールされた場合)