SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Modelos de
performance



              34
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Más contenido relacionado

La actualidad más candente

Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Pythonmaluacsa
 
Fundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADAFundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADAJose Luis Dorao
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))kikocorreoso
 
Apache Storm: Instalación
Apache Storm: InstalaciónApache Storm: Instalación
Apache Storm: InstalaciónStratebi
 
Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Oziel Solis Juarez
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Pythonmaluacsa
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: DesarrolloStratebi
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Pythonmaluacsa
 

La actualidad más candente (20)

Paralela8
Paralela8Paralela8
Paralela8
 
Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Paralela4
Paralela4Paralela4
Paralela4
 
Paralela7
Paralela7Paralela7
Paralela7
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
Paralela1
Paralela1Paralela1
Paralela1
 
Manejo de la memoria
Manejo de la memoriaManejo de la memoria
Manejo de la memoria
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Python
 
Fundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADAFundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADA
 
Presnetación Go
Presnetación GoPresnetación Go
Presnetación Go
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))
 
Apache Storm: Instalación
Apache Storm: InstalaciónApache Storm: Instalación
Apache Storm: Instalación
 
Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_
 
Matriz Vector
Matriz VectorMatriz Vector
Matriz Vector
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Python
 
Dotnetmania 9 pag_21_29
Dotnetmania 9 pag_21_29Dotnetmania 9 pag_21_29
Dotnetmania 9 pag_21_29
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: Desarrollo
 
Utp 2015-2_ia_lab3
 Utp 2015-2_ia_lab3 Utp 2015-2_ia_lab3
Utp 2015-2_ia_lab3
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Python
 

Destacado (7)

Cased hole seismic (2)
Cased hole seismic (2)Cased hole seismic (2)
Cased hole seismic (2)
 
Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
 
Computo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPIComputo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPI
 
Introducción a la Computacion paralela
Introducción a la Computacion paralelaIntroducción a la Computacion paralela
Introducción a la Computacion paralela
 
Programacion paralelo
Programacion paraleloProgramacion paralelo
Programacion paralelo
 
Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
 
computación paralela
computación paralelacomputación paralela
computación paralela
 

Similar a Paralela2

Análisis de datos con Apache Spark
Análisis de datos con Apache SparkAnálisis de datos con Apache Spark
Análisis de datos con Apache SparkEduardo Castro
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true historyidealistacreamcode
 
Organizacion del computador
Organizacion del computadorOrganizacion del computador
Organizacion del computadorviviana111
 
News40 Parallel Computing
News40 Parallel ComputingNews40 Parallel Computing
News40 Parallel ComputingLluis Franco
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxyadhirafelizfajardo
 
El sistema NWP HARMONIE: Introducción a la Computación de Altas
El sistema NWP HARMONIE: Introducción a la Computación de AltasEl sistema NWP HARMONIE: Introducción a la Computación de Altas
El sistema NWP HARMONIE: Introducción a la Computación de AltasTomás Morales
 
Estructura de datos c++
Estructura de datos c++Estructura de datos c++
Estructura de datos c++kikeMerck
 
Segunda unidas open suse
Segunda unidas open suseSegunda unidas open suse
Segunda unidas open suseMiguel Magaña
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSlorenapardo
 
Previo2- Dispos E/S
Previo2- Dispos E/SPrevio2- Dispos E/S
Previo2- Dispos E/SBertha Vega
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming PlataformsVeronica Ramirez
 
Memorias (Sistemas Operativos)
Memorias (Sistemas Operativos)Memorias (Sistemas Operativos)
Memorias (Sistemas Operativos)JaderValdivia
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming PlataformsRaquel Solano
 

Similar a Paralela2 (20)

Análisis de datos con Apache Spark
Análisis de datos con Apache SparkAnálisis de datos con Apache Spark
Análisis de datos con Apache Spark
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true history
 
Organizacion del computador
Organizacion del computadorOrganizacion del computador
Organizacion del computador
 
Memoria 3
Memoria 3Memoria 3
Memoria 3
 
News40 Parallel Computing
News40 Parallel ComputingNews40 Parallel Computing
News40 Parallel Computing
 
Opensuse2
Opensuse2Opensuse2
Opensuse2
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
 
Aic multiproc
Aic multiprocAic multiproc
Aic multiproc
 
ARQII_00-Repaso2.pdf
ARQII_00-Repaso2.pdfARQII_00-Repaso2.pdf
ARQII_00-Repaso2.pdf
 
El sistema NWP HARMONIE: Introducción a la Computación de Altas
El sistema NWP HARMONIE: Introducción a la Computación de AltasEl sistema NWP HARMONIE: Introducción a la Computación de Altas
El sistema NWP HARMONIE: Introducción a la Computación de Altas
 
Unidad IV
Unidad IVUnidad IV
Unidad IV
 
Estructura de datos c++
Estructura de datos c++Estructura de datos c++
Estructura de datos c++
 
Segunda unidas open suse
Segunda unidas open suseSegunda unidas open suse
Segunda unidas open suse
 
Arqui hardware
Arqui hardwareArqui hardware
Arqui hardware
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
 
Ricardo - Meetup Python Madrid marzo 2023.pptx
Ricardo - Meetup Python Madrid marzo 2023.pptxRicardo - Meetup Python Madrid marzo 2023.pptx
Ricardo - Meetup Python Madrid marzo 2023.pptx
 
Previo2- Dispos E/S
Previo2- Dispos E/SPrevio2- Dispos E/S
Previo2- Dispos E/S
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming Plataforms
 
Memorias (Sistemas Operativos)
Memorias (Sistemas Operativos)Memorias (Sistemas Operativos)
Memorias (Sistemas Operativos)
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming Plataforms
 

Último

Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 

Último (20)

La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 

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