SCP - Apuntes.0 Conceptosbasicos
SCP - Apuntes.0 Conceptosbasicos
SCP - Apuntes.0 Conceptosbasicos
Arquitecturas Paralelas:
conceptos básicos
0.1 INTRODUCCIÓN
Aunque los procesadores son cada vez más rápidos, existen numerosas
aplicaciones para las que la velocidad de cálculo de un único procesador
resulta insuficiente. La alternativa adecuada para esas aplicaciones es el uso
de paralelismo. Con el término paralelismo se indica que la ejecución de un
determinado programa se reparte entre muchos procesadores, que trabajan
simultáneamente.
Pueden utilizarse diferentes niveles de paralelismo. Por ejemplo, se
explota el paralelismo a nivel de instrucción (ILP) cuando se segmenta la
ejecución de las instrucciones de un programa: en un momento dado, se
están ejecutando muchas instrucciones a la vez, pero en fases de ejecución
diferentes. También puede explotarse el paralelismo en los datos. El ejemplo
con más éxito de esa alternativa son los computadores vectoriales que
acabamos de analizar. En todos esos casos (y en otros similares, como
VLIW), solo existe un contador de programa o PC, es decir solo se ejecuta
un programa bajo una única unidad de control. En los próximos capítulos
▪ 2 ▪ ARQUITECTURAS PARALELAS: CONCEPTOS BÁSICOS.
Red de comunicación
Pr + M + I/O
Computador front-end Procesador
de control
Array de cálculo
▪ 4 ▪ ARQUITECTURAS PARALELAS: CONCEPTOS BÁSICOS.
P0 P1 Pp–1
Red de comunicación
sistema E/S
M0 Mm–1
Memoria principal
▪ 6 ▪ ARQUITECTURAS PARALELAS: CONCEPTOS BÁSICOS.
Nodos:
Procesador (+ MC) + Memoria principal + E/S + Contr. comunic.
P0 Pp–1
E/S E/S
M M
K K
Red de comunicación
ARQUITECTURAS PARALELAS (conceptos básicos). VELOCIDAD DE CÁLCULO. ▪ 7 ▪
Existe una tercera alternativa, que corresponde a una mezcla de las dos
anteriores. Cuando el espacio de memoria es común, la programación de
aplicaciones suele resultar más sencilla, pero la memoria se convierte en un
cuello de botella: se producen grandes atascos de tráfico, provocados por los
procesadores, que tienen que acceder a la memoria común a través de una
red tipo bus. Cuando la memoria es privada en cada procesador, ese
problema desaparece, pero la comunicación entre procesadores es más
compleja, y también lo son los modelos de programación.
Un análisis sencillo de los programas muestra que los procesadores no
hacen un uso homogéneo de la memoria, es decir, no acceden con la misma
probabilidad a cualquier posición de memoria; ello permite pensar en una
alternativa mixta: compartir el espacio de memoria, pero distribuirla
físicamente entre los procesadores. La estructura que corresponde a este
modelo mixto es la de la figura anterior, pero todos los procesadores tienen
acceso a todos los bloques de memoria. Estamos organizando la memoria
principal de manera jerárquica: los accesos locales serán rápidos, pero los
externos serán mucho más lentos, puesto que hay que salir a la red de
comunicación. Esperamos, en todo caso, que el acceso a la memoria local
sea mucho más frecuente que a la memoria “remota”, y que la red de
comunicación se utilice principalmente para la comunicación entre procesos.
Esta última estructura es la que está obteniendo el mayor éxito y
desarrollo en la actualidad, y habitualmente se conoce como NUMA (Non
Uniform Memory Access) o también como MPP.
▪ 8 ▪ ARQUITECTURAS PARALELAS: CONCEPTOS BÁSICOS.
Las arquitecturas que hemos citado son las principales, y hacen referencia al
uso de memoria por parte de los procesadores. Es muy habitual que
encontremos todo tipo de mezclas entre ellas. Por ejemplo, en la mayoría de
los supercomputadores actuales los nodos que forman el sistema, y que se
conectan mediante una red de comunicación, no son simples procesadores,
sino pequeños sistemas paralelos SMP con 4-8 procesadores conectados en
un bus (el propio procesador es multicore). Así, dentro de cada nodo la
memoria es compartida, pero la de otros nodos es privada.
Por otra parte, y tratando de reducir el elevado coste de los
supercomputadores de diseño específico, han aparecido en el mercado con
fuerza los sistemas formados por hardware sencillo y barato: computadores
de propósito general conectados entre sí mediante redes más o menos
sencillas derivadas de las tecnologías de las redes de computadores. En
general, a este tipo de sistemas se les denomina clusters. Así pues, para
formar un cluster se necesita un conjunto de nodos de cómputo y una red de
comunicación (junto con el software de gestión y programación adecuado).
La eficiencia del cluster ejecutando código paralelo será función de ambos,
nodos y red. En el caso más simple, los nodos son simples PCs y la red de
comunicación es (Gigabit) Ethernet. Ese tipo de sistema se conoce como
Beowulf; es la opción más barata, pero también la de menores prestaciones,
aunque ofrece buenos resultados en aquellos casos en los que la
comunicación entre procesos no es relevante.
Para conseguir clusters más eficientes, pueden usarse pequeños sistemas
SMP como nodos de cálculo y redes de comunicación más sofisticadas
(Myrinet, Infiniband, Quadrics…); cuando el número de procesadores de
cada nodo del cluster es mucho mayor que el número de nodos, el sistema se
conoce también con el nombre de constellation.
Todos los fabricantes ofrecen hoy en día diversos tipos de clusters en sus
catálogos (custom clusters) como una alternativa interesante para conseguir
máquinas de alto rendimiento a un coste “razonable”. Además, es
relativamente sencillo montar un cluster de no muy alto rendimiento
conectando unos cuantos PC entre sí (commodity clusters).
Sea cual sea la arquitectura del sistema paralelo, en todos ellos es
necesario resolver una serie de problemas comunes para poder lograr un
buen rendimiento. Analicemos brevemente los principales problemas a los
que hay que hacer frente.
ARQUITECTURAS PARALELAS (conceptos básicos). VELOCIDAD DE CÁLCULO. ▪ 9 ▪
Tp
Tcom
Tej
Núm. procesadores
fa = Ts / Tp
efic = fa / P (habitualmente en %)
fa = Ts / (Ts / P) = P
efic = fa / P = 1
1
En algunos casos, pueden conseguirse factores de aceleración superlineales, es decir, mayores que P.
En general, son debidos a otros factores, ya que, además de P procesadores, el sistema paralelo
dispone de más memoria, más capacidad de entrada/salida, etc. Tal vez los datos/programas que no
cabían en la memoria de un procesador, sí quepan ahora en todo el sistema, con lo que, como
sabemos, se ahorrará tiempo.
▪ 12 ▪ ARQUITECTURAS PARALELAS: CONCEPTOS BÁSICOS.
fa = Ts / Tp = P / [ P (1–f) + f ]
trozo que hay que ejecutar en serie trozo que se puede ejecutar en paralelo
(1–f) Ts f Ts
1 procesador
(1–f) Ts f Ts P
en paralelo en paralelo
(1–f) Ts f Ts / P (1–f) Ts f Ts
P procesadores
Ts = (1–f) Ts + f Ts P
Tp = (1–f) Ts + f Ts = Ts fa = Ts / Tp = (1–f) + f P
40
ideal
Factor de aceleración
30
t constante
20
10
f constante
0
0 10 20 30 40
Número de procesadores