Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Paralela2
1. Programación y Computación
paralela
Cap. 2: Modelos de
programación y computación
paralela
Glen Rodríguez
glen.rodriguez@gmail.com
Tomado de clases de J.Demmel (U.Berkeley)
1
2. Temario
• Resumen de modelos de máquinas (~hardware) y
modelos de programación (~software)
• Memoria compartida
• Espacio de direcciones compartido
• Paso de mensajes
• Data en paralelo
• Clusters de SMPs
• Grid
• El hardware puede o no puede estar amarrado al
modelo de programación
• Históricamente, muy amarrado
• Hoy, lo importante es portabilidad
• Tendencias 2
3. Una arquitectura paralela genérica
P = procesador, M = memoria
P P P P
M M M M
Interconnection Network
Memoria
° Físicamente, dónde está la memoria?
3
4. Modelos de programación paralela
• Control
• Cómo se crea el paralelismo?
• Qué orden hay entre operaciones?
• Cómo los diferentes hilos de control se sincronizan?
• Data
• Qué data es privada y qué data se comparte?
• Cómo se accede o comunica la data compartida en
forma lógica?
• Operaciones
• Qué operaciones son atómicas (indivisibles)?
• Costos
• Cómo contabilizar los costos respectivos?
4
5. Ejemplo sencillo
n −1
Sea la suma : ∑ f ( A [ i ])
• Descomposición paralela: i= 0
• Cada evaluación y cada suma parcial es una tarea.
• Asignar n/p números a cada procesador (1 al p)
• Cada uno computa independientemente sus resultados
“privados” y la suma parcial.
• Uno (o todos) recolectan las p sumas parciales y computa la
suma global.
Dos clases de data:
• Compartida lógicamente
• Los n números originales, la suma global.
• Privada lógicamente
• Las evaluaciones de las funciones.
• Y las sumas parciales individuales?????
5
6. Modelo de prog. 1: Memoria compartida
• Un programa es una colección de hilos de control.
• Se pueden crear dinámicamente en algunos lenguajes.
• Cada hilo tiene variables privadas, ej: variables del stack local.
• También hay variables compartidas, ej: variables estáticas, de bloques
comunes, del heap global.
• Los hilos se comunican implícitamente escribiendo y leyendo
variables compartidas.
• Los hilos coordinan sincronizando en variables compartidas.
Memoria compartida
s s = ...
y = ..s ...
i: 2 i: 5 Memoria i: 8
privada
P0 P1 Pn
6
7. Sumando con memoria compartida
static int s = 0;
HILO 1 HILO 2
for i = 0, n/2-1 for i = n/2, n-1
s = s + f(A[i]) s = s + f(A[i])
• Problema: “race condition” en la variables s
• Una “race condition” o carrera por la data ocurre cuando:
- Dos procesadores (o 2 hilos) acceden a la misma
variable, y por lo meno uno la escribe.
- Los accesos son concurrentes (no sincronizados) así
que podrían pasar simultáneamente.
7
8. Sumando con memoria compartida
static int s = 0;
…
(s = 27)
HILO 1 HILO 2
…. …
computa f([A[i]) y put en reg0 7 computa f([A[i]) y put en reg0 9
reg1 = s 27 reg1 = s 27
reg1 = reg1 + reg0 34 reg1 = reg1 + reg0 36
s = reg1 34 s = reg1 36
… …
• Sea s=27, f(A[i])=7 en Hilo 1, y f(A[i])=9 en Hilo 2
• Si el programa está bien, s debería ser 43 al final
• Pero puede ser 43, 34, o 36
• Las operaciones atómicas son lecturas y escrituras
• Ose ve un número u otro, no medio número
• Las sumas se hacen en registros (privados generalmente)
8
9. Sumando con memoria compartida (mejorado)
static int s = 0;
static lock lk;
HILO 1 HILO 2
local_s1= 0 local_s2 = 0
for i = 0, n/2-1 for i = n/2, n-1
local_s1 = local_s1 + f(A[i]) local_s2= local_s2 + f(A[i])
lock(lk); lock(lk);
s = s + local_s1 s = s +local_s2
unlock(lk); unlock(lk);
• Como la suma es asociativa, se puede reordenar
• La mayor parte de cómputo es en variables privadas
- La frecuencia de uso de mem. compartida baja, lo que puede
mejorar la velocidad.
- Pero hay un “race condition” en el update de la v.compartida s
- Se puede solucionar añadiendo locks o candados (sólo un hilo
puede usar el lock a la vez; los otros deben esperar) 9
10. Modelo de máquina 1a: Shared Memory
• Todos los procesadores se conectan a una memoria compartida
grande.
• Nombre típioc: Symmetric Multiprocessors (SMPs)
• SGI, Sun, HP, Intel, IBM (nodos del Millennium, SP)
• Chips multicore (hacía donde vamos)
• Difícil escalar a gran número de procesadores
• <= 32 procesadores es típico
• Ventaja: uniform memory access (UMA)
• Costo: es más barato acceder data en cache que en memoria
principal.
P1 P2 Pn
$ $ $
bus
memoria
10
11. Problemas escalando HW de mem. compartida
• Por qué no poner más procesadores (con mayor
memoria?)
• El bus de memoria se vuelve cuello de botella
• Ej. del problema: Parallel Spectral Transform Shallow
Water Model (PSTSWM)
• Resultados (y gráfico) cortesía de Pat Worley del ORNL
• Es un núcleo vital en modelos atmosféricos
• 99% de ops. punto flotante son multiplicaciones o sumas,
que generalmente corren bien en toda CPU.
• Pero se barre toda la memoria con poco reuso de
operandos se usa mucho bus y memoria compartida
• El experimento muestra performance serial, con una
“copia” del ejecutable corriendo independientemente en
varios procesadores.
• Es el mejor caso para mem.compartida: no comparte
• Pero la data no cabe en los registros/cache
11
12. Ejemplo
• Degradación de
performance es una
función “suave” del
número de procesos.
• No data compartida entre
ellos, así que debería
haber perfecto
paralelismo.
• (Código corrió en 18
niveles z y varios rangos
de niveles xy.)
From Pat Worley, ORNL 12
13. Caches y Computación científica
• Caches tienden a tener peor performance en
aplicaciones exigentes que operan en grandes
conjuntos de datos
• Procesamiento de transacciones
• Sistemas operativos
• Matrices dispersas
• Códigos de programas científicos modernos usan
tiling/blocking para mejorar el desempeño del caché
• Más fácil para programas con matrices densas (ej: matmul) que
para matrices dispersas
• tiling y paralelismo son transformaciones similares.
13
14. Modelo 1b: memoria distribuida compartida
• Memoria es compartida en forma lógica, pero distribuida
físicamente
• Cualquier CPU puede acceder cualquier dirección de memoria
• Líneas de cache (o páginas) se pasan entre máquinas
• Ejemplo: SGI Origin
• Escala a 512 (SGI Altix (Columbia) en NASA/Ames)
• Limitada por la coherencia del cache– como mantener las
copias en cache de la misma dirección iguales entre si.
P1 P2 Pn
$ $ $
network
memory memory memory
14
15. Problemas de performance al compartir
• Real compartir
• Escrituras frecuentes a la misma variable: cuello de botella
• OK para read-only o para escrituras infrecuentes
• Técnica: hacer copias de un valor, uno por procesador, si se
puede en el algoritmo.
• Falso compartir
• Bloqueo el cache añade complejidad
• Dos diferentes variables en el mismo bloque de cache
• Técnica: colocar la data usada por cada procesador en forma
contigua, o por lo menos evitar intercalado en memoria
15
16. Programación paralela con Hilos
Hay varias librerías de hilos
• PTHREADS es el standard Posix
• Los hilos en Solaris son similares
• De bajo nivel
• Portable pero algo lento a veces
• OpenMP es un nuevo estándar
• Soporte para programación científica en memoria
compartida
• http://www.openMP.org
• P4 (Parmacs) es un viejo paquete portable
• Más alto nivel que PTHREADS
• http://www.netlib.org/p4/index.html
16
17. Operaciones básicas de hilos
• cobegin/coend
cobegin • Las instrucciones en el bloque pueden correr en
job1(a1); paralelo
job2(a2);
coend • Se puede anidar los cobegins
• No debe faltar el coend respectivo
• fork/join
tid1 = fork(job1, a1);
job2(a2);
join tid1; • Funciones “forkeadas” corren en paralelo con la
inicial
• join espera que todas se completen
• cobegin cleaner, but fork is more general
17
18. Hilos y data compartida
• Variables declaradas fuera del “main” se comparten
• Objetos en el heap podrían compartirse (vía paso de
punteros)
• Variables en el stack son privadas: pasarse punteros
entre hilos puede colgar programas
• Esas variables privadas se establecen generalmente
creando una gran estructura de “data de hilos”
• Se pasa a los hilos como argumento
18
19. Tipos básicos de Sincronización: Barrera
Barrera – sincronización globlal
• forkear varias copias de la misma función “work”
• SPMD “Single Program Multiple Data”
• Uso simple de barrera – todos los hilos esperan en la
misma barrera
work_on_my_subgrid();
barrier;
read_neighboring_values();
barrier;
• Más complicado – barreras en ramas (o loops)
if (tid % 2 == 0) {
work1();
barrier
} else { barrier }
19
20. Tipos básicos de Sincronización: Mutexes
Mutexes – excluxión mutua ó candados
• Hilos trabajan casi independientemente
• Necesitan acceder estructura común de datos
lock *l = alloc_and_init(); /* shared */
acquire(l);
access data
release(l);
• Java y otros lenguajes tienen cierto tipo de
sincronización
• similar a cobegin/coend vs. fork and join
• Semáforos dan garantías de “fairness” en conseguir
el candado, es la misma idea que mutexes
• Candado sólo afecta al procesador usándolo:
• pair-wise synchronization
20
21. Caso de un Sistema de Partículas
• Un sistema de partículas tiene:
• Un número finito de partículas.
• Que se mueven en el espacio según las leyes de Newton (F =
ma, etc.).
• Tiempo continuo.
• Ejemplos:
• Estrellas en el espacio con las leyes de la gravedad.
• Fabricación de semiconductores con haces de electrones o de
iones.
• Átomos en una molécula con fuerzas electrostáticas.
• Neutrones en un reactor de fisión.
• Carros en autopista.
• Muchas simulaciones combinan técnicas de simulación
de partículas con técnicas de eventos discretos
• “Depredador y presa”
21
22. Fuerzas en un sistema de partículas
• Fuerza en cada partícula descompuesta en lejanas y
cercanas:
F = F_externa + F_cercana + F_lejana
• Externa
• Corrientes oceánicas en pedradores y presas marítimas
• Campo eléctrico externo en haces de electrones.
• Cercana
• Pedradores atraídos a presas cercanas
• Choque de bolas de billar.
• Fuerzas de Van der Waals en un fluido (1/r6).
• Far-field force
• Atracciones de predador a cardúmenes (1/r2 )
• Gravedad, electrostática
• Fuerzas gobernadas por EDP elípticas.
22
23. Paralelismo en fuerza externas
• Lo más sencillo de implementar.
• La fuerza da cada partícula es independiente de otras
partículas.
• “embarrassingly parallel” o trivialmente paralelo.
• Distribuir las partículas entre los procesadores en
forma pareja
• Cualquier distribución equitativa sirve.
• Ni la comunicación ni la localidad son problema.
• Para cada partícula en un procesador, aplicar la
fuerza externa.
23
24. Paralelismo en fuerzas cercanas
• Fuerzas cercanas necesitan interacción necesitan comunicación.
• Fuerzas pueden depender de otras partículas cercanas:
• Ejemplo: colisiones.
• Algor. simples son O(n2): chequear todos los pares para ver si chocan.
• Modelo paralelo usual es descomposición del dominio físico:
• O(n2/p) partículas por procesador si la distribución es pareja.
• “domain decomposition” (también es el nombre del alg. numérico)
• Desafíos:
• Qué hacer con las partículas cerca de las fronteras entre procesadores?
• Qué hacer con el desbalance de carga?
Se debe chequear
posibles choques
entre regiones
24
25. Paralelismo en fuerzas lejanas
• Involucran interacción todos-contra-todos y por lo tanto
mucha comunicación.
• Fuerzas que dependen de todas las demás partículas:
• Ejs: gravedad, plegamiento de proteínas
• Los algoritmos más simples son O(n2)
• La sola descomposición espacial no ayuda por que cada
partícula necesita “visitar” a todas las demás.
Se implementa rotando conjuntos de
partículas.
• Mantiene procs. ocupados
• Todos los procs. Llegan a ver a
todas las partículas
• Use algoritmos más sofisticados para bajar O(n2) a O(n
log n)
25
26. Modelo de program. 2: Paso de mensajes
• Programa consiste en colección de procesos nombrados.
• Se establecen al empezar a correr el programa
• Hilo de control y direcciones locales -- NO comparte data física.
• Data compartida lógica se divide entre procesadores locales.
• Los procesos se comunican por pares de send/receive
• Coordinación implícita en cada evento de comunicación.
• MPI (Message Passing Interface) es la librería más popular
Memoria
privada
s: 12 s: 14 s: 11
receive Pn,s
y = ..s ... i: 2 i: 3 i: 1
P0 P1 send P1,s Pn
Red
26
27. Computar s = A[1]+A[2] en cada procesador
° 1er intento – qué podría salir mal?
Procesador 1 Procesador 2
xlocal = A[1] xlocal = A[2]
send xlocal, proc2 send xlocal, proc1
receive xremote, proc2 receive xremote, proc1
s = xlocal + xremote s = xlocal + xremote
°Si send/receive funcionara como el teléfono? Como el correo?
°2do intento
Procesador 1 Procesador 2
xlocal = A[1] xlocal = A[2]
send xlocal, proc2 receive xremote, proc1
receive xremote, proc2 send xlocal, proc1
s = xlocal + xremote s = xlocal + xremote
°Si hubiera más de 2 procesadores?
27
28. MPI – el estándar de facto
MPI se ha vuelto el estándar de facto para
computación paralela usando paso de mensajes
Pros y Contras de los estándares
• MPI creó finalmente un estándar para el desarrollo de
aplicaciones en la comunidad HPC → portabilidad
• El estándar MPI es el mínimo común denominador
basado en tecnología de mediados de los 80s, así que
puede retrasar la innovación.
Modelo de programación refleja el hardware de moda!
“I am not sure how I will program a Petaflops computer,
but I am sure that I will need MPI somewhere” – HDS 2001
28
29. Modelo de máquina 2a: Memoria distribida
• Cray T3E, IBM SP2
• Clusters de PC (Berkeley NOW, Beowulf)
• IBM SP-3, Millennium, CITRIS son máquinas de
memoria distribuída, pero los nodos son SMPs.
• Cada procesador tiene su propia memoria y cache pero
no puede acceder directamente a la memoria de otro
procesador.
• Cada “nodo” tiene una “Network Interface” (NI, tarjeta de
red o similar) para comunicación y sincronización
P0 NI P1 NI Pn NI
memory memory ... memory
interconnect
29
30. Clusters de Tflop/s
He aquí algunos ejemplos de clusters configurados de
procesadores y redes separadas
• 72% del Top 500 (Nov 2005), 2 en el top 10
• Dell cluster en Sandia (Thunderbird) era #4 en Top 500
• 8000 Intel Xeons @ 3.6GHz
• 64 TFlops pico, 38 TFlops en Linpack
• Infiniband connection network
• Walt Disney Feature Animation (The Hive) era #96
• 1110 Intel Xeons @ 3 GHz
• Gigabit Ethernet
• Saudi Oil Company era #107
• Credit Suisse/First Boston era #108
• Para más detalles usar “statistics/sublist generator” en www.top500.org
30
31. Modelo de máquina 2b: Internet/Grid Computing
• SETI@Home: corría en 500,000 PCs
• ~1000 años de CPU al día
• 485,821 años de CPU hasta el 2006
• Análisis sofisticado de señales
• Datasets distribuidos desde Radio Telescopio de Arecibo
Sgte. Paso:
Allen Telescope Array
31
32. Mod. de progr. 2b: Espacio global de direcciones
• Programa consiste en colección de hilos nombrados.
• Se definen al inicio de la corrida.
• Data local y compartida, como en modelo de mem.compt.
• Pero la data compartida está dividida entre procesos.
• Aparentemente, data remota es cara computacionalmente
• Ejs: UPC, Titanium, Co-Array Fortran
• Programación en espacio global de direcciones es punto
medio entre paso de mensajes y mem. compartida.
Shared memory
s[0]: 27 s[1]: 27 s[n]: 27
y = ..s[i] ...
i: 2 i: 5 Private i: 8
memory
P0 P1 Pn s[myThread] = ...
32
33. Modelo de máq. 2c: Espacio global de direcs.
• Cray T3D, T3E, X1, y cluster HP Alphaserver
• Clusters construidos con Quadrics, Myrinet, o Infiniband
• La NI soporta RDMA (Remote Direct Memory Access)
• NI puede acceder directamente a la memoria sin interrumpir
a la CPU
• Un proces. puede hacer read/write a memoria como
operación unilateral (put/get)
• No solo un load/store como en máq. de mem.compartida
• Continua computando mientras espera a que la operación en
memoria finalice.
• Data remota generalmente no está en cache local.
P0 NI P1 NI Espacio global
Pn NI
de dirs. puede
memory memory ... memory ser soportado en
varios grados
interconnect
33
35. PRAM – modelo de comunicación más sencillo
• Parallel Random Access Memory.
• Toda operación de acceso a memoria se completa en
un período de reloj -- no hay jerarquía de memoria
(irreal pero sencillo).
• OK para ver si un algoritmo tiene suficiente paralelismo.
• Diseñar una estrategia para el Algoritmo paralelo: primero un
alg. PRAM, luego preocuparse de los tienmpos de
memoria/comunicación (a veces funciona)
• Algo más realista: Concurrent Read Exclusive Write
(CREW) PRAM.
35
36. Modelo de Latencia y Ancho de banda
• Tiempo para mandar mensaje de longitud n es aprox.:
Tiempo = latencia + n*costo_por_word
= latencia + n/ancho_de_banda
• Topología se asume irrelevante.
• Modelo “α−β” :
Tiempo = α + n*β
β
• Usualmente α >> β >> tiempo por flop.
• Un mensaje largo es menos costoso que varios cortos.
α + n∗β << n∗(α + 1∗β)
∗β ∗(α
• Costo de un mensaje puede ser de cientos o miles de flops.
• Lección: Se necesita un ratio computación-a-
comunicación grande para ser eficiente.
36
37. Parametros Alfa-Beta en Máquinas reales
• Números obtenidos empíricamente
máquina α β
α es latencia en µs
T3E/Shm 1.2 0.003 β es ancho de banda
T3E/MPI 6.7 0.003 en µs por byte
IBM/LAPI 9.4 0.003
IBM/MPI 7.6 0.004
Quadrics/Get 3.267 0.00498
Quadrics/Shm 1.3 0.005 Qué tan bien el modelo αβ
Quadrics/MPI 7.3 0.005 Tiempo = α + n*β
β
Myrinet/GM 7.7 0.005 predice la performance real?
Myrinet/MPI 7.2 0.006
Dolphin/MPI 7.767 0.00529
Giganet/VIPL 3.0 0.010
GigE/VIPL 4.6 0.008
GigE/MPI 5.854 0.00872
37
38. Drop Page Fields Here
Tiempo según el modelo para varios n
Sum of model
10000
1000 machine
T3E/Shm
T3E/MPI
IBM/LAPI
IBM/MPI
100 Quadrics/Shm
Quadrics/MPI
Myrinet/GM
Myrinet/MPI
GigE/VIPL
10 GigE/MPI
1
8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072
size
38
39. Tiempo medido experimentalmente
Drop Page Fields Here
Sum of gap
10000
1000 machine
T3E/Shm
T3E/MPI
IBM/LAPI
IBM/MPI
100 Quadrics/Shm
Quadrics/MPI
Myrinet/GM
Myrinet/MPI
GigE/VIPL
10 GigE/MPI
1
8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072
size
39
40. Modelo de prog. 3: Paralelismo de data
• Un solo hilo de control que maneja operaciones paralelas.
• Esas operaciones paralelas se aplican a toda (o a parte
determinada) de un array.
• Comunicación implícita en los operadores paralelos
• Elegante y fácil de entender
• Coordinación implícita: instrucciones se ejecutan sincronizadas
• Similar a la forma de trabajo de Matlab en operaciones con arrays
• Desventajas:
• No todos los problemas encajan en este modelo
• Difícil de mapear en computadoras de grano grueso
A:
A = array de toda la data
f
fA = f(A) fA:
s = sum(fA) sum
s:
40
41. Modelo de máquina 3a: Sistema SIMD
• Un número grande de “pequeños” procesadores.
• Un solo “procesador de control” emite cada instrucción.
• Cada procesador ejecuta la mima instrucción.
• Algunos procesadores se pueden “apagar” en alguna
instrucciones
• Originalmente esas computadoras se especializaban en
cómputo científico, pocas fabricadas (CM2, Maspar)
• Modelo de programación puede ser implementado en el
compilador
• Mapear paralelismo n-oper. a p procesadores, n >> p, pero es
difícil (ej., HPF)
control processor
P1 NI P1 NI P1 NI P1 NI P1 NI
...
memory memory memory memory memory
interconnect
41
42. Modelo de máq. 3b: Máquinas vectoriales
• Arquitecturas vectoriales se basan en 1 sólo procesador
• Múltiples unidades funcionales
• Todas efectúan la misma operación
• Grado de paralelismo posible depende del hardware
• Importancia histórica
• Desplazada por los MPPs en los 90s
• Ha reaparecido ultimamente
• A gran escala en el Earth Simulator (NEC SX6) y Cray X1
• A pequeña escala en extenciones SIMD de procesadores
• SSE, SSE2 (Intel: Pentium/IA64)
• Altivec (IBM/Motorola/Apple: PowerPC)
• VIS (Sun: Sparc)
• Idea clave: compilador hace parte del trabajo difícl de
encontrar el paralelismo, así el HW no tiene que hacerlo.
42
43. Procesadores Vectoriales
• Instrucciones Vectoriales operan en un array o vector
• Operaciones en registros vectoriales
r1 r2 vr1 … vr2 …
+ + (logicamente, hace #elem
sumas en paralelo)
r3 vr3 …
• Un registro vectorial de una superc. ~32-64 elementos
• El no. de elementos es mayor que la cantidad de HW paralelo,
llamados pipes o lanes, entre 2 y 4
• El HW hace una operación vectorial completa en
• #elementos-por-reg-vectorial / #pipes
vr1 … vr2 …
+ + + + + (en realidad, hace
#`pipes sumas en
paralelo) 43
44. Cray X1: Arquitectura Vectorial Paralela
Cray combina varias tecnologías en el X1
• Procesadores vectoriales (MSP) de 12.8 Gflop/s
• Caches compartidos (inusual)
• 4 nodos compartiendo hasta 64 GB de memoria
• Única imagen del sistema hasta 4096 Procesadores
• put/get remoto entre nodos (más rápido que MPI)
44
45. Arquitectura del Earth Simulator
Vectorial Paralelo
• Procesadores
(vectoriales) de alta
velocidad
• Alto ancho de banda
de la memoria
(vectorial)
• Red rápida (nuevo
switch de crossbar)
Cluster de PCs no pueden
igualar esta performance
45
46. Modelo de máq.4: Clusters de SMPs
• SMPs son las computadoras comunes más rápidas, así
que se usan como bloque básico para hacer una
máquina mayor en una red
• Nombres comunes:
• CLUMP = Cluster de SMPs
• Máquinas jerárquicas, constelaciones
• Muchas máquinas modernas son de este tipo o similar:
• Millennium, IBM SPs, ASCI machines
• Cual sería el modelo de programación #4 ???
• Tratar a las computadoras como “planas”, simepre
usar paso de mensajes, aun dentro del SMP (simple,
pero ignora los efectos de la jerarquía de memoria).
• Memoria compartida dentro de un SMP, pero paso
de mensajes fuera del SMP. 46
47. TOP500
- Listado de las 500 más poderosas
Computadoras en el mundo
- Benchmark: Rmax del Linpack
Ax=b, con matrices densas
TPP performance
Rate
- Actualizado 2 veces/año:
Size
ISC‘xy en Alemania, Junio xy
SC‘xy en USA, Noviembre xy
- Todo disponible en www.top500.org
47
48. Listado TOP500 - Data disponible
• Manufacturer Fabricante o vendedor
• Computer Type Según el manual del fabricante
• Installation Site Comprador
• Location Ubicación, país
• Year Año de instalación/último upgrade importante
• Customer Segment Academic,Research,Industry,etc.
• # Processors Número de procesadores
• Rmax Maxmim de la performance en el LINPACK
• Rpeak Performance pico teórica
• Nmax Tamaño del problema para lograr Rmax
• N1/2 Tamaño del problema para lograr 50% Rmax
• Nworld Posición en el ranking TOP500
48
49. Los TOP 10 (Nov.2003)
Rmax Area of
Rank Manufacturer Computer Installation Site Country Year # Proc
[TF/s] Installation
1 NEC Earth-Simulator 35.86 Earth Simulator Center Japan 2002 Research 5120
ASCI Q Los Alamos
2 HP 13.88 USA 2002 Research 8192
AlphaServer SC National Laboratory
X
3 Self-Made 10.28 Virginia Tech USA 2003 Academic 2200
Apple G5, Mellanox
Tungsten
4 Dell 9.82 NCSA USA 2003 Academic 2500
PowerEdge, Myrinet
Mpp2, Integrity rx2600 Pacific Northwest
5 HP 8.63 USA 2003 Research 1936
Itanium2, Qadrics National Laboratory
Lightning,
6 Linux Networx 8.05 Los Alamos National Laboratory USA 2003 Research 2816
Opteron, Myrinet
Linux Networx/ Lawrence Livermore
7 MCR Cluster 7.63 USA 2002 Research 2304
Quadrics National Laboratory
ASCI White Lawrence Livermore
8 IBM 7.3 USA 2000 Research 8192
SP Power3 National Laboratory
Seaborg NERSC
9 IBM 7.3 USA 2002 Research 6656
SP Power 3 Lawrence Berkeley Nat. Lab.
xSeries Cluster Lawrence Livermore 49
10 IBM/Quadrics 6.59 USA 2003 Research 1920
Xeon 2.4 GHz National Laboratory
50. Los TOP 10 (Nov.2006)
Rmax
Rank Manufacturer Computer Installation Site Country Year Area of Installation # Proc
[TF/s]
1 IBM BlueGene/L 280 L. Livermore Nat. Lab. USA 2005 Research 131072
2 Cray Red Storm 101 Sandia National Laboratory USA 2006 Research 26544
3 IBM eServer Blue Gene 91 IBM Thomas Watson R.C. USA 2005 IT Services 40960
4 IBM ASC Purple 75.7 L. Livermore Nat. Lab. USA 2006 Research 12208
5 IBM MareNostrum 62.6 Barcelona Supercomp. Center Spain 2006 Medicine 10240
6 Dell Thuinderbird 53 Sandia National Laboratory USA 2006 Research 9024
7 Bull Tera-10 52.8 Commisariat a l’Energie Atom. Fra. 2006 Defense 9968
8 SGI Columbia 51.8 NASA Ames Research Center USA 2004 Aerospace 10160
9 NEC/ Sun Tsubame Grid Cluster 47.3 Tokyo Inst. of Technology Jap. 2006 Research 11088
10 Cray Jaguar 43.4 Oak Ridge National Lab. USA 2006 Research 50 10424
51. Los TOP 10 (Jun.2009)
Rmax
Rank Manufacturer Computer Installation Site Country Year Area of Installation # Proc
[TF/s]
1 IBM RoadRunner 1105 Los Alamos Nat. Lab. USA 2008 ? 129600
2 Cray Jaguar 1059 Oak Ridge Nat. Laboratory USA 2008 ? 150152
3 IBM JUGENE 825.5 Forschungszentrum Juelich Germ. 2009 Research 294912
4 SGI Pleiades 487 NASA Ames Research Center USA 2008 ? 51200
5 IBM BlueGene/L 478 Lawrance Livermore Nat.Lab. USA 2007 Medicine 212992
6 Cray Kraken XT5 463 NICS / Univ. Tennessee USA 2008 Research 66000
7 IBM BlueGene/P 458 Argonne Nat. Lab. USA 2007 Research 163840
8 Sun Ranger 433 TACC / Univ. Texas USA 2008 Res./Educat.? 62976
9 IBM Dawn 415 Lawrance Livermore Nat.Lab. USA 2009 Research 147456
10 Bull JUROPA 274 Forschungszentrum Juelich Germ. 2009 Research? 26304
51
52. Análisis de los reportes TOP500
• Crecimiento anual de performance cerca de 1.82
• Dos factores contribuyen casi en par en este
crecimiento
• Número de procesadores crece anualmente por un
factor de 1.30, y
• Performance de un procesador crece en 1.40 vs.
1.58 según la Ley de Moore
1.3 x 1.4 = 1.82
Strohmaier, Dongarra, Meuer, and Simon, Parallel Computing 25, 1999, pp
1517-1544.
52
53. Clusters de PCs: Beowulf
• Un experimento en sistemas de cómputo paralelo
• Estableció una visión de HPC de bajo costo
• Efectividad demostrada de clusters de PC para
algunas (no todas) las clases de aplicaciones
• Brindó software para el networking
• Mostró logros a la comunidad en general (buena
publicidad)
• Tutoriales y libros
• Estándares diseñados
• Estándares trajeron:
libros, gente entrenada,
SW … ciclo virtuoso
Según Gordon Bell 53
54. Sumario
• Históricamente, cada computadora paralela fue única,
junto a su modelo de programación y de lenguaje.
• Se debía descartar el software y comenzar de cero si se
cambiaba por una nueva máquina.
• Ahora se separa el modelo de programa del modelo de
la máquina, así que se puede escribir código correcto
que corre en muchos tipos de máquina.
• MPI es la opción más portable ahora, pero tedioso a veces.
• Escribir código portable y rápido necesita “tuning” o
afinamiento según la arquitetcura de máquina.
• Desafío en el diseño de algoritmos es hacer el proceso fácil
(metodologías, herramientas, templates).
• Ej.: escoger un tamaño de bloque, no reescribir todo el
algoritmo.
54