De acuerdo con la respuesta declaró aquí:
Passing arguments via command line with MPI
implementaciones más MPI eliminará todos los argumentos relacionados mpirun en esta función de manera que, después de llamar a él, puede hacer frente a los argumentos de línea de comandos como si se eran una ejecución de comando normal (no mpirun).
es decir, después
mpirun -np 10 myapp myparam1 myparam2
argc = 7 (?) Debido a los parámetros mpirun (que también parece añadir un poco) y los índices de myparam1 y myparam2 son desconocidos
pero después
MPI_Init(&argc, &argv)
argc = 3 y myparam1 está en argv [1] y myparam2 está en argv [2]
Aparentemente esto está fuera del estándar, pero lo he probado en linux mpich y ciertamente parece ser el caso. Sin este comportamiento, sería muy difícil (¿imposible?) Distinguir los parámetros de aplicación de los parámetros mpirun.
Se pasan por referencia para permitir que una implementación de MPI los proporcione en entornos donde los argumentos de línea de comandos no se proporcionan a main. http://www.mpi-forum.org/docs/mpi-11-html/node151.html ¿alguien puede arrojar más luz sobre esto con un ejemplo? –