Secondo la risposta dichiarato qui:
Passing arguments via command line with MPI
implementazioni maggior MPI rimuoverà tutti gli argomenti mpirun legati in questa funzione in modo che, dopo aver chiamato, è possibile affrontare argomenti della riga di comando come se erano un'esecuzione di comando normale (non mpirun).
cioè dopo
mpirun -np 10 myapp myparam1 myparam2
argc = 7 (?) A causa dei parametri mpirun (sembra anche aggiungere un po ') e gli indici di myparam1 e myparam2 sono sconosciuti
ma dopo
MPI_Init(&argc, &argv)
argc = 3 e myparam1 è argv [1] e myparam2 è argv [2]
Apparentemente questo è al di fuori dello standard, ma l'ho provato su linux mpich e certamente sembra essere il caso. Senza questo comportamento sarebbe molto difficile (impossibile?) Distinguere i parametri dell'applicazione dai parametri di mpirun.
Vengono passati per riferimento per consentire a un'implementazione MPI di fornirli in ambienti in cui gli argomenti della riga di comando non vengono forniti al main. http://www.mpi-forum.org/docs/mpi-11-html/node151.html qualcuno può far luce su questo con un esempio? –