¿Qué significa configurar MPI para memoria compartida?

Tengo un poco de investigación relacionada con la pregunta.

Actualmente he terminado la implementación del trabajo del marco de estructura de esqueleto basado en MPI (específicamente utilizandoopenmpi 6.3). el trabajo de marco se supone que se utiliza en una sola máquina. ahora, lo estoy comparando con otras implementaciones de esqueleto anteriores (comoescandio, flujo rápido, ..)

Una cosa que he notado es que el rendimiento de mi implementación no es tan bueno como el de otras implementaciones. Creo que esto se debe a que mi implementación se basa en MPI (por lo tanto, una comunicación bilateral que requiere la operación de envío y recepción) mientras que las otras implementaciones con las que estoy comparando se basan en la memoria compartida. (... pero todavía no tengo una buena explicación para razonar eso, y es parte de mi pregunta)

Hay una gran diferencia en el tiempo de finalización de las dos categorías.

Hoy también he introducido la configuración de open-mpi para la memoria compartida aquí =>openmpi-sm

Y ahí viene mi pregunta.

 ¿Qué significa configurar MPI para memoria compartida? Quiero decir, mientras que los procesos MPI viven en su propia memoria virtual; ¿Cómo es realmente la bandera como en el siguiente comando? (Pensé que en MPI todas las comunicaciones son explícitamente pasando un mensaje, no se comparte la memoria entre los procesos).

    shell$ mpirun --mca btl self,sm,tcp -np 16 ./a.out

2do ¿Por qué el rendimiento de MPI es mucho peor en comparación con otras implementaciones de esqueleto desarrolladas para la memoria compartida? Al menos también lo estoy ejecutando en una sola máquina multi-core. (Supongo que es porque otra implementación usó programación paralela de subprocesos, pero no tengo una explicación convincente para eso).

Cualquier sugerencia o discusión adicional es muy bienvenida.

Por favor, avíseme si tengo que aclarar más mi pregunta.

¡Gracias por tu tiempo!

Respuestas a la pregunta(1)

Su respuesta a la pregunta