Taller de Programación Paralela Fernando R. Rannou Departamento de Ingenierı́a Informática Universidad de Santiago de Chile March 17, 2008 ¿Qué es paralelismo? ■ Una estrategia compuesta de elementos de hardware y software para resolver complejos problemas computacionales, en forma más rápida. ■ En términos simples, paralelismo se logra realizando las siguientes etapas 1. Dividir el problema en tareas más pequeñas 2. Asignar las tareas a un conjunto de procesadores que trabajen simultáneamente 3. Coordinar a los procesadores ■ Una solución secuencial sólo se preocupa de encontrar un algoritmo que resuelva el problema. ■ Paralelismo implica además considerar la infraestructura paralela. Fernando R. Rannou Diinf-USACH 2 / 28 Velocidad secuencial ■ Considere un procesador moderno de 3.0 Ghz el cual completa una instrucción en 3 ciclos. Luego 1 N = 3 × 109 (ciclos/s) · (inst./ciclo) = 109 3 instrucciones por segundo ■ Es decir, en 60 segundos, el procesador ejecutarı́a, 60 mil millones de instrucciones. ■ Consideraciones de acceso a memoria, memoria cache, contención del bus, y otros aspectos impiden alcanzar este rendimiento ■ En grandes aplicaciones paralelas se requieren Trillones (1012 ) de operaciones por segundo Fernando R. Rannou Diinf-USACH 3 / 28 Supercomputadores tradicionales 1. Tecnologı́a ■ Procesador creado especı́ficamente para un supercomputador ■ Max. performance posible con buen ancho de banda de memoria 2. Beneficios ■ Programación secuencial ■ Más de 30 años de desarrollo de herramientas de software ■ I/O es relativamente simple 3. Limitaciones Fernando R. Rannou Diinf-USACH ■ Procesadores dedicados extremadamente caros ■ Se requiere de sistemas sofisticados de enfriamiento ■ Rendimiento por procesador llegando a un lı́mite 4 / 28 Supercomputadores paralelos 1. Tecnologı́a ■ Uso de muchos procesadores pequeños que trabajen en una parte del problema a resolver ■ Capitalización de la inversión de la industria de microprocesadores y redes 2. Beneficios ■ Variedad de procesadores de propósito general en el mercado ■ Buena capacidad de escalamiento ■ Más barato 3. Limitaciones Fernando R. Rannou Diinf-USACH ■ Nueva tecnologı́a; programación paralela ■ Códigos secuenciales no sirven ■ Necesidad de nuevas tecnologı́as de software: compiladores, depuradores ■ I/O más complicado 5 / 28 Programación paralela ■ Programación paralela involucra 1. Descomposición de la tarea en partes más simples 2. Distribución de las tareas en un pool de procesadores 3. Coordinación del trabajo y comunicación entre procesadores ■ Consideraciones 1. Tipo de arquitectura paralela usada 2. Tipo de comunicación entre procesadores usada Fernando R. Rannou Diinf-USACH 6 / 28 Procesador escalar ■ Un procesador escalar base consiste de un procesador que “emite” una instrucción por ciclo ■ También existe una o más unidades de I/O ■ Los elementos se comunican a través de un bus del sistema ■ En general, los procesadores escalares están basados en pipelining ■ El 99.2% de los computadores top 500 (2007) tienen procesadores escalares Memoria Principal Bus de Memoria DMA ALU Cache I/O FPU Control Bus de I/O Fernando R. Rannou Diinf-USACH 7 / 28 Procesador super escalar ■ Un procesador super escalar emite múltiples instrucciones por ciclo de reloj ■ Por ejemplo, si el procesador tiene m pipelines, puede ejecutar m instrucciones en paralelo (si éstas son independientes) ■ El número real de instrucciones ejecutadas por ciclo depende de la independencia entre las instrucciones. ■ Uso de optimización en fase de compilación for i=0 to N { a[i] = sin(30*i/PI) } Fernando R. Rannou Diinf-USACH a[0] = 0.5 for i=1 to N { a[i] = a[i-1]*sin(30*i/PI) } 8 / 28 Procesador vectorial ■ En un procesador vectorial paralelo (PVP) una instrucción opera simultáneamente sobre elementos de vectores o arreglos de datos ■ Generalmente son muy caros y limitados en aplicaciones ■ No hay mucho desarrollo en la actualidad ■ Apoyo del compilador para vectorizar loops (Fortran 90) ■ Ejemplos: Cray SV1, Cray SV2, NEC Earth simulator ■ El 0.8 % de los computadores top 500 (2007) tienen procesadores vectoriales z(1:100) = x(1:100) + y(1:100) Fernando R. Rannou Diinf-USACH 9 / 28 Multiprocesadores de memoria compartida ■ Un multiprocesador de memoria compartidad contiene dos o más procesadores escalares que comparten el espacio de memoria. Dos modelos: 1. UMA (Uniform memory-access): la memoria fı́sica es compartida por todos los procesadores; por lo tanto el tiempo de acceso es el mismo para todos. 2. NUMA (Non-uniform memory-access): la memoria fı́sica esta distribuida (local a cada procesador) y por lo tanto el tiempo de acceso a ella no es uniforme. ■ La colección de todas las memorias locales forman el espacio global de direcciones ■ Programación multihebra usa eficientemente esta aquitectura P1 P2 P3 Pn Red de Interconneccion (Bus, Crossbar, Red Multietapas etc) Red de Interconneccion (Bus, Crossbar, Red Multietapas, etc) I/O Fernando R. Rannou Diinf-USACH M1 M2 P1 P2 P3 Pn M1 M2 M3 Mn Mp 10 / 28 Multiprocesadores de memoria distribuida ■ Cada nodo consiste de un procesador autónomo con memoria local, y dispositivos de I/O. ■ Los nodos se comunican mediante una red de paso de mensajes, la cual provee conexiones punto-a-punto y estáticas ■ La memoria local a cada nodo sólo puede ser accesada por dicho nodo ■ Variadas topologı́as de interconección: anillo, torus, hypercubo, etc. ■ Librerı́as nativas para comunicación proveen mejor rendimiento que librerı́as de propósito general Red de Interconneccion de paso de mensajes (malla, anillo, torus, hipercubo, etc) Fernando R. Rannou Diinf-USACH P1 P2 P3 Pn M1 M2 M3 Mn 11 / 28 Cluster de computadores ■ Cada nodo es un computador separado del resto, ej: PCs, estaciones de trabajo, etc ■ Los nodos pueden o no ser heterogéneos (procesador, velocidad, memoria, SO, otros) ■ Se conectan a través de un red de paso de mensajes ■ Sencillos de construir, actualizar; baratos ■ Limitada escalabilidad ■ I/O puede ser complicado Fernando R. Rannou Diinf-USACH 12 / 28 Redes de interconección estáticas ■ Una red de interconexión estática se puede describir mediante un grafo, donde 1. cada nodo es un procesador 2. un arco es un enlace de comunicación estático ■ Criterios de evaluación de una red estática: 1. Número de nodos 2. Diámetro: distancia máxima entre dos nodos 3. Ancho de bisección: mı́nimo número de arcos que deben ser eliminados para partir el grafo en dos subgrafos de “igual” tamaño. 4. Número de arcos por nodo 5. Número de enlaces Fernando R. Rannou Diinf-USACH 13 / 28 Arreglo lineal y anillo ■ Un arreglo lineal no es lo mismo que un bus. ■ El arreglo presenta mala escalabilidad ■ Tanto el arreglo como el anillo son baratos Propiedad Número de nodos Diámetro Ancho de bisección Arcos por nodo Número de enlaces Arreglo N N −1 1 2 N −1 Anillo N ⌊N/2⌋ 2 2 N 3 4 2 5 0 1 2 3 4 1 0 6 7 11 8 10 9 Fernando R. Rannou Diinf-USACH 14 / 28 Malla y Torus ■ Una malla es un lattice n-dimensional ■ Por ejemplo, para n = 2 tenemos una malla 2D ■ Los enlances adicionales del torus reducen el diámetro a la mitad, respecto de la malla 12 8 4 0 Fernando R. Rannou Diinf-USACH 13 9 5 1 14 10 6 2 Propiedad Número de nodos Tamaño de la malla Diámetro Ancho de bisección Arcos por nodo Número de enlaces Malla N √ r × r (r = N ) 2(r − 1) r 4 2N − 2r Torus N r×r 2⌊r/2⌋ 2r 4 2N 15 5 6 7 3 4 5 0 1 2 11 7 3 15 / 28 Árbol binario y estrella ■ El árbol ofrece buena escalabilidad, pero tiene un diámetro largo ■ La raı́z es el cuello de botella; lo mismo para la estrella Propiedad Número de nodos Altura del árbol Diametro Ancho de bisección Arcos por nodo Número de enlaces Estrella N h=2 2 ⌊N/2⌋ N −1 N −1 Árbol N h = ⌈log N ⌉ 2(h − 1) 1 3 N −1 2 0 3 1 2 3 7 4 8 1 9 5 6 10 11 12 13 14 0 0 4 7 5 6 Fernando R. Rannou Diinf-USACH 16 / 28 Hipercubo ■ Cubo n-dimensional ■ Cada no se identifica por un número binario ■ Existe un arco entre nodos cuyos identificadores difieren en 1 bit Número de nodos Dimensión Diametro Ancho de bisección Arcos por nodo Número de enlaces Fernando R. Rannou Diinf-USACH N n = log2 N n N/2 n nN/2 17 / 28 Tendencias actuales ■ Memoria distribuida compartida; necesidad de protocolos de coherencia de memoria cache ■ Procesadores que soporten nativamente (en hardware) hebras ■ Combinación de memoria compartida y memoria distribuida ■ Memoria compartida para sistemas masivos Fernando R. Rannou Diinf-USACH 18 / 28 Taxonomı́a Flynn Propuesta para clasificar las arquitecturas de acuerdo a la multiplicidad de los datos e instrucciones 1. Single-Instruction, Single-Data (SISD) ■ Modelo tradicional, escalar ■ Puede tener pipelining 2. Single-Instruction, Multiple-Data (SIMD) ■ Arquitectura vectoriales 3. Multiple-Instruction, Multiple-Data (MIMD) ■ Mutliprocesadores y multicomputadores ■ MIMD de memoria compartida ■ MIMD de memoria distribuda 4. Single-Instruction, Multiple-Data (SIMD) Fernando R. Rannou Diinf-USACH 19 / 28 Ensalada de términos ■ SMP: Symmetric Multi Processing ■ NOW: Network of Workstations ■ Clusters Beowulf: clusters compuesto de computadores comerciales de proposito general ■ PVP: Parallel Vector Processing, procesadores vectoriales en computadores paralelos ■ MPP: Massively Parallel Processing; muuuuuchos procesadores ■ Computación distribuida ■ Computación Grid: unifica recursos dispersos geograficamente para sistema computacional virtual y transparente Fernando R. Rannou Diinf-USACH 20 / 28 Los supercomputadores más veloces www.top500.org Rank Nombre Procesadores (cores) Procesador Tflop/s (Linpack) Sistema operativo 1 IBM BlueGene/L 212992 PowerPC 440 700 Mhz (dual core) 478.2 CNK 2 IBM BlueGene/P 65536 PowerPC 450 850 Mhz (dual core) 167.3 CNK/SLES 3 SGI Altix ICE 8200 14336 Intel Xeon 53xx 3 Ghz (quad core) 126.9 SLES10 4 HP EKA-Cluster Platform 14240 Intel Xeon 53xx 3 Ghz (quad core) 117.9 Linux 5 HP Cluster Platform 13728 Intel Xeon 53xx 2.66 Ghz (quad core) 102.8 Linux 6 Cray Red Storm 26569 AMD x86 64 Opteron 2.4 Ghz (dual core) 102.2 UNICOS/SUSE Linux 9 Cray XT4 19320 AMD x86 64 Opteron 2.6 Ghz (dual core) 85.3 UNICOS/Linux 10 Blue Gene/L 36864 PowerPC 440 700 MHz (dual core) 82.1 CNK/SLES ... 451 HP Cluster Platform (Brazil) 1024 Intel Xeon 53xx 2.3 Ghz (quad core) 6.2 Linux ... Fernando R. Rannou Diinf-USACH 21 / 28 Distribución geográfica Región America del Sur Norte Africa America del Norte Asia del Este Asia Sur Este Europa del Sur Australia y Nueva Zelandia Asia Centro-Sur Asia Oeste Europa del Este Europa del Norte Europa del Oeste Fernando R. Rannou Diinf-USACH Número computadores 1 1 288 42 5 15 2 9 2 8 64 63 Porcentaje 0.20% 0.20% 57.60% 8.40% 1.00% 3.00% 0.40% Suma Rmax (GFlops) 6210 9949 4196452 496966 43454 206564 18407 Suma Rpeak (GFlops) 9555 24192 6264122 742753 76931 384390 21299 Suma procesadores 1024 2016 1031517 102098 8656 47372 5632 1.80% 0.40% 1.60% 12.80% 12.60% 194524 13806 88972 776752 914114 303651 21575 138212 1255622 1315785 34932 2312 13084 160828 238624 22 / 28 Distribución por Sistema Operativo Familia SO Linux Unix BSD Based Mixed Mac OS Fernando R. Rannou Diinf-USACH Número computadores 376 86 3 32 3 Porcentaje 75.20% 17.20% 0.60% 6.40% 0.60% Suma Rmax (GFlops) 2014910 559636 47697 872226 32989 Suma Rpeak (GFlops) 3195766 807423 53248 1104103 53008 Número procesadores 516189 142104 5888 350484 6296 23 / 28 Distribución por procesador Fernando R. Rannou Diinf-USACH 24 / 28 Pasado, presente y futuro Fernando R. Rannou Diinf-USACH 25 / 28 Arquitectura del Blue Gene/L ■ Procesador dual 2.8 GFlops, 6.5 GFlops ■ Tarjeta cómputo con dos procesadores, 11.2 GFlops ■ Tarjeta nodo con 16 tarjetas de cómputo, 180 GFlops ■ Rack con 32 tarjetas nodos, 5.6 TFlops ■ Total 350 TFlops Fernando R. Rannou Diinf-USACH 26 / 28 Procesador del Blue Gene/L Fernando R. Rannou Diinf-USACH 27 / 28 Modelos de programación paralela Fernando R. Rannou Diinf-USACH 28 / 28