Programación Pasando El Paradigma De Paso De Mensajes
Enviado por noraluz.ce • 28 de Febrero de 2014 • 2.503 Palabras (11 Páginas) • 388 Visitas
PROGRAMACION USANDO EL PARADIGMA DE PASO DE MENSAJES
Temas:
- Principios de programación de paso de mensaje
- Construccion de bloques: enviar y recibir operaciones
- MPI: Interfaz de paso de mensaje (Message Passing Interface)
- Topologías e Incrustracion
- Superposición de comunicación con computación
- Comunicación colectiva y operaciones computacionales
- Grupos y comunicadores
PRINCIPIOS DE PROGRAMACION DE PASO DE MENSAJE
- La visión lógica de una maquina que soporta el paso de mensajes consiste en p procesos, cada uno con su espacio de dirección
- Cada elemento de dato debe pertenecer a una de las particiones del espacio, entonces los datos deben estar particionados y colocados explícitamente
- Todas las interacciones (solo lectura o lectura/escritura) requiere coperacion de dos procesos – el proceso que tiene los datos y el proceso que quiere accesar a los datos
- Estas dos restricciones, hacen que los costos subyacentes sean explicitos para el programador
CONSTRUCCION DE BLOQES: OPERCIONES DE ENVIO Y RECEPCION
Los prototipos de estas operaciones son los siguientes
- send(void *sendbuf, int nelems, int dest)
- receive(void *recvbuf, int nelems, int source (fuente) )
Considerando los siguientes segmentos del codigo:
P0 P1
a = 100; receive(&a, 1, 0)
send(&a, 1, 1); printf("%d\n", a);
a = 0;
La semantica de la operacion envio require que el valor recibido por el proceso P1 debe ser 100 en oposición a 0.
Esto motivo el diseño del protocolo de envío y recepción
OPERACIÓN DE PASO DE MENSAJE CON BLOQUES SIN BUFFER
- un método simple para forzar la semántica de envio/recepcion es que la operación envio solo regrese cuando sea seguro
- en el bloque (sin buffer) de envio, la operación no regresa hasta que la pareja del envio sea encontrada en el proceso de recepción
- ralentí y bloqueos son problemas mayores con los bloques (sin buffer) de envio
- en bloques de envio (con buffer), el remitente copia la información en el buffer de destinatario y regresa después de que la operación copia ha sido completada. La información es copiada en el buffer y termina hasta que la recepcion sea hecha
- el buffer alivia problemas de ralentí a expensas de los gastos generales de copiado
- hay
- hay un apretón de manos por el bloque (sin buffer) en operación de envio/recepcion
- es fácil observar que en los casos en los que el remitente y destinatario no alcanzan el punto de comunicacion en tiempos similares, puede haber un considerable gastos de ralentí
OPERACIONES DE PASO DE MENSAJES BLOQUES CON BUFFER
- Una solución simple al problema de ralentí y bloqueos antes mencionados es confiar en los buffer en los extremos de envio y recepcion
- El destinatario simplemente copia la información en el buffer designado y regresa después de que la operación copia ha sido completada
- La información debe estar en un buffer(buffereada) y después regresa después que la operación ha sido completada
- El buffer intercambia gastos de ralentí por gastos de copiado
- Protocolos de Bloques de transferencia: (a) en la presencia de un hardware de comunicación con buffers con extremos de envio y repecion; y (b) en la ausencia de hardware de comunicación, el remitente interrumpe al destinatario y deposita la información en un buffer del extremo de destinatario
- Buffer de tamaño limitado pueden tener un impacto significante en el rendimiento
P0 P1
for (i = 0; i < 1000; i++) { for (i = 0; i < 1000; i++){
produce_data(&a); receive(&a, 1, 0);
send(&a, 1, 1); consume_data(&a);
} }
- Que pasa si el consumidor fuse mucho mas lento que el productor?
- Bloqueos siguen siendo posibles con un buffer desde las operaciones del bloque de recepcion
P0 P1
receive(&a, 1, 1); receive(&a, 1, 0);
send(&b, 1, 1); send(&b, 1, 0);
OPERACIONES DE PASO DE MENSAJES SIN BLOQUES
- El programador debe asgurar la semántica de envio y repecion
- Esta clase de protocolos sin bloques regresan del envio o recepcion antes de que sea semánticamente seguro hacerlo
- Operaciones sin bloques generalmente vienen acompañados por una operación de chequeo del estatus (check-status)
- Cuando es usado correctamente, estos primitivos son capaces de superponerse a gastos de comunicación con útiles cálculos
- Librerías de paso mensajes típicamente proveen primitivos de bloques o sin bloques
- Sin bloques sin buffer operaciones de envio y repecion (a) en ausencia de un hardware de comunicación (b) en presencia de un hardware de comunicación
PROTOCOLOS DE ENVIO Y RECEPCION
- Espaco de posibles protocolos de operaciones de envio y recepción
MPI: INTERFACE DE PASO DE MENSAJES
- MPI define una librería estándar para el paso de mensajes que puede ser usada para desarrollar programas portables de paso de mensajes usando C o Fortran
- MPI estándar define una sintaxis asi como una semántica y un conjunto básico de rutinas de librerías
- Implementaciones del vendedor de MPI están disponibles en casi todos los computadores paralelos comerciales
- Es posible escribir programas de paso de mensajes completamente funcionales usando solo seis rutinas
- Conjunto minimo de rutinas de MPI
MPI_Init Initializes MPI.
MPI_Finalize Terminates MPI.
MPI_Comm_size Determines the number of processes.
MPI_Comm_rank Determines the label of calling process.
MPI_Send Sends a message.
MPI_Recv Receives a message.
EMPEZANDO Y TERMINANDO LIBRERIAS DE MPI
- MPI_Init es llamado antes de llamar a otras rutinas de MPI. El propósito es inicializar el entorno del MPI
- MPI_Finalize es llamado al final del calculo, y esto realiza varias tareas de limpieza (clean-up) para terminar el entorno del MPI
- Los prototipos de estas dos funciones son:
int MPI_Init(int *argc, char ***argv)
int MPI_Finalize()
- MPI_Init también se despoja de cualquier argumento relacionado al commando del MPI
- Todas las rutinas del MPI, tipos de datos, constantes tienen prefijo “MPI_”. El coddigo de retorno por una exitosa finalización es MPI_SUCCESS
COMUNICADORES
- Un comunicador define un
...