2016-05-22 52 views
7

Mi sono confuso su 3 cose: mpirun, mpiexec e mpiexec.hydraQual è la differenza e la relazione tra mpirun, mpiexec e mpiexec.hydra?

Nel mio cluster, tutti esistono e appartengono a Intel.

Qual è la differenza e il rapporto tra loro? Soprattutto, che diamine è mpiexec.hydra? Perché c'è un punto tra mpiexec e hydra, cosa significa?

+0

Possibile duplicato di [Qual è il miglior progresso di Hydra MPI] (http://stackoverflow.com/questions/6091397/whats-the-best-advance-of-hydra-mpi) –

+0

@JohnZwinck Ciao, JohnZwinck. Io non la penso così Conosco quel post, ma dopo averlo letto, continuo a non capire. Così ho fatto questo post – user15964

risposta

15

mpirun e mpiexec sono fondamentalmente gli stessi: il nome del processo di avvio in molte implementazioni MPI. Lo standard MPI non dice nulla su come i ranghi dovrebbero essere avviati e controllati, ma raccomanda (anche se non richiede) che, se c'è un lanciatore di qualsiasi tipo, dovrebbe essere chiamato mpiexec. Alcune implementazioni MPI sono state avviate con mpirun, quindi hanno adottato mpiexec per la compatibilità. Altre implementazioni hanno fatto il contrario. Alla fine, la maggior parte delle implementazioni fornisce il proprio launcher sotto entrambi i nomi. In pratica, non dovrebbero esserci differenze in ciò che fanno mpirun e mpiexec.

Diverse implementazioni di MPI hanno diversi metodi di avvio e controllo dei processi. MPICH è iniziato con un'infrastruttura chiamata MPD (Multi-Purpose Daemon o qualcosa del genere). Quindi passò al nuovo gestore dei processi Hydra. Poiché Hydra fa cose in modo diverso rispetto a MPD, lo mpiexec basato su Hydra accetta diversi argomenti da riga di comando rispetto a quello basato su MPD e per consentire agli utenti di selezionare esplicitamente quello basato su Hydra, viene reso disponibile come mpiexec.hydra. Il vecchio si chiama mpiexec.mpd. È possibile avere una libreria MPI basata su MPICH che fornisce solo il launcher Hydra e quindi mpiexec e mpiexec.hydra sarà lo stesso eseguibile. Intel MPI è basato su MPICH e le sue versioni più recenti utilizzano il gestore del processo Hydra.

Open MPI è basato su Open Run-Time Environment (ORTE) e il proprio avvio di processo si chiama orterun. Per compatibilità, orterun è anche collegato come mpirun e mpiexec.

In sintesi:

  • mpiexec.something è una versione specifica del processo di lanciatore MPI per una data applicazione
  • mpiexec e mpirun sono i nomi generici, di solito copie o collegamenti simbolici a lanciatore attuale
  • sia mpiexec sia mpirun dovrebbero fare lo stesso
  • alcune implementazioni denominano il proprio launcher mpiexec, alcuni lo chiamano mpirun, alcuni lo chiamano entrambi e questo è spesso fonte di confusione quando più di una implementazione MPI è disponibile simultaneamente nei percorsi di sistema (ad es. quando installato da pacchetti di distribuzione)
+0

Grazie mille, Hristo Iliev. La tua risposta rende le cose molto più chiare. E sembra che 'mpirun' debba specificare le opzioni' -n', mentre 'mpiexec' e' mpiexec.hydra' non devono essere – user15964