Estoy creando un gran bloque de datos en cada proceso y necesito compartir estos datos entre los procesos mediante MPI Broadcasting,

¿Cómo puedo minimizar el costo o existe algún algoritmo para transmitir datos masivos entre procesos por MPI?

1
Fazeleh 22 feb. 2021 a las 00:19

2 respuestas

La mejor respuesta

¿Cómo puedo minimizar el costo o existe algún algoritmo para transmitir datos masivos entre procesos por MPI?

Tenga en cuenta que MPI_Bcast:

Durante una transmisión, un proceso envía los mismos datos a todos los procesos en un comunicador .

Si eso es lo que desea, tendrá que confiar en el hardware subyacente y en eso la implementación del estándar MPI que está utilizando implementa el MPI_Bcast de forma eficiente. Incluso podría suceder que (dependiendo de su implementación) MPI_Reduce en realidad, es más rápido que MPI_Bcast. Sin embargo, en algunas implementaciones, por ejemplo Open MPI, puedes ajustar aún más el algoritmo usado por MPI_Bcast usando la bandera

--mca coll_tuned_use_dynamic_rules 1 --mca coll_tuned_bcast_algorithm 4

Otra opción es intentar utilizar la versión sin bloqueo de la transmisión MPI, a saber, MPI_Ibcast:

Transmite un mensaje del proceso con rango "raíz" a todos los demás procesos del comunicador de una manera no bloqueante

Puede intentar superponer el cálculo con la comunicación. No obstante, ese cálculo no debería modificar el búfer utilizado por la rutina MPI (se puede ver más información sobre por qué aquí).

2
dreamcrash 22 feb. 2021 a las 08:30

Dependiendo de la topología de su red, puede utilizar técnicas para minimizar la latencia de enviar mensajes grandes. Por ejemplo, si su topología es jerárquica, puede implementar la transmisión mediante múltiples operaciones MPI_Send y MPI_Recv. En este sentido y para tener una mejor comprensión de la transmisión jerárquica, le sugiero que eche un vistazo a este enlace

Aparte de esto, también puede utilizar la versión asíncrona (sin bloqueo) de las operaciones MPI para mejorar el rendimiento de la transferencia de datos de gran tamaño.

0
Majid Salimi 22 feb. 2021 a las 09:00