Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porFernando San Segundo Modificado hace 6 años
1
arqAva Cantidad de paralelismo Introducción-88
ACELERACIÓN: “Speedup” Cuántas veces más rápido al contar con “n” U.P. en vez de una. (Absoluta) Sn = Tsecuencial / Tparalelo = T1 / Tn SI CON UNA U.P. SE ORDENA EN 1 MINUTO, ¿CON 4 U.P. SE ORDENA EN? ===> 15”, 20”, .....??? 1 <= Sn <= n n = Máximo teórico EFICIENCIA: Lo mismo, pero teniendo en cuenta “n”. (Relativa) En = Sn / n = T1 / nTn En la tabla siguiente puede verse de forma simple cómo se calcula la aceleración y la eficiencia de un programa paralelo ejecutado sobre dos máquinas distintas. Cores Máquina T1 Tn Sn En 4 A ,3 0,8 400 B ,5 Vemos que sólo fijándonos en la Aceleración (Sn), no podemos dar una opinión fiable de qué máquina es mejor. Podría decirse que B es mejor que A ya que acelera más. Es más importante la medida de Eficiencia (En). Ahora vemos que en la máquina A se es más eficiente ejecutando este algoritmo (0,8) que en la máquina B (0,5). La eficiencia hay que interpretarla -para el caso de 0,5- como que por término medio, es como si estuviese trabajando a pleno rendimiento el 50% de la máquina, o lo que es lo mismo, que de los 400 cores es como si 200 trabajasen a pleno rendimiento y los otros 200 estuviesen parados. Sin embargo, la máquina A estaría trabajando al 80%. Cuando una ordenación que tarda un minuto la ejecutamos en paralelo con 4 procesos, esperaríamos que se tardasen 15 segundos (60 / 4), pero parece lógico que sea algo más. Analizaremos las causas de esas ineficiencias. Sorprendentemente, también podríamos observar tiempos menores de 15 segundos “Superaceleración”: lo veremos más adelante. 1/n <= En <= 1 1 = Máximo teórico
2
arqAva Cantidad de paralelismo Introducción-89
ACELERACIÓN: ¿Por qué no tanto? t/2 Thread1 Thread2 rec(1, &msj) ? Acceso a datos comunes Sincronismo Comunicación 1 env(2, &msj)
3
arqAva Cantidad de paralelismo Introducción-90
Aquí presentamos otro ejemplo de por qué con N cores no tenemos por qué ir N veces más rápido. El dibujo de la figura es el conjunto de Mandelbrot que se computa a partir de la serie siguiente: Zi+1 = Zi2 * Cp Tal que Z0 = 0 y Cp es un complejo inicial asociado a un pixel de la pantalla (fil,col) Esta serie diverge en el elemento Zk si |Zk| > 2 La serie es infinita, pero delimitaremos su cálculo para un máximo igual al número de colores con que contamos (por ejemplo ). Si la fórmula para un pixel diverge en la iteración 30 se pintará con color 30, si diverge en la pues con color y, si después de iteraciones de la serie no ha divergido, se pintará con color negro. Lo que importa resaltar es que para algunos píxeles se computa rápido con qué color pintarlo y para otros se tarda mucho más. Supongamos que tenemos unos de pixeles. Si tenemos 4 cores y dividimos en cuatro cuadrantes (cada core trabajaría sobre unos de pixeles), la aceleración que observaríamos se acercaría a 4. Sin embargo, siguiendo el mismo criterio para 16 cores (16 cuadrantes cada uno de de pixeles), la aceleración muy posiblemente sería poco más de 4. El problema es que aunque hemos repartido equilibradamente el número de píxeles, el trabajo real para computarlos difiere mucho: los cuatro cuadrantes interiores son muy costosos de computar y los 12 exteriores –que divergen relativamente rápido-, se computan mucho más rápido. Este aspecto de pérdida de eficiencia se denomina “Reparto no equilibrado del trabajo”
4
arqAva Cantidad de paralelismo Introducción-91
ACELERACIÓN: ¿Por qué no tanto? P0 P1 P2 P3 P4 P5 ? Reparto no equilibrado 2 A unos más trabajo que a otros Unos cores más rápidos que otros Como conclusión, tres cuestiones fundamentales a las que puede atribuirse pérdida de eficiencia: Comunicación, sincronismo, acceso a datos comunes Reparto no equilibrado Existencia de código secuencial puro (no hay forma de paralelizarlo) Código secuencial puro 3
5
arqAva Cantidad de paralelismo Introducción-92
ACELERACIÓN: ¿Puede que todavía más? t/2 ? Superaceleración Ficticia Real ? #nodos T 1 2 4 29:381 Ordenar int 1000 Sn Superaceleración significa que con N cores se va más de N veces más rápido. Puede ser ficticia o real. En la figura se muestra un ejemplo de aceleración ficticia y su explicación supuesto que el método de ordenación es cuadrático, por ejemplo la burbuja. Lo que sucede es que al hacer el algoritmo paralelo, la ordenación secuencial de enteros se traslada a dos cores ordenando en paralelo cada uno enteros que, puede parecer sorprendente, no se computa en la mitad sino en la cuarta parte. La explicación es que al ser cuadrático O(N2), al reducir a la mitad N (número de elementos a ordenar), el tiempo en vez de bajar a la mitad, baja a la cuarta parte. Poniendo números, si N fuesen enteros, el número de operaciones (comparaciones) sería en torno a (1.0002), mientras que si ordenamos la mitad de enteros (N=500), el número de operaciones bajaría a (5002). En este caso, podríamos hacer el algoritmo secuencial “exactamente” como el paralelo: ordenando dos mitades y luego mezclándolas (acabaríamos en la mitad de tiempo). De esta forma el paralelo observaría una aceleración de 2, de ahí que se denomine superaceleración ficticia. La aceleración real tiene que ver con el aumento de recursos físicos al pasar de tener un core a N cores. Si tenemos procesadores de un solo core con una caché de 2MBytes. Un programa secuencial que recorra reiteradas veces un array de enteros puede que tarde 13 segundos y al ejecutarlo en dos procesadores (repartiéndose cada uno la mitad del array original –es decir cada uno itera sobre un subvector de enteros), puede que se ejecute en 3,5 segundos: 3,71 de aceleración (casi el doble de la máxima teórica). La razón es que con un único core el vector de enteros no cabe en la caché (podría albergar enteros) y al ejecutarlo en dos cores, cada subvector de enteros cabe en la caché de cada core y va mucho más rápido que si todos los accesos suponen fallo de caché. 3,38 1.000 8:693 2:181 13,47
6
arqAva Cantidad de paralelismo Introducción-93
16 32 64 128 10 20 30 40 50 60 70 versión 12/94 versión 9/94 versión 8/94 Aquí puede verse un ejemplo real de lo dificultoso de acercarse a eficiencia 1. Se trata de un software de modelización molecular. En la versión 8/94 aceleran razonablemente bien con 16 cores, algo peor con 32 cores y con 64 no mejoran, llegando a empeorar con 128 cores. En la versión 9/94 ya observan mejoras hasta con 64 cores. Lo consiguieron equilibrando mejor la carga. En la versión 12/94 las mejoras se aprecian incluso con 128 cores. Lo consiguieron mejorando el patrón de comunicaciones (intentar que la mayoría de las comunicaciones lo sean con procesos que residen en cores “cercanos”). Si se tiene una aplicación paralela tipo “pipeline” con 4 procesos: A => B => C => D. Si se cuenta con dos procesadores cada uno de dos cores, no es lo mismo cómo ubiquemos procesos (A, B, C y D) en procesadores (P1 y P2): A y C en P1 y B y D en P2: Peor ya que habrá tres comunicaciones entre procesos que irán de un procesador al otro por una red externa. A y B en P1 y C y D en P2: Mejor ya que sólo una comunicación será externa (B = C) y las otras dos sucederán dentro del mismo procesador a través de memoria común (más rápido). Finalmente resaltar que si probásemos con nuestro cluster en 16 o 32 cores la versión del 8/94, podriamos concluir que hemos escrito un programa paralelo muy bueno, pero si lo pasamos a un cluster mayor empezaría a no ser tan bueno. Aceleración en tres versiones de un programa paralelo Pfeiffer et al (AMBER en Intel Paragon 128 P)
7
arqAva Cantidad de paralelismo Introducción-94
Sn y En resolviendo Sistemas Lineales de 1000 variables (Jack Dongarra, 2004)
8
arqAva Cantidad de paralelismo Introducción-95
Sn y En resolviendo Sistemas Lineales de 1000 variables (Jack Dongarra, 2004)
9
arqAva Cantidad de paralelismo Introducción-96
¡ Eficiencia del 96% ! ¡ cores En=82%!
10
arqAva Conceptos Introducción-97
PARALELISMO DE CONTROL (Prog. Concurrente) Descomposición en subtareas simultáneas (Una x núcleo) Supervisión industrial, Productor/Consumidor, Editor … MUY COMÚN, pero .... ¡Poco relevante! (Grado 3) PARALELISMO DE DATOS (Espacial) Operaciones sobre datos regulares (vectores) aplicando la misma operación sobre cada elemento MMX SSE SSE4 AVX 3DNow AltiVec 2 1 3 4 5 7 8 6 9 A B C + PARALELISMO DE DATOS: El paralelismo de datos, que veremos en el tema de SIMD, ya están en los procesadores comerciales (Intel, AMD, IBM, etc.) desde hace tiempo. Intel empezó con MMX “MultiMedia eXtension” en 1996, siguió en 1999 con SSE “Streaming SIMD Extension” y cuenta actualmente con AVX “Advanced Vector Extension”. AMD tenía su propia tecnología denominada 3DNow (aunque se pasó definitivamente a SSE y AVX) e IBM la suya con AltiVec. Para hacerse una idea, con la segunda versión de AVX (AVX2), los procesadores de Intel que lo soportan, cuentan con 32 registros de 512 bits que, en una de sus configuraciones, permitiría tener en cada uno de esos registros un vector de 8 valores de 8 Bytes (double float V[8]). Para hacernos una idea, en aplicaciones de tratamiento de imágenes, podríamos procesar imágenes que vemos en un televisor a nivel de pixel o conjunto de pixeles (muchos datos). Veamos tres formatos de televisión: FullHD 1900x pixeles 4K UHDV 3840 x pixeles 8K 7860 x pixeles MENOS COMÚN, pero ¡Más relevante! (Grado )
11
arqAva Tipo / Fuentes (Control, Datos, Flujo) Introducción-98
PARALELISMO DE FLUJO (Temporal) Idea intuitiva => Cadena de montaje de coches Secuencia de datos homogéneos de entrada Peluquería Personas Despeinadas (Di) Lavar => Cortar => Marcar Proceso divisible en subtareas secuenciales (filtros) LCM 1Hora 3 Mill. 11:00 (2) D5,D4,D3 P1 10:45 (1) D4,D3,D2 10:00 (1) 10:15 (1) D2 10:30 (1) D3,D2 10:40 (3) (2) (1) 11:00 (4) (3) (2) D5 P1 10:30 (2) (1) D3 10:45 (3) (2) (1) D4 10:15 (1) D2 10:20 (2) (1) 10:00 (1) L C M 20’ 20’ ’ 1,5 M 1,5M ,5M Secuencial => 1P x Hora Vs Pipeline => 1P x 20’
12
arqAva Tipo / Fuentes (Control, Datos, Flujo) Introducción-99
PARALELISMO DE FLUJO (II) Direct3D F D I E M W Control Flujo Datos 3 30 106 Grado ¡ No siempre mejora de N ! ALGO COMÚN, pero .... ¡No muy relevante! (Grado 30)
13
arqAva Acoplamiento Introducción-100
Grado de dependencia entre las partes (Hw/Sw) Datos Comunes Cantidad relativa de interacciones Sincronismo Grano Fino Grueso FUERTE Pi Pj DC DÉBIL Pi Pj Poca localidad Cuellos de botella Mucha localidad Buena característica
14
arqAva Escalabilidad Introducción-101
Aumento de prestaciones con coste lineal o nlogn NO ESCALABLE 2 3 4 5 1 6 10 ESCALABLE 4 9 16 25 12 24 40 1 1,3 1,5 1,6 0,5 1,0 1,5 2,0 En la red de conexión de la izquierda (todos con todos), aumentar el número de nodos de forma lineal genera un crecimiento cuadrático en el número de enlaces necesarios. Para N nodos se necesitarían (N2-N)/1 => O(N2). Por lo tanto no escalable. En la red de conexión de la derecha (malla 2D), aumentar el número de nodos de forma lineal genera un crecimiento también lineal en el número de enlaces necesarios. Para N nodos se necesitarían (2N – 2*raizCuadrada(N) => O(2N). Por lo tanto escalable. ,5
15
arqAva Escalabilidad Introducción-102
Aumento de prestaciones con coste lineal o nlogn 13.000 20.000 30.000 30.000 42.000 75.000 66.000
16
arqAva Límites al paralelismo Introducción-103
¿Máxima Aceleración? – Ley de Amdahl (a) Una CPU T1 200 F T1 (1-F) T1 0,1 20 180 Secuencial Trozos paralelizables n CPU’s 5 (b) Varias CPU’s 36 Sn = T1 / Tn 8 Tn (1-F)T1/n n Sn = 1 + (n-1) F
17
arqAva Límites al paralelismo Introducción-104
Sn Significado F = 0% 20 n Sn = 1 + (n-1) F 16 12 F = 5% 8 ¡ F=5% => Lim Sn = 20! 4 F = 20% “Amdal’s Law in the Multicore Era”. Mark D. Hill & Michael R. Marty 2007 n 4 8 12 16 20 En la tabla 1: Symetric: Por ejemplo una máquina con 64 procesadores sencillos que pueden trabajar (reconfigurarse) como 64 simples o 16 más complejos (4 veces más potentes “rápidos”) Asymetric: Muchos cores simples y además uno o más cores rápidos para acelerar la parte secuencial Dynamic: Muchos cores simples que pueden reconfigurarse como uno más potente
18
arqAva Clasificación de Flynn (1972) Introducción-105
Combina Flujo de Datos y Flujo de Instrucciones con (Single) Único y Múltiple, dando 4 combinaciones: Flujo de Datos Múltiple Único Flujo de Intrucc. SISD MISD MIMD SIMD SISD Una Instrucción un Dato Von Neumann SIMD Una Instrucción muchos Datos Vectoriales / Sistólicos MISD Muchas Instrucciones un Dato Pipeline? MIMD Muchas Instrucciones muchos Datos Multiprocesadores / Multicomputadores
19
arqAva Modelos SISD y MISD Introducción-106
SISD: Una Instrucción un Dato (Von Neumann) I UC UP MP D MISD: Muchas Instrucciones un Dato (Pipeline?) MP Programa Datos UC1 UC2 UCN UP1 UP2 UPN I1 In I2 D
20
arqAva Modelo SIMD Introducción-107
SIMD: Una Instrucción muchos Datos (Vectoriales, ....) UC UP1 MP UPi UPn Memoria Común R E D Host Síncronas LockStep UC UP1 UPi UPn ML1 MLn MLi Memoria Distribuida D1 Dn Di D1 Dn Di I I I I Cuello de botella Recordar que SIMD supone que el código secuencial: for (i=0; i<N; i++) A[i] = B[i] + C[i] Puede entenderse que se ejecutan todas las operaciones de suma a la vez (si hay Unidades de Procesamiento suficientes): A[ ] = B[ ] + C[ ] Es fundamental y así lo veremos en todo el curso, la distinción entre un único espacio de memoria común para todos los procesos o no. En el caso de la MP común habrá cuello de botella en la red (dependiendo de su topología será mayor o menor: lo veremos en el tema siguiente). La MP se suele implementar con módulos que permitirán más de un acceso paralelo a la memoria principal si se trata de accesos a módulos distintos. En el caso de la Memoria Distribuida que parece librarnos del cuello de botella, el problema es cómo conseguir que los accesos de un proceso lo sean precisamente a datos que siempre se encuentran en su memoria local. Acoplamiento fuerte Acoplamiento débil No escalable
21
arqAva Modelo MIMD Introducción-108
MIMD: Muchas Instrucciones muchos Datos M. Común (Multiprocesador) UC1 UP1 M.P. UPi UPn BUS │ RED D1 Dn Di I1 UCi UCn In Ii M. Distribuida (Multicomputador) M P Red a t1 t2 aa a t1 t2 En el caso de Multiprocesadores (memoria común), los procesos se pueden pasar información unos a otros escribiendo y leyendo de posiciones comunes (globales) de memoria si ejecutamos procesos ligeros (threads). Hay que tener cuidado de evitar “Condiciones de Carrera” y hacer acceso seguro a memoria común con herramientas ya vistas en Programación Concurrente como semáforos, regiones críticas, monitores, etc. En el caso de Multicomputadores (no hay memoria común), no queda más remedio que pasarse información de un proceso a otro (que pueden estar en nodos distintos), mediante el envío y recepción de mensajes (así será en la primera parte de las prácticas: MPI). La mayoría de los sistemas de cierto tamaño son híbridos. Como ejemplo, nuestro cluster de prácticas del laboratorio 4401: 19 equipos conectados por red (no tienen memoria común entre ellos), pero dentro de cada PC hay 4 cores que comparten la memoria común de dicho PC. Acoplamiento Fuerte Acoplamiento Débil Memoria común vs Paso de mensajes
22
arqAva Clasificación de Flynn Ampliada Introducción-109
Arquitecturas Paralelas GRID Computing ? CLOUD Computing ? SISD SIMD MISD MIMD Procesadores Vectoriales Array de Procesadores Sistólicos Von Neumann ?? Multi-procesadores Multi-computadores UMA NUMA COMA Distintas formas de organizar la memoria común MPP COW NOW Beowulf Symetric Multi Processor Distributed Shared Memory
23
arqAva Perspectiva histórica Introducción-110
SIMD Se inicia en 1965, se vende en 1972 y funciona en 1975 Fiasco ILLIAC IV Presupuesto $6 Mill y costó $31 Mill 1/4 de máquina Se esperaban 1000 MF y se obtuvieron 15MF ¿Dormidas para propósito general?, pero tienen su nicho: Procesamiento de Imagen, Señal, Genética, Búsquedas
24
arqAva Perspectiva histórica Introducción-111
MIMD HWANG (1993) IDENTIFICA TRES GENERACIONES: Hipercubo con Encaminamiento Sw Malla con Encaminamiento Hw (Sw de grano medio) µP y comunicaciones en el mismo chip (grano fino) Multiprocessor systems-on-chips (MPSoCs) Hoy núcleos ¿Se llegará a 400 en 2020?
25
arqAva Tendencias Introducción-112
MÁQUINAS BASADAS EN µP COMERCIALES ¿MUCHOS µP SENCILLOS O POCOS Y POTENTES? ¿QUÉ TIPO DE MÁQUINA PARALELA? MÁQUINAS MÁS POTENTES: ¿CUÁLES Y PARA QUÉ? ¿QUÉ SISTEMA OPERATIVO?
26
arqAva Las máquinas más potentes (Nov/2018) Introducción-113
¿Qué micros se utilizan? Intel Intel 95% IBM POWER 3% Micros convencionales de gama alta Dell 98% Cray SUN/Oracle Cray Otros IBM
27
arqAva Las máquinas más potentes (Nov/2018) Introducción-114
¿Cientos o miles de micros? Total Max Med Min 12.592 72.014 Sin TOP10
28
arqAva Las máquinas más potentes (Nov/2018) Introducción-115
¿Qué arquitecturas dominan? MPP SMP Cluster Constelación SIMD Mono
29
arqAva Las máquinas más potentes (Nov/2018) Introducción-116
¿Cuáles? N Ordenador Tflops Ubicación #Núcleos 1 Summit IBM Power + NVidia Oak Ridge National Laboratory (USA) 2 Sierra IBM Power + NVidia 94.640 Lawrence Livermore National Laboratory (USA) 3 Sunway TaihuLight 93.015 National Super Computer Center (China) 4 Tianhe-2 (MilkyWay-2) 61.446 5 Piz Daint Cray XC50 Xeon 12 21.230 Swiss National Supercomputing Centre (Suiza) 25 MareNostrum 4 Xeon 24 6.471 Barcelona Supercomputer Center (España) Centros: 3, 3, 1, 7, 6, 7, 5, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 2 Puesto: 424, 5, 11, 5, 9, 26, 60, 87, 118, 114, 36, 34, 57, 93, 129, 13, 16, 25
30
arqAva Las máquinas más potentes (Nov/2015) Introducción-117
¿En qué se utilizan? ¿ Cada vez más en la industria ? Nov2018 Sin especificar 97% 485/500
31
arqAva Las máquinas más potentes (Nov/2018) Introducción-118
¿Qué S.O. usan? CMOST HP-UX UNICOS UNIX Linux IRIX AIX Windows => 0 Otros OSF Solaris
32
arqAva ¿Quién se come a quién? Introducción-119
FIN now.cs.berkeley.edu/
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.