web-dev-qa-db-ja.com

mpirun、mpiexec、mpiexec.hydraの違いと関係は何ですか?

Mpirun、mpiexec、mpiexec.hydraの3つについて混乱しました。

私のクラスターには、それらすべてが存在し、それらはすべてIntelに属しています。

それらの違いと関係は何ですか?特に、mpiexec.hydraとは一体何ですか? mpiexecとhydraの間にドットがあるのはなぜですか?それはどういう意味ですか?

15
user15964

mpirunmpiexecは基本的に同じです-多くのMPI実装におけるプロセスランチャーの名前。MPI標準ランクを開始および制御する方法については何も述べていませんが、(要求はしていませんが)何らかのランチャーがある場合は、mpiexecという名前にすることをお勧めします。一部のMPI実装はmpirunで始まり、互換性のためにmpiexecを採用しました。他の実装はその逆でした。最終的に、ほとんどの実装は両方の名前でランチャーを提供します。実際には、 mpirunmpiexecの機能に違いはありません。

さまざまなMPI実装には、プロセスの起動と制御のさまざまな手段があります。MPICHは、MPD(Multi-Purpose Daemonなど)と呼ばれるインフラストラクチャから始まりました。その後、新しいHydraプロセスマネージャーに切り替えました。Hydra以降MPDとは異なる動作をするため、HydraベースのmpiexecはMPDベースの引数とは異なるコマンドライン引数を取り、ユーザーがHydraベースの引数を明示的に選択できるようにするために、mpiexec.hydraとして利用可能になります。 。古いものはmpiexec.mpdと呼ばれます。Hydraランチャーのみを提供するMPICHベースのMPIライブラリを使用すると、mpiexecmpiexec.hydraが同じ実行可能になります。 Intel MPIはMPICHに基づいており、その新しいバージョンはHydraプロセスマネージャーを使用します。

Open MPIはOpenRun-Time Environment(ORTE)の上に構築され、独自のプロセスランチャーはorterunと呼ばれます。互換性のために、orterunもシンボリックリンクされていますmpirunおよびmpiexecとして。

要約すると:

  • mpiexec.somethingは、特定の実装のMPIプロセスランチャーの特定のバージョンです。
  • mpiexecおよびmpirunは一般的な名前であり、通常は実際のランチャーのコピーまたはシンボリックリンクです。
  • mpiexecmpirunの両方が同じことをする必要があります
  • ランチャーにmpiexecという名前を付ける実装もあれば、mpirunという名前を付ける実装もあり、両方に名前を付ける実装もあります。これは、複数のMPIシステムパスで同時に利用可能です(たとえば、distroパッケージからインストールされた場合)
21
Hristo Iliev