Arquitecturas Paralelas y Distribuidas
Arquitecturas Paralelas y Distribuidas
Arquitecturas Paralelas y Distribuidas
2. Terminologa y taxonoma
2.1. Bajo nivel de paralelismo
2.2. Taxonoma de Flynn
2.3. Definicin de sistemas paralelos y distribuidos
2.4. Clasificacin de Johnson
2.5. Otras clasificaciones
3. Arquitecturas Sncronas
3.1. Procesadores vectoriales entubados
3.1.1 Principio de concurrencia entubada
3.2. Arquitecturas SIMD
3.2.1 Matriz de procesadores
3.2.2Procesadores de memoria asociativa
3.3 Arquitecturas sistlicas de propsito general
4. Arquitecturas MIMD
4.1. El problema del diseo
4.2. Categoras de la arquitectura MIMD
4.2.1 Arquitecturas de memoria distribuida
4.2.2 Arquitecturas de memoria compartida
4.3 Granuralidad
4.4 Balanceo de carga
5. Redes de ordenadores, como una plataforma de computacin por paso de
mensajes (message-passing)
5.1 Conceptos bsicos de programacin con paso de mensajes
5.2 Creacin del proceso
5.3 Paso sncrono de mensajes
5.4 Paso de mensajes Blocking y Nonblocking
5.5 Broadcast, gather y scatter
5.6 Utilizando clusters de estaciones de trabajo
5.7 PVM
5.7.1 Creain y ejecucin de procesos
5.7.2 Rutinas bsicas de mensajes
16
25
5.8 MPI
5.8.1 Creacin y ejecucin de procesos
5.8.2 Utilizando el modelo computacional SPMD
5.8.3 Las rutinas de paso de mensajes
5.8.4 Comunicacin punto a punto
5.8.5 Conclusin
5.8.6 Rutinas de tipo Blocking
5.8.7 Rutinas de tipo Nonblocking
5.8.8 Modos de comunicacin de envo
5.8.9 Comunicacin colectiva
Bibliografa
34
1L
Un ordenador en paralelo no es una idea nueva, de hecho es muy vieja. Por ejemplo,
Gill escribe a cerca de la programacin en paralelo en 1958. Holland lo hace a cerca de un
ordenador capaz de ejecutar un nmero arbitrario de subprogramas de manera simultanea,
en 1959. Conway, describe el diseo de un ordenador paralelo y su programacin en 1963.
Y as sucesivamente hasta nuestros das.
Existen problemas que exigen enormes clculos repetitivos, sobre gran cantidad de
datos, para dar resultados slidos. Es el caso, de la simulacin de problemas cientficos y de
ingeniera. Los clculos deben de terminarse dentro de un perodo de tiempo razonable. Una
simulacin que tarde dos semanas, en alcanzar una solucin, es generalmente inaceptable en
un entorno de diseo. Hay problemas que tienen un tiempo preciso para su clculo (ejemplo,
predicciones meteorolgicas). Algunas como el modelado de grandes estructuras de DNA, o
la prediccin meteorolgica son prolemas denominados, de desafo elevado o grand
challange. En donde esta clase de problemas, son los que no pueden ser resueltos en una
cantidad de tiempo razonable por los ordenadores de hoy en da. Obviamente, un tiempo de
ejecucin de diez aos, es siempre poco razonable.
La prediccin del tiempo por ordenador, es un ejemplo que requiere poderosos
ordenadores. La atmsfera es modelada, al dividirla en regiones o celdas tridimensionales,
ms que utilizar complejas ecuaciones matemticas, para capturar los distintos efectos. En
esencia, las condiciones de cada celda (temperatura, presin, humedad, velocidad del viento
y direccin, etc ), son calculados en intervalos de tiempo utilizando diversas condiciones
existentes en el intervalo de tiempo anterior. La clave que hace esta simulacin significativa,
es el nmero de celdas. Los clculos de cada celda, son repetidos muchas veces para el
modelo durante el paso del tiempo.
Supongamos que consideramos una regin atmosfrica total, dividida en celdas de 1
milla cbica, con una altura de 10 millas, 10 celdas de altura. Un clculo estimado, nos
llevara a cerca de 5.108 celdas. Supongamos que cada clculo requiere 200 operaciones en
coma flotante. En un primer paso, seran necesarias 10 11 operaciones en coma flotante. Si
fusemos a pronosticar el tiempo sobre 10 das, utilizando intervalos de 10 minutos, haran
104 pasos, y 1015 operaciones en coma flotante en total. Un ordenador operando a 100
Mflops (108 operaciones en coma flotante por segundo), tardara 10 7 segundos, cerca de 100
das para desarrollar el clculo. Para desarrollar el clculo en 10 minutos, necesitaramos un
ordenador operando a 1.7 Tflops (1.7 x1012 operaciones en coma flotante por segundo).
Para finalizar, es humano buscar nuevas aplicaciones que exceden la capacidad de los
sistemas de clculo, y que requieren ms velocidad computacional que los actualmente
disponibles. Recientes aplicaciones como la inteligencia artificial, requieren considerale
velocidad computacional que los actualmente alcanzados en tiempo real.
Adems de obtener el potencial para incrementar la velocidad en un problema
existente, la utilizacin de mltiples ordenadores/procesadores a menudo permite, una
solucin ms precisa de un problema para resolverlo en una cantidad de tiempo razonable.
Una solucin multiprocesada, a menudo permitir un mayor nmero de puntos a ser
calculados en un tiempo dado, y obtener una solucin ms precisa.
Como es de suponer, no todos los problemas tienen una misma solucin en una
arquitectura paralelo en concreto. Sino que segn el tipo de problema, buscaremos una
arquitectura, que nos lo resuelva eficientemente.
2. Terminologa y taxonoma.
1A
1A
Hay dos razones para excluir las mquinas que emplean solamente, el bajo nivel de
paralelismo del conjunto de arquitecturas paralelas. Primero el fracaso a la hora de adoptar
un standard ms riguroso, podra hacer de los ordenadores actuales, arquitecturas
paralelas, negando el valor del trmino. Las arquitecturas que solo tienen las caractersticas
descritas abajo, no ofrecen de manera explcita, el entorno de trabajo coherente para
desarrollar soluciones paralelas de alto nivel:
Instrucciones entubadas: Se define, a la descomposicin de la ejecucin de la
instruccin en una serie de pasos autnomos, permitiendo a cada uno de ellos, desarrollar
simultneamente un porcin del proceso de ejecucin, tal como descodificacin, clculo
efectivo de la direccin, obtencin del operando, etc.
Mltiples unidades funcionales dentro de la CPU: Para operaciones aritmticas y
booleanas que se ejecutan concurrentemente.
Separacin de la CPU, y procesadores de E/S: liberando la CPU, de las
responsabilidades del control de E/S, al utilizar procesadores de E/S dedicados.
Soluciones alcanzadas desde los simples controladores de E/S, a complejas unidades de
procesamiento de perifricos.
Aunque estas soluciones contribuyen, de manera significativa al desarrollo de la
ingeniera, su presencia no hace de un ordenador, una arquitectura paralela.
1A
2. 5. Otras clasificaciones
Atendiendo al tipo y nmero de procesadores:
Sistemas masivamente paralelos (fine grain): procesadores sencillos, matriz de procesadores
hermticamente acoplados.
Parelelismo coarse-grained
Presencia o ausencia d mecanismos de control global:
- Mecanismo de control global: utilizado tanto para cargar programas como informacin en
los procesadores. Ordenadores MIMD.
-Otro extremo: cada procesador obtiene instrucciones detalladas en cada paso. Ordenadores
SIMD.
Operaciones sncronas contra asncronas.
Operaciones sncronas: un reloj comn es utilizado para sincronizar la operaciones de
distintos procesadores. Mquinas SIMD.
Por otra parte, las operaciones sncronas, pueden requerir una sobrecarga no deseada.
Sincronizacin de una red de comunicacin de datos.
Operaciones asncronas: los procesadores traan y la comunicacin de datos, no es
conducida por un reloj comn.
Interconexiones entre procesadores.
Mecanismos para el intercambio de informacin.
Arquitecturas de memoria distribuidas.
Memoria compartida global, que puede ser accedida por todos los procesadores. La
comunicacin viene va memoria global. El problema que tienen es el control de acceso a
memoria.
Arquitecturas por paso de mensajes: Aqu no existe una memoria global. La comunicacin se
realiza a travs de una red de interconexin.
Sistemas hbridos: Existe un sistema de memoria compartida, adems de una red de
interconexin.
3. Arquitecturas Sncronas
1A
1A,4L,2L
Fueron desarrollados al final de los aos 60, y principios de los 70, para desarrollar
directamente, clculos matriciales y vectoriales masivos. Dos ejemplos de ordenadores on
esta clase de arquitectura, fueron el STRECH de IBM, y el 6600 de CDC.
La idea principal de esta clase de arquitecturas, es que suministra una manera de
empezar una tarea, antes de que una antigua haya sido completada. As el ndice de
terminacin no es una funcin del tiempo total de procesamiento, sino ms in de como un
nuevo proceso puede ser introducido. Considerese un proceso secuencial, que sea realiado
paso a paso en un perodo de tiempo, Figura 3.1. El tiempo total requerido para completar
este proceso es N unidades, asumiendo que cada paso tarda una unidad de tiempo.
1
......
N
N
N
N
Tiempo
xi+3
c(xi+2)
f(xi)=a(b(c(xi)))
b(c(xi+2))
Figura 3.3. Una estructura entubada
1A
La unidad de control transmite una nica instruccin a todos los procesadores, los
cuales ejecutan la instruccin en modo lockstep, o paso cerrado, con los datos locales.
Adems dirige todas las operaciones de procesamiento de datos que ocurren en la mquina,
y evalua las instrucciones de ramificacin encontradas en la sencilla cadena de instruccin.
La red de interconexin, permite que los resultados calculados en un procesador sean
comunicados a otro, para utilizarlo como operando en una instruccin siguiente. A los
procesadores de manera individual, se les puede permitir el permanecer de manera
inhabilitada durante la instruccin en marcha. En la figura 3.4 se muestra la estructura tpica
de esta clase de arquitecturas.
La unidad de procesamiento, es un poco ms que una ALU (unidad aritmticolgica), un conjunto de registros y una mscara de bit. La mscara de bit, determina, si el PE
actua en las operaciones sobre los datos, transmitidas por la unidad de control. La red de
interconexin, permite a los datos calculados en un procesador ser comunicados a otro
procesador para utilizarlos como operandos de la siguiente instruccin. A los procesadores
individuales les est permitido para desabilitar la instruccin actual.
Una alternativa, a la ejecucin normal de un SIMD, es tratar cada elemento de
procesamiento, como si fuese una mquina MIMD. Cada elemento de procesamiento, tiene
su propia programa independiente a ejecutar, y se establece un contador de programa local,
el registro de instruccin.
Cadena de
instruccin
Add r1,b
Unidad
de
Control
Add r1,b
Cadena de
datos
PE
PE
Add r1,b
PE
I
N
10
1A
Estn estructurados para la ejecucin de SIMD numricos han sido empleados para
clculos cientficos a gran escala, tales como el procesamiento de imgenes, y modelizacin
de fenmenos ligados a la energa nuclear. Los procesadores matriciales fueron desarrollados
al final de los aos 60, y su primer diseo fue el ILLIAC-IV. Los operandos son por lo
general, valores en coma flotante, y su tamao tipico ronda entre los 32 y 64 bits. Han sido
utilizados varios esquemas de IN, para proporcionar las comunicaciones entre memoria y
procesador, o entre procesadores. Las topologas IN, ms populares son las de malla y
crossbar.
Una variante de las arquitecturas de matriz de procesadores, es la que utiliza un gran
nmero de procesadores de 1 bit. En la figura 3.5, se muestra un ejemplo de esta clase de
arquitecturas. En esta clase de esquemas, la matriz de procesadores est organizada en una
rejilla simtrica (tal como 64x64), y asociado con multiple planos de bits de memoria, que
corresponden a las dimensiones de la rejilla del procesador. El procesador n(Pn), situado en
la rejilla de procesadores en el puesto (x,y), opera sobre los bits de memoria en la posicin
(x,y), en todos los planos de memoria asociados. Ejemplos de esta clase de arquitectura, son
los Massively Parallel Processors (MPP), o los distributed Array Processors de ICL, son por
lo general utilizados para el procesamiento de imgenes, al mapear los pixels sobre la
estructura en planos de la memoria.
1A
11
Controlador
del
Programa
Memoria del
Programa
Controlador
Matricial
ALU y
Registros
Especiales
Memoria Asociativa
Figura 3.6 Estructura de un procesador de memoria asociativa
Un controlador de programa, lee y ejecuta instrucciones, invocando un controlador
matricial especializado, cuando son encontradas instrucciones de la memoria asociativa. Los
registros especiales permiten al controlador de programa y a la memoria asociativa
compartir datos.
Cada palabra de memoria asociativa, generalmente tiene un nmero grande de bits
(por ejemplo 32.786), est asociada con los registros especiales y la lgica de comparacin.
Por lo tanto, un procesador asociativo con 4.096 palabras, efectivamente tiene 4.096
elementos de procesamiento.
La siguiente figura, representa una operacin de comparacin orientada a la fila, para
una arquitectura genrica de it en serie. Una parte del registro de comparacin, contiene el
valor a ser emperejado. Todos los elementos de procesamiento asociativo, comienzan en una
columna especificada de memoria, y comparan los contenidos de cuatro bits consecutivos en
12
sus filas contra el contenido del registro de comparacin, colocando un bit en el registro
para indicar si sus columnas contienen o no emparejamiento.
Registro de Comparacin
10011010
Patrn de Bsqueda
Registros Asociativos
Memoria Asociativa
Palabras
1001
0110
1000
0011
A
1
0
0
0
Mscara
1
1
1
1
1A, 2A
13
Memoria
14
4. Arquitecturas MIMD
1A,
15
2L
Para entender como funcionan varias mquinas MIMD, y que nivel de desarrollo es
razonable esperar de ellas, se debe de examinar el espacio de diseo de las mquinas MIMD
ms de cerca. Por ejemplo, las dos decisiones ms importantes que deben tomarse al
principio del proceso de diseo son:
Primeramente, que poderoso debe ser cada elemento de procesamiento y
seguidamente, cuantos elementos de procesamiento deberan haber.
Existe adems, la disyuntiva de obtener la potencia de clculo P, o bin mediante un
nmero pequeo de poderosos pero caros, procesadores, o bin, con un nmero elevado de
pequeos, pero econmicos procesadores. Esto por si mismo, no da una solucin completa
al problema de suministrar un alto grado de desarrollo a travs del paralelismo masivo.
Esto eleva, el nmero de elementos de diseo fundamentales, que la arquitectura de
alto rendimiento MIMD debe considerar. Por ejemplo, supongan que un diseador tiene un
ilimitado nmero de pequeos, pero potentes elementos de computacin. Como debera
conectarlos?. Partiendo de que el nmero de conexiones que se pueden hacer a cada
elemento es finito (y probablemente bastante pequeo), es imposible conectar cada elemento
a cada uno de los otros. Existe entonces alguna estrategia de interconexin que sea
suficientemente universal, para suministrar la conectividad adecuada para la mayora de las
aplicaciones?.
Si fuese posible, construir tal sistema, qu lenguajes seran apropiados para expresar
las aplicaciones de alto nivel de paralelismo?, y debera ser responsabilidad del
programador, la expresin del paralelismo en la aplicacion?. Este es un elemento que influye
gravemente, en el diseo de lenguajes de programacin paralelos tanto como en las
arquitecturas MIMD.
2L
16
sincronizados antes de que la transferencia sea completada. El procesador que escribe, debe
asegurarse de que el dato vlido no sea sobrescrito, y que el procesador que lo lee, debe
asegurarse de que la posicin es leda despus de que el procesador ha situado un valor all.
Esto es anlogo, a la hora de pasar un mensaje de un procesador a otro. Para asegurarse de
que los procesadores estn sincronizados, se deben de utilizar las tcnicas estandarizadas de
los sistemas operativos, tales como semforos, pero una tcnica alternativa es renunciar a la
memoria compartida, y simplemente suministrar canales de comunicacin dedicados entre
procesadores. Esto conduce, a la categora de paso de mensajes de mquinas MIMD.
1L
Han sido propuestas varias topologas de red para apoyar y suministrar el desarrollo
eficiente, los programas en paralelo con distintas patrones de comunicacin entre
procesadores.
Pero antes de eso, es conveniente ver unos parmetros principales del diseo de
redes, como son el ancho de banda, la latencia de red, y el coste, este ltimo indicado por el
nmero de enlaces en la red. El ancho de banda, es el nmero de bits que pueden ser
transmitidos por unidad de tiempo, dado en bits/seg. La latencia de red, es el tiempo que se
tarda en hacer una transferencia de mensaje a travs de la red. La latencia de comunicacin,
es el tiempo total para enviar el mensaje incluyendo el software de sobrecarga, y el retardo
de la interface. Se podra utilizar tambin el trmino latencia del mensaje, como el tiempo
para enviar un mensaje de longitud cero. Esto es esencialmente, la sobrecarga software y
hardware, en enviar un mensaje (encontrar la ruta, empaquetar, desempaquetar, etc.) al cual
aadimos la actual tiempo de transmisin para enviar los datos atravs del enlace. El nmero
de enlaces en un camino entre dos nodos es una consideracin importante, ser un factor
para determinar el retraso para un mensaje. El dimetro, es el nmero mnimo de enlaces
entre dos de los nodos ms alejados en la red. Note que solamente se utilizan las rutas ms
cortas. El dimetro es utilizado para determinar el peor de los retrasos. El dimetro de la
red, da la distancia mxima que un mensaje debe recorrer, y puede ser utilizado para
encontrar el lmite ms bajo de comunicacin de algunos algoritmos paralelos. El ancho de
biseccin, de una red, es el nmero de enlaces que deben ser cortados para dividir la red en
dos partes iguales.
A continuacin se explican una serie de topologas, a saber:
Arquitecturas en topologa de anillo. Cada nodo requiere dos enlaces, uno a cada
nodo vecino, y por eso, un anillo de n nodos requiere n enlaces. Los nodos de lo extremos,
estn lo suficientemente lejos, por eso, el dimetro es de n-1. Para los anillos donde los
mensajes pueden pasar en cualquier direccin, el dimetro es de n/2. Esta clase de topologa,
es la ms apropiada para pequeos nmeros de procesadores, que ejecutan algoritmos no
dominados por la comunicacin de datos. Este ejemplo de esta arquitectura, se puede ver en
la figura 4.1.
17
Ordenador /
procesador
Raz
Enlaces
Elemento de
procesamiento
111
101
010
110
000
001
0111
0110
0101
1110
1100
1111
1101
0010
1001
19
1A, 1L
P
Cache
P
Cache
Bus
M0
M0
M1
M1
M2
M2
E/S0
D
P1
E/S1
(c) 8x8 omega MIN routing, una peticin de P3 a M3.
20
M0
P0
M1
P1
P2
1
P3
P4
1
P5
P6
1
P7
000
001
M2
010
M3
101
M4
100
M5
101
M6
110
M7
111
Interconexin por bus. Los buses de tiempo compartido, ofrecen una manera
completamente sencilla, de dar a varios procesadores, acceso a una memoria compartida.
Como se muestra en la seccin (a), de la anterior figura. Solamente un procesador, puede
utilizar el bus en un momento dado. Algunas arquitecturas como la Cm*, emplean dos clases
de buses -un bus local enlaza un cluster de procesadores, y un sistema de ms alto nivel,
enlaza el servicio de procesadores dedicados con cada cluster.
Interconexiones crossbar. Utiliza un switch crossbar de n2 puntos de cruce, para
conectar n procesadores con n memorias. Como se ve, en la seccin (b) de la anterior figura.
Los procesadores pueden contender para el acceso a una localizacin de memoria, pero los
crossbars contenden, para los enlaces de comunicacin al suministrar un camino dedicado
entre cada posible par procesador/memoria.
Redes de interconexin multipiso o Multistage Interconnection Networks
(MIN). Este esquema, alcanza un compromiso entre las alternativas precio/rendimiento
ofrecidas por los buses y los crossbars. Un MIN NxN, conecta N procesadores a N
memorias al organizar multiples pisos o bancos de switches en el camino de interconexin
de la red.
Cuando N es elevado a 2, El switch en el piso y, examina el i-esimo bit, para
determinar si la entrada esta para ser conectada en la salida de arriba o de abajo.
El esquema (c) dentro de la figura anterior, muestra una red omega conectando ocho
procesadores y memorias. Donde un bit de control igual a cero, indica una conexin a la
salida superior. La extensibilidad, es una caracterstica significativa del MIN, como su
dimetro de comunicacin es proporcional a log2N. La mariposa de BBN, puede ser
configurada con 256 procesadores.
21
4.3 Granuralidad.
2L
2L
22
debe esperar a otro para emparejarse. Si un procesador no tiene otro trabajo para desarrollar
durante este periodo de espera, permanecer en estado ocioso.
Un problema que afecta tanto a la arquitectura como a los lenguajes de
programacin de un sistema MIMD, es si los procesos son creados dinmicamente durante
el tiempo de ejecucin, o di el nmero de procesos en paralelo es determinado de manera
esttica, en tiempo de compilacin. Los sistemas estticos, tienen la ventaja de que la
asignacin de los procesos en tiempo de compilacin de los procesos a los procesadores
puede ser desarrollado, y la utilizacin de los recursos del sistema puede ser optimizado. La
desventaja de estos sistemas, es que en ciertos tipos de algoritmos paralelos, los procesos
son creados en demanda, y entonces no pueden ser expresados naturalmente. Adems, el
nmero actual de procesadores debe ser conocido por el programador, y un cambio en este
parmetronecesitar la recompilacin de los programas. Los sistemas dinmicos, pueden ser
altamente flexibles, permitiendo a los programadores permanececer ignorantes a cerca del
paralelismo.Sin embargo, cada mquina tiene recursos finitos, y los algoritmos paralelos los
cuales generan nmeros muy grnades de procesos pueden ejecutar con relativamente poca
eficiencia.Esto es debido al hecho de que cada proceso requiere una cierta cantidad de
espacio de memoria para ejecutarse eficientemente.
1L
1L
1L
Primero, es necesario crear los procesos e iniciar su ejecucin. Hay dos mtodos, de
creacin de procesos, creacin de procesos estticos, y creacin de procesos dinmicos. En
la creacin de procesos estticos, todos los procesos son especificados antes de la ejecucin,
y el sistema ejecutar un nmero fijo de procesos. El programador, generalmente, especifica
explcitamente, los procesos y los programas antes de su ejecucin por accin de lneas de
comando. En la mayora de las aplicaciones, los procesos no son todos los mismos ni son
todos ellos diferentes, generalmente, hay un proceso controlador, un proceso maestro, y el
resto son esclavos o trabajadores, los cuales son esencialmente los mismos. Es el
tambin llamado modelo SPMD, (single program multiple data), los distintos procesos son
combinados dentro de un programa. Despus de que el cdigo fuente, es construido con las
sentencias de control para separar las acciones de cada proceso, el programa es compilado a
cdigo ejecutable para cada procesador. Cada procesador cargar una copia de este cdigo
en su memoria local para la ejecucin. Si los procesadores son de distintos tipos, el cdigo
fuente ha de ser compilado en cdigo ejecutable para cada procesador.
En la creacin de procesos dinmicos, los procesos pueden ser creados y su
ejecucin iniciada durante la ejecucin de otros procesos, procesos de creacin
constructores, llamadas a libreras de sistema, son utilizados para crear procesos. Los
procesos pueden ser destruidos. Los procesos de creacin y destruccin de procesos pueden
ser condicionales, y el nmero de los mismos puede variar durante la ejecucin. De manera
clara, la creacin dinmica de procesos, es una tcnica ms potente, que la creacin esttica,
pero cuando los procesos son creados, incurren en una sobrecarga significativa. El modelo
ms general, para la creacin dinmica de procesos es el modelo de MPMD, (programa
mltiple datos mltiples), en los cuales programa separado y diferente es escrito para
procesadores diferentes.
24
1L
1L
El trmino blocking, fue utilizado tambin para describir rutinas que no regresan
(esto es, que no permiten al proceso continuar con la siguiente instruccin hasta que la
transferencia est completada). En ese sentido, los trminos sncronos y blocking eran
sinnimos. El trmino nonblocking fue utilizado para describir rutinas, que devuelven o no el
mensaje haba sido recibido. Sin embargo, los terminos blocking y nonblocking han sido
redefinidos en sistemas tales como MPI. Generalmente, se necesita un buffer de mensajes
entre la fuente y el destino para mantener los mensajes. Aqu, el buffer de mensajes es
utilizado para mantener los mensajes que haban sido enviados anteriormente a ser aceptados
por recv().
Proceso 1
Proceso 2
.
.
.
.
.
.
.
send();
.
.
.
.
.
.
.
.
.
.
.
.
.
.
recv();
.
.
Tiempo
Suspende
el procceso
Ambos proccesos
continuan
Peticin de envo
Reconocimiento
Mensaje
Tiempo
Ambos proccesos
continuan
Proceso 1
Proceso 2
.
.
.
.
.
.
.
send();
.
.
.
.
.
.
.
.
.
.
recv();
.
.
.
.
.
.
Peticin de envo
Mensaje
Suspende
el procceso
25
Reconocimiento
26
1L
El termino broadcast, es utilizado para describir el envo del mensaje a todos los
procesos que tienen que ver con un problema. El trmino multicast, es utilizado para desribir
el envo del mismo mensaje para un grupo definido de procesos. Sin embargo, esta
diferenciacin no es utilizada aqu, para simplificarlo.
Los procesos que participarn en el broadcast deben ser identificados.
Proceso 0
data
Proceso 1
Proceso n-1
data
data
Accin
buf
Cdigo
.
.
bcast();
.
.
.
.
bcast();
.
.
.
.
bcast();
.
.
La accin del broadcast, no ocurre hasta que todos los procesos han ejecutado su
rutina de broadcast, y la operacin de broadcast tendr el efecto de sincronizacin de los
procesos.
El trmino scatter, es utilizado para describir el envo de cada elemento de un array
de datos, a la raz de un proceso separado. El contenido de la i-esima componente del array
es enviado al i-esimo proceso.
Proceso 0
data
Accin
Cdigo
Proceso 1
Proceso n-1
data
data
buf
.
.
scatter()
;
.
.
.
.
scatter()
;
.
.
.
.
scatter()
;
.
.
El trmino gather, es utilizado para describir teniendo un proceso, que recoge los
valores individuales de un conjunto de procesos. Se utiliza normalmente, despus de un
clculo que ha sido hecho por estos procesos. En esencia, gather es lo opuesto a scatter. La
informacin que procede del i-esimo proceso, es recibido por el proceso raz, y situado en la
i-esima posicin del array puesto para recibir la informacin. Algunas veces la operacin
gather, puede ser combinada con una operacin especfica lgica o aritmtica. Tales
operaciones algunas veces se denominan operaciones reducidas.
27
Proceso 0
data
Proceso n-1
Proceso 1
data
data
Accin
buf
.
.
gather()
;
.
.
Cdigo
.
.
gather()
;
.
.
.
.
gather()
;
.
.
1L
5.7 PVM.
1L
1L
28
maestro es ejecutado primero, y todos los dems son producidos desde este proceso master.
(Es posible producir procesos, que a su vez produzcan otros). Los procesos se identifican,
con un ID de tarea.
1L
5.8 MPI.
1L
MPI tiene un gran nmero de rutinas, sobre 120, y cada vez ms. Un factor
importante en el desarrollo de MPI, es el deseo de hacer del paso de mensajes, portable, y
fcil de usar. Algunos cambios fueron realizados, para corregir deficiencias tcnicas en los
sistemas de paso de mensajes iniciales, tales como PVM.
El gran nmero de funciones, incluso en la versin, es debido al deseo de incorporar
caractersticas que los programadores de aplicaciones puedan utilizar para escribir cdigo
eficiente. Sin embargo, los programas pueden ser escritos utilizando muy pocas llamadas, del
subconjunto de funciones disponibles. Como en PVM, las llamadas de funciones estn
disponibles tanto para C como para FORTRAN.
1L
Una diferencia significativa con PVM, es que el proceso de creacin puede ser
solamente esttico. Esto significa, que todos los procesos deben ser definidos antes de la
ejecucin, empezados juntos. La llamada que tiene PVM, para realizar la ejecucin de uno
o varios identicos, y que se soporta en las ltimas versiones de MPI, no debe ser utilizada,
porque se produce una sobrecarga de la creacin de procesos dinmicos.
Un programa puede ser escrito y ejecutado para varios procesadores. Este es el
modelo de computacin SPMD.
29
1L
Este modelo es ideal, donde cada proceso realmente ejecutar el mismo cdigo. El
modelo SPMD, no excluye el modelo maestro-esclavo, solo que tanto el cdigo maestro
como el del esclavo deben estar en el cdigo del mismo programa.
El modelo SPMD sera ineficiente en los requerimientos de memoria, si cada uno de
los procesadores fuese a ejecutar cdigo completamente diferente, pero afortunadamente
esto es inverosimil que sea requerido. Una ventaja de este modelo, es que los argumentos de
la lnea de comandos, pueden ser pasados a cada proceso.
1L
Los comunicadores son utilizados en MPI, para todas las comuncaciones por paso de
mensajes colectivas y punto a punto. Un comunicador es un dominio de comunicacin que
define un conjunto de procesos, a los que se les permite comunicar entre ellos mismos. De
esta manera, el dominio de comunicacin de la librera puede ser separado de un programa
de usuario. Cada proceso tiene un rango dentro del comunicador, un entero de 0 a n-1,
donde hay n procesos. Existen dos tipos de comunicadores disponiles, un intracomunicador,
para comunicar dentro de un grupo, y un intercomunicador para comunicaciones entre
grupos. Un grupo se usa para definir una coleccin de procesos para estos propuestos. Un
proceso tiene un nico rango en un grupo, y un proceso podra ser un miembro de ms de
un grupo.
1L
5.8.5 Conclusin.
1L
Los conceptos de conclusin local, y global son utilizados para describir las
variaciones. Una rutina es localmente completa, si ha completado todas sus partes en la
operacin. Para que una rutina sea globlmente completa, todas las rutinas deben estar
localmente completas para la operacin que es globlmente completa.
1L
30
En MPI, las rutinas de bloqueo, (send, recv), regresan cuando estn loclmente
completas. La condicin de completitud local, para una rutina de envo es que la localizacin
utilizada para mantener el mensaje, pueda ser utilizada nuevamente o alterada, sin afectar al
mensaje que ha sido enviado. Un bloqueo de envo, enviar el mensaje, y regresar. Esto no
significa que el mensaje ha sido recibido, solo que el proceso es lire de reanudar sin afectar
de manera adversa al mensaje. Una rutina para recibir del tipo blocking, tambin volver
cuando sea localmente completa, lo cual en este caso significa, que el mensaje ha sido
recibido en la localizacin de destino y esta puede ser leida.
1L
1L
Las rutinas de envo en MPI, pueden tener uno de los cuatro modos de comunicacin
que definen el protocolo de envo/recepcin. Los modos son standard, buffered, sncrono, y
listo.
En el modo de envo standard, no se asume que la correspondiente rutina de de
recepcin ha empezado. La cantidad del buffering, sihay, es dependiente de la
implementacin y no definido por MPI. Si se suministra uffering, el envo podra ser
completado antes de que la recepcin sea alcanzada.
En el modo buffered, el envo debe comenzar y regresar antes de una recepcin del
emparejamiento. Es necesario suministrar el espacio de buffer especfico en la aplicacin. El
espacio del buffer es suministrado por el sistema va MPI.
En el modo sncrono, el envo y la recepcin pueden empezar antes uno que el otro,
pero pueden ser completados solamente a la vez.
En el modo ready, un envo puede empezar solamente, si la recepcin del matchinh
ha sido ya alcanzada, de otro modo se alcanzar un error. Debe ser utilizado con cuidado
para evitar operaciones erroneas.
1L
31
Bibliografa
Artculos
1A. Survey of Parallel Computer Architectures. Febrero 1990. Pag. 5 -16.
2A. General-Purpose Systolic Arrays. Noviemre 1993. Pag.20 31.
Libros
1L. Barry Wilkinson y Michael Allen. Parallel Programming. Techniques and
Aplications using networked workstations and Parallel Computers..
2L. R. N. Ibbett y N. P. Topham Architecture of High performance Computers.
Volumenes I y II.
32