2016-05-22 29 views
7

Pomyślałem o 3 rzeczach: mpirun, mpiexec i mpiexec.hydraJaka jest różnica i związek między mpirun, mpiexec i mpiexec.hydra?

Na mojej gromadzie wszystkie one istnieją, a wszystkie należą do intel.

Jaka jest różnica i związek między nimi? Zwłaszcza, co na ziemi jest mpiexec.hydra? Dlaczego istnieje kropka między mpiexec i hydrą, co to znaczy?

+0

Możliwy duplikat [Jaki jest najlepszy postęp Hydry MPI] (http://stackoverflow.com/questions/6091397/whats-the-best-advance-of-hydra-mpi) –

+0

@JohnZwinck Cześć, JohnZwinck. Nie sądzę. Znam ten post, ale po przeczytaniu go nadal nie rozumiem. Więc napisałem ten post – user15964

Odpowiedz

15

i mpiexec są w zasadzie takie same - nazwa programu uruchamiającego proces w wielu implementacjach MPI. Standard MPI nie mówi nic o tym, jak należy uruchamiać i kontrolować stopnie, ale zaleca (choć nie wymaga), że jeśli jest jakikolwiek launcher, powinien on mieć nazwę mpiexec. Niektóre implementacje MPI rozpoczęły się od mpirun, a następnie przyjęto mpiexec w celu zapewnienia zgodności. Inne wdrożenia miały odwrotny skutek. W końcu większość implementacji udostępnia swój program uruchamiający pod dwiema nazwami. W praktyce nie powinno być różnicy w tym, co robią mpirun i.

Różne implementacje MPI mają różne sposoby uruchamiania i kontrolowania procesów. MPICH rozpoczął od infrastruktury o nazwie MPD (Multi-Purpose Daemon lub coś podobnego). Następnie przełączył się na nowszego menedżera procesu Hydra. Ponieważ Hydra robi coś inaczej niż MPD, bazująca na Hydrze mpiexec przyjmuje różne argumenty w wierszu poleceń niż argumenty oparte na MPD i umożliwia użytkownikom jawne wybieranie tego opartego na Hydrze, jest on dostępny jako mpiexec.hydra. Ten stary nazywa się mpiexec.mpd. Możliwe jest posiadanie biblioteki MPI opartej na MPICH, która zapewnia tylko program uruchamiający Hydra, a następnie mpiexec i mpiexec.hydra będzie tym samym plikiem wykonywalnym. Intel MPI oparty jest na MPICH, a jego nowsze wersje korzystają z menedżera procesów Hydra.

Otwarty MPI jest zbudowany na otwartym środowisku wykonawczym (ORTE), a jego własny proces uruchamiania nazywa się orterun. Dla zgodności, orterun jest również dowiązany symbolicznie jako mpirun i.

Podsumowując:

  • mpiexec.something jest specyficzną wersją procesu wyrzutni MPI dla danej implementacji
  • mpiexec i mpirun są nazwy rodzajowe, zazwyczaj kopie lub dowiązania symboliczne do rzeczywistej wyrzutni
  • zarówno i mpirun powinny zrobić to samo, co niektóre implementacje wymieniać ich launcher mpiexec, niektórzy nazywają to., niektórzy nazywają to za jedno i to często jest źródłem nieporozumień, gdy więcej niż jedna implementacja MPI jest jednocześnie dostępna w ścieżkach systemowych (np. po zainstalowaniu z pakietów dystrybucyjnych)
+0

Dziękuję bardzo, Hristo Iliev. Twoja odpowiedź sprawia, że ​​rzeczy stają się bardziej przejrzyste. I wydaje się, że 'mpirun' musi określać opcje' -n', podczas gdy 'mpiexec' i' mpiexec.hydra' nie muszą być – user15964