sirve significa que para mpi_finalize mpi_comm_rank ejemplo mpi argv argc

mpi - significa - para que sirve int argc char*argv[]



¿Por qué MPI_Init acepta punteros a argc y argv? (4)

De acuerdo con la respuesta que se indica aquí

Pasando argumentos vía línea de comando con MPI

La mayoría de las implementaciones de MPI eliminarán todos los argumentos relacionados con mpirun en esta función para que, después de llamarla, pueda abordar los argumentos de la línea de comando como si fuera 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 (también parece agregar algunos) 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.

Así es como usamos la función MPI_Init.

int main(int argc, char **argv) { MPI_Init(&argc, &argv); … }

¿Por qué MPI_Init usa punteros para argc y argv en lugar de valores de argv?


Es menos elevado simplemente pasar dos punteros.


Mi conjetura para permitir potencialmente eliminar los argumentos mpi de la línea de comandos. Pasar el conteo de argumentos por puntero permite modificar su valor desde el punto principal.


No soy un experto, pero creo que la respuesta simple es que cada nodo con el que está trabajando está trabajando con su propia copia del código. Pasar estos argumentos permite que cada uno de los nodos tenga acceso a argc y argv a pesar de que no se pasaron a través de la interfaz de línea de comandos. Al nodo original o maestro que llama a MPI_Init se le pasan estos argumentos. MPI_Init permite que los otros nodos también tengan acceso a ellos.