ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programación Pasando El Paradigma De Paso De Mensajes


Enviado por   •  28 de Febrero de 2014  •  2.503 Palabras (11 Páginas)  •  388 Visitas

Página 1 de 11

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

...

Descargar como (para miembros actualizados) txt (17 Kb)
Leer 10 páginas más »
Disponible sólo en Clubensayos.com