P rogramación de S istemas P aralelos IF - EHU PROGRAMACIÓN DE SISTEMAS PARALELOS 2010 Agustin Arruabarrena – Javier Muguerza
P rogramación de S istemas P aralelos IF - EHU 1. Computadores Paralelos (resumen). 2. Programación de Sistemas de Memoria Compartida (SMP): OpenMP. 3. Programación de Sistemas de Memoria Distribuida: MPI. 4. Ejercicios prácticos Programa
P rogramación de S istemas P aralelos IF - EHU. 1. C OMPUTADORES P ARALELOS (resumen)
P rogramación de S istemas P aralelos IF - EHU 1. Estructura de los sistemas para- lelos. Máquinas SMP, DSM y MPP. Clusters. Situación actual. 2. Infraestructura de comunicación. Protocolos de comunicación de alto rendimiento. 3. Coherencia de los datos. Sincronización de procesos. Modelo de consistencia. 4. Modelo de paralelismo. Análisis de dependen- cias. Optimizaciones. 5. Rendimiento del sistema paralelo. Índice
P rogramación de S istemas P aralelos IF - EHU 5 C. Par. Procesadores cada vez más eficientes: 2-6 Gflop/s Dos mercados: - gama “alta” IBM → Power4, 5, PowerPC, Cell Intel / HP → Itanium 2, IA64 - gama “baja” Intel → Pentium 4, Xeon AMD → Opteron Un procesador
P rogramación de S istemas P aralelos IF - EHU 6 C. Par. Itanium (IA-64)
P rogramación de S istemas P aralelos IF - EHU 7 C. Par. IBM Power4/5
P rogramación de S istemas P aralelos IF - EHU 8 C. Par. IBM Power4/5
P rogramación de S istemas P aralelos IF - EHU 9 C. Par. IBM Power4/5
P rogramación de S istemas P aralelos IF - EHU 10 C. Par. La busca de paralelismo a nivel de instrucción tiene un límite, marcado en muchas ocasiones por la propia aplicación (+ hard, + soft). Existen múltiples problemas para los que un solo procesador no es suficiente, por más que éste sea cada vez más rápido. Y en otros muchos casos, es posible reducir sensiblemente el tiempo de ejecución. Necesidad de Paralelismo
P rogramación de S istemas P aralelos IF - EHU 11 C. Par. Ejemplo “simple”: meteorología atmósfera dividida en “puntos” de 1x1x1 km 3 puntos 300 operaciones c.f. / elemento 3 x f cada 10 minutos (144 veces día) 5 x f una máquina a MF/s 5 x 10 5 s simular una interacción... 6 días. Además, el tamaño de las tareas a ejecutar puede crecer todo lo que queramos. Necesidad de Paralelismo
P rogramación de S istemas P aralelos IF - EHU 12 C. Par. Solución: Paralelismo Utilizar P (muchos) procesadores que cooperen en la resolución de un problema, para ir P veces más rápido. + tolerancia a fallos + throughput + entrada/salida Necesidad de Paralelismo
P rogramación de S istemas P aralelos IF - EHU 13 C. Par. Array Vectorial MP P C bus memoria compartida SMP MPP/NUMA Clusters memoria distribuida P C M red general 1 1 N N SIMD MIMD SISD fl. instrucciones flujo datos Clasificación
P rogramación de S istemas P aralelos IF - EHU 14 C. Par. Dos arquitecturas básicas: 1. Memoria compartida (shared memory): El espacio de direccionamiento es único. Todos los procesadores pueden acceder a todas las posiciones de memoria. La comunicación entre procesos es a través de variables compartidas. 2.Memoria Distribuida (distributed memory): Cada procesador tiene un espacio de direccionamiento privado. No existen posiciones de memoria comunes. La comunicación entre procesos es mediante paso de mensajes. Sistemas SIMD
P rogramación de S istemas P aralelos IF - EHU 15 C. Par. Espacio de Direccionamiento común privado centralizada (bus) distribuida (red) Memoria SMP DSM, NUMAMPP - Sistemas SIMD
P rogramación de S istemas P aralelos IF - EHU 16 C. Par. Sistemas masivamente paralelos MPP Las mejores prestaciones (velocidad de cálculo): comunicación de baja latencia y elevado ancho de banda, en algunos casos procesadores con diseño específico, software de control muy optimizado, etc. Pero COSTE MUY ELEVADO Alternativa: clusters Coste del sistema paralelo
P rogramación de S istemas P aralelos IF - EHU 17 C. Par. Clusters Un sistema paralelo formado por P máquinas de propósito general (bajo coste), unidas mediante una red de comunicación (igualmente de bajo coste?). Se asume que no se trabaja con el último modelo de procesador y que la latencia de las comunicaciones será algún orden de magnitud mayor que en el caso de los supercomputadores MPP. Objetivo: buena relación coste/rendimiento Clusters
P rogramación de S istemas P aralelos IF - EHU 18 C. Par. Clusters - Alta disponibilidad (high availability): redundancia para mantener siempre la aplicación en funcionamiento. - Alto rendimiento (high performance) capacidad de “responder” de manera más rápida En general: redundancia + rendimiento + escalabilidad Clusters
P rogramación de S istemas P aralelos IF - EHU 19 C. Par. hardware “habitual” - procesador “estándar” (+memoria, disco, conexiones exterior) - red propia, con conexiones a una red global (fast) gigabit ethernet... Myrinet, SCI, Inifiniband, Quadrics... software “habitual” - desarrollo: MPI, OpenMP, HPF (+debuggers, profilers...) - administración del sistema: instalación, monitorización, diagnosis... Clusters
P rogramación de S istemas P aralelos IF - EHU 20 C. Par. Itanium / Pentium IBM 360, PDP-11, VAX cluster grid ASCI Red supercomputadores The GRID
P rogramación de S istemas P aralelos IF - EHU 21 C. Par. Tipos de aplicaciones > grano grueso (high throughput) muchas tareas independientes simulaciones Montecarlo, procesamiento de banco de imágenes… > grano fino (high performance) comunicación entre procesos meteorología, simulaciones astrofísica realidad virtual… The GRID
P rogramación de S istemas P aralelos IF - EHU 22 C. Par. Evolución del mercado de computadores de alta velocidad. La lista top500. noviembre 2009
P rogramación de S istemas P aralelos IF - EHU 23 C. Par. TOP500 Lista de los 500 supercomputadores más rápidos del mundo ejecutando el banco de pruebas LINPACK. Se mide el valor de Rmax, Nmax y N 1/2. También se empieza a medir la potencia consumida. Sistemas de ecuaciones lineales densos (cálculo matricial). Permite obtener velocidades muy altas (un máximo virtual).
P rogramación de S istemas P aralelos IF - EHU 24 C. Par. TOP500 Cada 6 meses desde 1993 (junio/diciembre). Lista nº 34 - noviembre 2009 Más o menos aceptado por todos los fabricantes. Análisis de tendencias / evolución del mercado.
P rogramación de S istemas P aralelos IF - EHU 25 C. Par. TOP500 ×1,9/año TF/s pr. (6 GF/s) 1 PF/s → 2008 (dic) 10 PF/s → 2012 (jun) 100 PF/s → 2015 (dic) Intel ASCI Red Sandia IBM ASCI White LLNL NEC Earth Sim. BlueGene RoadRunner Jaguar
P rogramación de S istemas P aralelos IF - EHU 26 C. Par. TOP500 Rank Computer N. Pr. (cores) R max R peak (Tflop/s) Power (kW) Installation site Country/year Type 2 cluster IBM RoadRunner / BladeCenter QS22/LS21 PowerXcell 8, 3,2 GHz Opteron DC 1,8 GHz – Infiniband DOE/NNSA/LANL USA / 2008 Research 1 mpp Cray Inc, Jaguar Cray XT5 HE, AMD x86_64 Opteron, 6 core 2,6 GHz Cray SeaStar2+ / Infiniband Oak Ridge N.L. USA / mpp Cray Inc, Kraken Cray XT5 HE 8200EX Xeon QC - 3 GHz Infiniband NICS / U. Tennessee USA / 2009 Research 4 mpp IBM Jugene BlueGene/P PowerPC ,85 GHz Proprietary Forschungszentrum Juelich Germany / 2009 Research 5 cluster Tianhe-1 NUDT-TH1 cluster Intel EM64T Xeon - 2,5 GHz Infiniband Tianjin NSC China / 2009 Research
P rogramación de S istemas P aralelos IF - EHU 27 C. Par. TOP500 Rank Computer N. Pr. (cores) R max R peak (Tflop/s) Power (kW) Installation site Country/year Type 77 cluster IBM Mare Nostrum JS21 cluster PowerPC, 2,3 GHz – Myrinet Barcelona SC Center Spain / 2006 Academic 31 vec/smp NEC Earth-Simulator SX9 vector pr. fat tree J. Ag. for Mar. & Eartth Sc. Japan / 2009 Research 9 cluster SUN, SunBlade x6420 Opteron QC, 2,3 GHz, Infiniband Univ. Texas USA, 2008 Academic 6 mpp SGI Altix, Pleiades / ICE 8200EX Xeon QC - 3 GHz Infiniband NASA / ARC / NAS USA / 2008 Research
P rogramación de S istemas P aralelos IF - EHU 28 C. Par. TOP500 VP500 Y-MP C90 CM5 Paragon T3D SP2 T3E ASCI Red Sun HPC CM2 Earth Sim. Blue Gene RoadRunner Jaguar
P rogramación de S istemas P aralelos IF - EHU 29 C. Par. TOP500
P rogramación de S istemas P aralelos IF - EHU 30 C. Par. TOP500
P rogramación de S istemas P aralelos IF - EHU 31 C. Par. Problemas a resolver (algunos) ¿cómo se reparte un algoritmo en P procesos? - división y scheduling / load balancing ¿son todos los procesos independientes? - dependencias y sincronización ¿cómo se mantiene la coherencia de los datos? - protocolos de coherencia / consistencia ¿cuál es la arquitectura del sistema? ¿y la red de comunicación? ¿cómo se comunican los procesos? Problemas - Objetivos
P rogramación de S istemas P aralelos IF - EHU Índice 1. Estructura de los sistemas paralelos. Máquinas SMP, DSM y MPP. Clusters. Situación actual. 2. Infraestructura de comunicación. Protocolos de comunicación de alto rendimiento. 3. Coherencia de los datos. Sincronización de procesos. Modelo de consistencia. 4. Modelo de paralelismo. Análisis de dependen- cias. Optimizaciones. 5. Rendimiento del sistema paralelo.
33 C. Par. P rogramación de S istemas P aralelos IF - EHU Tanto para el caso de memoria compartida como el memoria distribuida, necesitamos un soporte de comunicación que nos permita acceder a la memoria común, centralizada o no, transmitir datos de procesador a procesador. La red de comunicación es por tanto “independiente” del modelo, aunque haya redes adaptadas a cada uno de ellos. Repasemos las principales. Infraestructura de comunic.
34 C. Par. P rogramación de S istemas P aralelos IF - EHU Los multiprocesadores SMP utilizan básicamente un bus como red de comunicación. M P C bus Aunque el bus es una red cuya gestión es “sencilla” y muy conocida, tiene problemas de escalabilidad: - sólo admite “una” comunicación simultánea. - se satura al crecer el número de procesadores. La latencia de la memoria es independiente de la posición accedida: todas se encuentran a la misma “distancia” (UMA). Infraestructura de comunic.
35 C. Par. P rogramación de S istemas P aralelos IF - EHU Para poder utilizar muchos procesadores y mantener un espacio común de memoria, se necesita distribuir físicamente la memoria entre los procesadores y usar otro tipo de red de comunicación. espacio de memoria común P C M red general R Ahora la latencia de los accesos no es constante: el acceso a los módulos locales de memoria es mucho más rápido que al resto (NUMA). El papel de la red de comunicación puede ser crucial. Infraestructura de comunic.
36 C. Par. P rogramación de S istemas P aralelos IF - EHU Algunas características básicas que debe cumplir una buena red de comunicación: permitir múltiples “comunicaciones” simultáneas entre procesadores; es decir permitir comunicación con un alto throughput. ofrecer comunicaciones de baja latencia. en la medida de lo posible, ser tolerante a fallos. ser de fácil construcción y ampliación y tener un routing simple. Infraestructura de comunic.
37 C. Par. P rogramación de S istemas P aralelos IF - EHU Store-and-Forward T sf = d (t r + L/B) t (d = distancia, tr = tiempo de routing en cada nodo, B = ancho banda de los canales, L = longitud de los paquetes) T ct = d (t r + 1/B) + (L-1)/B Cut-Through/Wormhole Paso de mensajes
38 C. Par. P rogramación de S istemas P aralelos IF - EHU Teniendo en cuenta el tráfico de la red Throughput (b/s) Tráfico (b/s) Latencia (s) Latencia a tráfico 0 Tráfico máximo Latencia y Throughput
39 C. Par. P rogramación de S istemas P aralelos IF - EHU Básicamente, un conjunto de búferes asociados a puertos de entrada/salida, más la lógica que permite procesar las cabeceras de los paquetes y asociarles un puerto de salida. El encaminador (router) puertos de entrada puertos de salida procesador local enlaces de comunicación enlaces de comunicación búferes func. encam.+ crossbar
40 C. Par. P rogramación de S istemas P aralelos IF - EHU Estático en orden de dimensiones (DOR) sencillo y prefijado. permite evitar problemas (tales como bloqueos). Dinámico permite adaptarse a condiciones de tráfico local y aprovechar la riqueza topológica de la red. añade tolerancia a fallos. pero puede implicar problemas de bloqueos en ciertas topologías. Encaminamiento
41 C. Par. P rogramación de S istemas P aralelos IF - EHU Atención: el rendimiento del sistema de comuni- cación no depende únicamente del dispositivo físico de comunicación, la red. La comunicación procesador/procesador implica muchos más elementos. red + encaminadores interfaz + procesador (+SO?) P1P2 Otros elementos
42 C. Par. P rogramación de S istemas P aralelos IF - EHU memoria usuario Implementación habitual: 1. TCP / IP reliable / connection oriented protocolo de los primeros clusters (y los de menor rendimiento) copia m. sistema int SO Protocolos de comunic.
43 C. Par. P rogramación de S istemas P aralelos IF - EHU El overhead generado por el sistema operativo y las copias van a suponer una parte importante en el tiempo total de comunicación. overhead del protocolo tiempo de transmisión 10 Mb/s 100 Mb/s 1 Gb/s Lat. paq. corto: µs Lat. switch: 40 µs Protocolos de comunic.
44 C. Par. P rogramación de S istemas P aralelos IF - EHU 2. Active Messages (Fast Messages) Librería de comunicación de baja latencia del proyecto NOW (Berkeley). Mensajes cortos: síncronos, request/reply - se crea el mensaje en la memoria de usuario. - el receptor crea un buffer en memoria de usuario y envía una petición (request). - el hardware de red envía el mensaje desde la memoria de usuario del emisor a la del receptor. -No se hacen copias en memoria del sistema: 0 copias. Protocolos de comunic.
45 C. Par. P rogramación de S istemas P aralelos IF - EHU Estándares para clusters 1. VIA: virtual interface architecture Estándar de comunicaciones que combina las principales ideas desarrolladas en las universidades. Consorcio de fabricantes: Intel, Compaq, Microsoft antes de enviar un mensaje, se reserva en memoria física, emisor y receptor, sitio para el mensaje. -- las operaciones send/receive consisten en enviar un descriptor del paquete a una cola de proceso de paquetes. -- puede esperarse confirmación o seguir con el trabajo. VIA
46 C. Par. P rogramación de S istemas P aralelos IF - EHU Estándares para clusters 1. VIA: virtual interface architecture Implementaciones -- nativa: parte del código se carga en el propio interfaz de red. -- emulada: todo el proceso lo ejecuta el procesador del nodo (aunque con menor overhead que TCP/IP). -- no “seguro” (reliable)! --bajo nivel: usar un interfaz. Por ejemplo, ya hay versiones de MPICH que soportan VIA. VIA
47 C. Par. P rogramación de S istemas P aralelos IF - EHU 2. InfiniBand (IBA) Objetivo: infraestructura de comunicaciones de altas prestaciones, basada en switches (intra) y routers (inter), para formar redes SAN (sustitución del bus compartido) - Los nodos se conectan mediante adaptadores especiales: HCA (nodos de cómputo) o TCA (nodos auxiliares). - Los switches interconectan los nodos de la red local, y los routers las redes locales entre sí. -Los enlaces operan desde 2,5 Gb/s hasta 3,75 GB/s (x12), unidireccionalmente, punto a punto. - Latencias < 6 µs para mesajes cortos. InfiniBand
48 C. Par. P rogramación de S istemas P aralelos IF - EHU Cluster Computing
49 C. Par. P rogramación de S istemas P aralelos IF - EHU MYRINET - Infraestructura de comunicaciones de alto rendimiento (pero “cara”). - Enlaces a 2+2 Gbit/s (full duplex) fibra óptica Switches en crossbar - red de Clos / cut-through - Software propio de control de mensajes (GM) Implementaciones de Gbit ethernet / Via / Infiniband - Latencias de paquetes pequeños: 1,2 us (Gigabit, 50 us) Throughput máximo 9,6 Gbit/s Myrinet
50 C. Par. P rogramación de S istemas P aralelos IF - EHU Myrinet
51 C. Par. P rogramación de S istemas P aralelos IF - EHU Myrinet
52 C. Par. P rogramación de S istemas P aralelos IF - EHU Myrinet
53 C. Par. P rogramación de S istemas P aralelos IF - EHU CUIDADO: si, por ejemplo, utilizamos PCs para formar el cluster, la conexión red/nodo se hará a través del bus PCI. ¡Bien pudiera ser que fuera ese elemento el que limitara la velocidad de comunicación! PCI → 32 bit / 33 MHz bit / 66 MHz MB/s PCI-X → 1 GB/s (2.0 → 4 GB/s) PCI Express → 200 MB/s por canal (× 32 → 6,4 GB/s) Bus del PC
54 C. Par. P rogramación de S istemas P aralelos IF - EHU 32 Pentium IV, 3 GHz 512 MB RAM, 4 MB cache Gigabit Ethernet (PCI-E) MPICH2
P rogramación de S istemas P aralelos IF - EHU Índice 1. Estructura de los sistemas paralelos. Máquinas SMP, DSM y MPP. Clusters. Situación actual. 2. Infraestructura de comunicación. Protocolos de comunicación de alto rendimiento. 3. Coherencia de los datos. Sincronización de procesos. Modelo de consistencia. 4. Modelo de paralelismo. Análisis de dependen- cias. Optimizaciones. 5. Rendimiento del sistema paralelo.
56 C. Par. P rogramación de S istemas P aralelos IF - EHU El uso de variables compartidas implica la utilización de copias de dichas variables en las caches de cada procesador. Esto plantea problemas nuevos en la gestión de la memoria. Por ejemplo, ¿cómo nos aseguramos de que todos los procesadores que comparten una variable “ven” en ella el valor “correcto” correspondiente a cada instante? ¿Cómo se mantiene la coherencia de los datos? (1) Coherencia de los datos
57 C. Par. P rogramación de S istemas P aralelos IF - EHU Un sistema es coherente si los cambios que se producen en una copia de una variable van a aparecer en todas las demás “en algún momento” y en el mismo orden. Aunque manejando los mismos conceptos, las soluciones son diferentes en función del tipo de arquitectura: SMP snoopy DSM directorios Coherencia de los datos
58 C. Par. P rogramación de S istemas P aralelos IF - EHU ¿Cómo controlar la escritura distribuida? A=2 mem. pral. cache A=2 A=3 ? coh. no coh. 1 copia EM + copias SO II A=3 M invalidar las copias actualizar las copias + añadir estados al bloque de datos Coherencia: snoopy
59 C. Par. P rogramación de S istemas P aralelos IF - EHU ¿Quién controla la cache? mem. pral. A=2 A=3 ? INV II ¿Y la memoria principal? - según la política de escritura WT, WB - según el protocolo de coherencia hardware espía, snoopy Coherencia: snoopy
60 C. Par. P rogramación de S istemas P aralelos IF - EHU El sistema distribuido es esencialmente asíncrono. ¿Cómo controlar la atomicidad de las operaciones de coherencia? atomicidad del bus + estados transitorios Atomicidad Coherencia: snoopy
61 C. Par. P rogramación de S istemas P aralelos IF - EHU Cuando la red no es bus (DSM), el mecanismo de snoopy no sirve para mantener la coherencia de los datos, porque no existe un lugar común en el que aparezcan todos los accesos a memoria. Si se necesita mantener la coherencia de los datos por hardware, es necesario utilizar algún otro tipo de dispositivo: el directorio. Coherencia: directorios
62 C. Par. P rogramación de S istemas P aralelos IF - EHU Dispositivo que contiene la información de coherencia referida a cada bloque de memoria: cuántas copias hay, dónde están, en qué estado se encuentran... Es un dispositivo distribuido, bien junto a los módulos de memoria principal asignados a cada procesador, bien en las caches. El protocolo es de invalidación. Se intercambian mensajes entre los procesos que tienen copia de la variable y el que tiene el trozo de directorio correspondien- te. El bloque de datos se mantiene en estado transitorio (busy) mientras dura la operación. Coherencia: directorios
63 C. Par. P rogramación de S istemas P aralelos IF - EHU Coherencia: ejemplo 1 bit proc.estado M L CC = controlador de comunic. D = directorio de coherencia L = local H = home R= remote H P C CC DMP R LD A 1S
64 C. Par. P rogramación de S istemas P aralelos IF - EHU Los directorios de coherencia permiten mantener la coherencia de datos en un sistema DSM. Pero hay que tener cuidado con: - el tamaño que ocupa el directorio. - el tiempo de respuesta de estas operaciones, que tienen que utilizar la red de comunicación del multiprocesador. - habrá latencias altas en ciertas operaciones multithreading, prefetch... Coherencia: resumen
65 C. Par. P rogramación de S istemas P aralelos IF - EHU El proceso de coherencia se aplica a las variables compartidas cuando se modifican. Aunque sea costoso, sólo se aplica a un conjunto (muy) reducido de los accesos a memoria. Pero, ojo! la coherencia de datos se mantiene por bloques. Los procesadores pueden compartir un bloque de datos aunque no compartan ninguna variable de dicho bloque. la colocación en memoria y el reparto de datos y variables a los procesadores puede tener un efecto muy grande en el rendimiento del sistema. Coherencia: bloques
66 C. Par. P rogramación de S istemas P aralelos IF - EHU En la mayoría de las aplicaciones es necesario regular el acceso y uso de las variables compartidas Se necesitan accesos atómicos de tipo RMW (2) Sincronización de proc.... LD R1,CONT ADDI R1,R1,#1 ST CONT,R1... Pi... LD R1,CONT ADDI R1,R1,#1 ST CONT,R1... Pj LD..ADDI ST LD....ADDI.....ST CONT = 1!!!
67 C. Par. P rogramación de S istemas P aralelos IF - EHU Dos tipos básicos: - control de acceso a secciones críticas trozos de código que se ejecutan en estricta exclusión mutua (sólo un procesador cada vez) - sincronización entre procesos modelo productor / consumidor: 1 a 1 eventos global barreras Sincronización
68 C. Par. P rogramación de S istemas P aralelos IF - EHU Variables “cerrojo” (abierto/cerrado) para asegurar el acceso secuencial a la sección crítica. Dos funciones para controlar el acceso a la sección crítica:... k := k + 1;... sección crítica LOCK(A); UNLOCK(A); A : cerrojo Secciones críticas
69 C. Par. P rogramación de S istemas P aralelos IF - EHU Operaciones atómicas de lectura/escritura sobre el cerrojo. Ejemplo: Test&Set R1,A R1 := M(A); A := 1; En un entorno SMP, limitar el tráfico es crucial. La instrucción Test&Set efectúa siempre una escritura, esté el cerrojo abierto o cerrado, y por tanto invalida el bloque en todas las caches genera mucho tráfico. Secciones críticas lock:T&S R1,A BNZ R1,lock RET unlock:ST A,R0 RET
70 C. Par. P rogramación de S istemas P aralelos IF - EHU Soluciones para reducir el tráfico: Test-and-Test&Set primero mirar y luego intentar entrar Temporizaciones entre intentos de entrada Secciones críticas lock:LD R1,A BNZ R1,lock T&S R1,A BNZ R1,lock RET
71 C. Par. P rogramación de S istemas P aralelos IF - EHU Soluciones para reducir el tráfico: Load Linked / Store Conditional Dividir la operación atómica R(M)W en dos operaciones especiales, una de lectura ( LL ) y una de escritura ( SC ), que operan junto con un flag hardware. Secciones críticas lock:ADDI R2,R0,#1 l1:LL R1,A BNZ R1,l1... SC A,R2 BZ R2,lock RET unlock:ST A,R0 RET
72 C. Par. P rogramación de S istemas P aralelos IF - EHU Soluciones para reducir el tráfico: Tickets Una variable global ordena la entrada a la sección crítica Vector de eventos La entrada a la sección crítica se ordena mediante un vector. Cada proceso va dando paso al siguiente. Secciones críticas
73 C. Par. P rogramación de S istemas P aralelos IF - EHU Eventos: Sincronización habitual entre productor y consumidor. Sincronización: eventos P1 (productor) P2 (consumidor) X = F1(Z); Y = F2(X); post(A);wait(A); while (A == 0) {}; A = 1; post(A,i);wait(A,i);
74 C. Par. P rogramación de S istemas P aralelos IF - EHU Sincronización global en base a barreras: flag + contador BARRERA (BAR, P) {bit_sal = !(bit_sal); LOCK (BAR.lock); BAR.cont++; mi_cont = BAR.cont; UNLOCK (BAR.lock) if (mi_cont==P) { BAR.cont = 0; BAR.flag = bit_sal; } else while (BAR.flag != bit_sal) {}; } Sincronización: barreras
75 C. Par. P rogramación de S istemas P aralelos IF - EHU Orden de ejecución de las instrucciones (mem.) El problema del orden de ejecución de las instruccio- nes de memoria se conoce como consistencia (visión global del sistema de memoria). N procesadores no se sabe en qué orden se ejecuta el programa global 1 procesador el hardware (desorden/desorden) pero sólo hay una unidad de control (se “sabe” lo que se hace). (3) Consistencia de la mem.
76 C. Par. P rogramación de S istemas P aralelos IF - EHU La coherencia de los datos también hace referencia al “orden”, pero de una manera más limitada. Indica que los cambios en una determinada variable se reflejarán, en algún momento, en todos los procesadores en el mismo orden. Pero nada indica sobre el orden relativo de cambios en variables diferentes! Consistencia de la mem.
77 C. Par. P rogramación de S istemas P aralelos IF - EHU La semántica de un programa paralelo está íntimamente ligada al orden local y al orden global. Ejemplo ( A = B =0) : P1P2 A = 1; (wr)print B; (rd) B = 2; (wr)print A; (rd) Resultados posibles B,A 0,0 / 0,1 / 2,1 2,0 ?? 2,0 es un resultado posible si P2 decide desordenar sus dos instrucciones, que para él son totalmente independientes! Consistencia: orden de ej.
78 C. Par. P rogramación de S istemas P aralelos IF - EHU La semántica del programa paralelo se suele asegurar mediante operaciones de sincronización. Ejemplo ( A=flag=0 ) : P1P2 A = 1;while (flag==0); flag = 1;print A; dependencias wr1rd1 wr2rd2 Pero P2 puede decidir ejecutar primero rd2, porque para él no hay dependencia alguna con la instrucción anterior: el procesador local no “entiende” la sincronización del programa global! ¿debería escribir P2 A =1? Consistencia: orden de ej.
79 C. Par. P rogramación de S istemas P aralelos IF - EHU La semántica del programa paralelo se suele asegurar mediante operaciones de sincronización. Ejemplo ( A=flag=0 ) : P1P2 A = 1;while (flag==0); flag = 1;print A; dependencias wr1rd1 wr2rd2 ¿debería escribir P2 A =1? Sólo se respeta la dependencia wr1 rd2 ( A ) si se respeta el orden local: wr1 >> wr2 y rd1 >> rd2 + wr2 rd1 entonces wr1 rd2 Consistencia: orden de ej.
80 C. Par. P rogramación de S istemas P aralelos IF - EHU Incluso manteniendo el orden local, la no atomicidad de las operaciones de actualización da lugar a problemas. Ejemplo ( A=flag=0 ) : P1P2 A = 1;while (flag==0); flag = 1;print A; El mantenimiento de la coherencia indica que los cambios sobre una variable se ven en el mismo orden en todos los procesadores, pero no indica nada sobre el orden de los cambios en diferentes variables. Puede imprimir A = 0 si P2 ve el cambio en flag antes que el cambio en A. Consistencia: atomicidad
81 C. Par. P rogramación de S istemas P aralelos IF - EHU Otro ejemplo ( A = B = 0) P1P2P3 A = 1;while (A==0); B = 1;while (B==0); C = A; finalmente, obtenemos C = 0 Consistencia: atomicidad
82 C. Par. P rogramación de S istemas P aralelos IF - EHU El programador de sistemas paralelos necesita saber cuál es el modelo de consistencia que se aplica, es decir, qué tipo de restricciones existen sobre el orden de ejecución de las instrucciones en cada procesador y sobre la atomicidad global de las operaciones de escritura/lectura sobre variables compartidas. Veamos los modelos principales. Consistencia: modelos
83 C. Par. P rogramación de S istemas P aralelos IF - EHU Extensión del modelo de orden estricto en un solo procesador. Un multiprocesador mantiene consistencia secuen-cial si mantiene el orden local de las instrucciones en cada procesador y si el orden global de las instrucciones corresponde a un determinado entrelazado de las instrucciones de cada procesador. Consistencia secuencial
84 C. Par. P rogramación de S istemas P aralelos IF - EHU Mantener orden global implica no poder ejecutar ninguna operación de memoria en ningún procesador hasta que no termine completamente la anterior operación iniciada en cualquier procesador y todas sus consecuencias. Se necesita, además, que las operaciones de memoria sean todas atómicas. Consistencia secuencial
85 C. Par. P rogramación de S istemas P aralelos IF - EHU El conjunto de restricciones de la CS es un conjunto suficiente, pero no necesario, por lo que es posible relajar alguna de las condiciones anteriores: + orden:rd >> rdrd >> wr wr >> rdwr >> wr + atomicidad Pero tiene que ser posible imponer en ciertos casos el orden estricto, instrucciones tipo fence. Consistencia relajada
86 C. Par. P rogramación de S istemas P aralelos IF - EHU Consistencia: resumen orden de las instrucciones de memoria modelo wr>>rdwr>>wr rd>>rd,wr sincr. wr atom. Fence SC todas - TSO todas MEMBAR RMW PC todas PSO todas STBAR RMW WO todas SINC RC sa>>w/r w/r>>sr s>>s REL,ACQ RMW
87 C. Par. P rogramación de S istemas P aralelos IF - EHU Consistencia: resumen TSO/PC = A B = sinc_acq C = = D sinc_rel E = F = PSO = A B = sinc_acq C = = D sinc_rel E = F = WO = A B = sinc_acq C = = D sinc_rel E = F = RC = A B = sinc_acq C = = D sinc_rel E = F = SC rd wr sinc_a wr rd sinc_r wr = A B = sinc_acq C = = D sinc_rel E = F = orden
P rogramación de S istemas P aralelos IF - EHU Índice 1. Estructura de los sistemas paralelos. Máquinas SMP, DSM y MPP. Clusters. Situación actual. 2. Infraestructura de comunicación. Protocolos de comunicación de alto rendimiento. 3. Coherencia de los datos. Sincronización de procesos. Modelo de consistencia. 4. Modelo de paralelismo. Análisis de dependencias. Optimizaciones. 5. Rendimiento del sistema paralelo.
89 C. Par. P rogramación de S istemas P aralelos IF - EHU Modelos de paralelismo Tipos de paralelismo (1) (a) Paralelismo de datos do i = 1, 1000 do i = 1001, 2000 do i = 2001, 3000 A(i) = func(i)A(i) = func(i)A(i) = func(i) enddoenddoenddo P0 P1 P2 do i = 1, 3000 A(i) = func(i) enddo
90 C. Par. P rogramación de S istemas P aralelos IF - EHU Modelos de paralelismo Tipos de paralelismo (1) (b) Paralelismo de función P0P1 F1 F2 F3 F4
91 C. Par. P rogramación de S istemas P aralelos IF - EHU Modelos de paralelismo Tipos de paralelismo (2) ▪ grano fino (fine grain) tareas “pequeñas” / mucha comunicación ▪ grano medio ▪ grano grueso (coarse grain) tareas “grandes”/ poca comunicación ▪ grado de paralelismo
92 C. Par. P rogramación de S istemas P aralelos IF - EHU Modelos de paralelismo ▪ Maestro-esclavo Un thread master genera P threads para ser ejecutados en paralelo, que “mueren” al terminar su tarea. ▪ SPMD (Single-Program-Multiple-Data) Se ejecutan P copias iguales independientes. Las tareas se diferencian mediante el pid del proceso. ▪ MPMD (Multiple-...) Se ejecutan P programas diferentes. Dos modelos
93 C. Par. P rogramación de S istemas P aralelos IF - EHU Las tareas que se ejecutan en paralelo, bien sean iteraciones de un bucle o funciones, deben ser independientes, ya que se va a perder control global sobre la ejecución de las instrucciones. Análisis de dependencias Ejemplo: do i = 0, N-1 A(i) = A(i) + 1 enddo P0: L0 +0 S0 P1: L1 +1 S1 P2: L2 +2 S2 …... En paralelo L0 +0 S0 L1 +1 S1 L2 +2 S2...
94 C. Par. P rogramación de S istemas P aralelos IF - EHU Análisis de dependencias ¿Dependencias entre tareas? Sincronización - global (barreras) - punto a punto (eventos) P0P1 F1 F2 F3 F4
95 C. Par. P rogramación de S istemas P aralelos IF - EHU Análisis de dependencias Salvo casos muy obvios, la paralelización del código (análisis de dependencias, reparto de tareas, etc.) sigue siendo responsabilidad del programador. El análisis debe ser eficiente, ya que se necesita que una fracción importante del código sea ejecutada en paralelo.
96 C. Par. P rogramación de S istemas P aralelos IF - EHU Análisis de dependencias dependencia RAW i: A =... j:= A antidependencia WAR i:= A... j: A = dependen. de salida WAW i: A =... j: A = i j dependencias verdaderas dependencias de nombre
97 C. Par. P rogramación de S istemas P aralelos IF - EHU Grafos de dependencias Bucles + Grafo de dependencias + Distancia de la dependencia do i = 2, N-2 1 A(i) = B(i) C(i) = A(i-2) + A(i+1) enddo A(2) = B(2) + 2 C(2) = A(0) + A(3) A(3) = B(3) + 2 C(3) = A(1) + A(4) A(4) = B(4) + 2 C(4) = A(2) + A(5) A(5) = B(5) + 2 C(5) = A(3) + A(6) 1 2 A, 2 A, 1
98 C. Par. P rogramación de S istemas P aralelos IF - EHU Grafos de dependencias do i = 2, N-31 1 A(i) = B(i) C(i) = A(i-2) 3 D(i+1) = C(i) + C(i+1) 4 B(i+1) = B(i) D(i+30) = A(i) enddo A, 0 A, 2 C, 0 C, 1 D, 29 B, 1
99 C. Par. P rogramación de S istemas P aralelos IF - EHU Grafos de dependencias + Espacio de iteraciones do i = 2, N-1 do j = 1, N-2 1 A(i,j) = A(i,j-1) * 2 2 C(i,j) = A(i-2,j+1) + 1 enddo 1 2 A 2,-1 A 0,1 i j
100 C. Par. P rogramación de S istemas P aralelos IF - EHU Dependencias Test de dependencias: únicamente para funciones lineales del índice del bucle. do i = L1, L2 X(a*i+b) = = X(c*i+d) enddo ? L1 L2 i a*i+b c*i+d i1 i2 d - bd - b MCD(c,a) Z → no hay depend.
101 C. Par. P rogramación de S istemas P aralelos IF - EHU Paralelizar el código significa repartir tareas (iteraciones de un bucle) a procesadores. Pero hay que respetar las dependencias de datos. El problema principal son las dependencias de distancia > 0, y sobre todo aquellas que forman ciclos en el grafo de dependencias. Siempre es posible ejecutar un bucle en P procesa- dores, añadiendo sincronización para respetar las dependencias de datos… … lo que no significa que siempre sea sensato hacerlo, pues hay que tener en cuenta el coste global: cálculo + sincronización (comunicación). Dependencias
102 C. Par. P rogramación de S istemas P aralelos IF - EHU Paralelización de bucles Objetivos: Repartir las iteraciones de un bucle entre los procesadores, para que se ejecuten “a la par”. Siempre que se pueda, que se ejecuten de manera independiente, sin necesidad de sincronizar (dependencias de distancia 0). En función de las características del sistema (comunicación, reparto de tareas…) intentar que las tareas tengan un cierto tamaño.
103 C. Par. P rogramación de S istemas P aralelos IF - EHU Paralelización de bucles Objetivos: Tal vez sólo se pueda utilizar un número limitado de procesadores. Atención al rendimiento (p. e., problemas en la cache).
104 C. Par. P rogramación de S istemas P aralelos IF - EHU Objetivos: En los bucles de más de una dimensión, paralelizar aquella dimensión que minimice la necesidad de sincronización entre procesadores y aumente el tamaño de grano. Paralelización de bucles do i = 0, N-1 do j = 1, M-1 A(i,j) = A(i,j-1) + 1 enddo P0P1P2P3
105 C. Par. P rogramación de S istemas P aralelos IF - EHU Paralelización de bucles P0 P1 P2 P3 do i = 0, N-1 do j = 1, M-1 A(i,j) = A(i,j-1) + 1 enddo Objetivos: En los bucles de más de una dimensión, paralelizar aquella dimensión que minimice la necesidad de sincronización entre procesadores y aumente el tamaño de grano.
106 C. Par. P rogramación de S istemas P aralelos IF - EHU Si todas las dependencias son de distancia 0, las iteraciones se pueden repartir como se quiera entre los procesadores. Si no es así: si todas las dependencias son hacia adelante, sincronizarlas mediante barreras. si van hacia adelante y hacia atrás, sincronizarlas punto a punto (contadores o vectores de eventos). intentar alguna transformación del bucle para llevar a distancia 0 las dependencias. Bucles con y sin sincron.
107 C. Par. P rogramación de S istemas P aralelos IF - EHU Ejemplos do i = 0, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) D(i) = C(i) / A(i) enddo doall i = 0, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) D(i) = C(i) / A(i) enddoall C, 0C, 0 A, 0 i =
108 C. Par. P rogramación de S istemas P aralelos IF - EHU Ejemplos do i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) D(i) = C(i-1) / A(i) enddo forall i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) BARRERA (...) D(i) = C(i-1) / A(i) endforall i = barrera C, 0C, 0 A, 0 C, 1C, 1
109 C. Par. P rogramación de S istemas P aralelos IF - EHU Ejemplos do i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) D(i) = C(i-1) / A(i) enddo i = barrera doall i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) enddoall [ BARERRA (...) ] doall i = 1, N-1 D(i) = C(i-1) / A(i) enddoall C, 0C, 0 A, 0 C, 1C, 1
110 C. Par. P rogramación de S istemas P aralelos IF - EHU Vectores de eventos no ordena las dependencias mucho espacio en memoria Ejemplos do i = 2, N-2 A(i) = B(i-2) + 1 B(i+1) = A(i-2) * 2 enddo 1 2 A,2 B, i= doacross i = 2, N-2 wait (vB,i-3) A(i) = B(i-2) + 1 post (vA,i) wait (vA,i-2) B(i+1) = A(i-2) * 2 post (vB,i) enddoacross
111 C. Par. P rogramación de S istemas P aralelos IF - EHU Ejemplos do i = 2, N-2 A(i) = B(i-2) + 1 B(i+1) = A(i-2) * 2 enddo doacross i = 2, N-2 wait (vB,i-3) A(i) = B(i-2) + 1 post (vA,i) wait (vA,i-2) B(i+1) = A(i-2) * 2 post (vB,i) enddoacross 1 2 A,2 B,3, 3, P0 P1 P2
112 C. Par. P rogramación de S istemas P aralelos IF - EHU Ejemplos do i = 2, N-2 A(i) = B(i-2) + 1 B(i+1) = A(i-2) * 2 enddo 1 2 A,2 B, P0 P1 P2 doacross i = 2, N-2,3 A(i) = B(i-2) + 1 wait (KA, i-1) post (KA) B(i+1) = A(i-2) * 2 enddoacross Contadores ordena las dependencias sin problemas de espacio en memoria
113 C. Par. P rogramación de S istemas P aralelos IF - EHU En general, los bucles de dependencias siempre son problemáticos y hay que analizar detenidamente qué se gana y qué se pierde (coste de la sincronización, problemas de acceso a cache...). 1 2 C,1 D,2 > Alternativas para el ejemplo -- wait / post ?? -- 3 procesos independientes ?? -- ejecución serie ?? Ejemplos
114 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 0.Deshacer la definición de constantes y las variables de inducción. 1. Eliminar todas las dependencias que no son intrínsecas al bucle. Por ejemplo: do i = 0, N-1 X = A(i) * B(i) C(i) = SQRT(X) D(i) = X - 1 enddo doall i = 0, N-1 X(i) = A(i) * B(i) C(i) = SQRT(X(i)) D(i) = X(i) - 1 enddoall convertir X en una variable privada
115 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 2. Fisión del bucle. Si una parte del bucle hay que ejecutarla en serie, romper el bucle convenientemente y ejecutar lo que sea posible en paralelo. do i = 1, N-1 A(i) = A(i-1) / 2 D(i) = D(i) + 1 enddo do i = 1, N-1 A(i) = A(i-1) / 2 enddo doall i = 1, N-1 D(i) = D(i) + 1 enddoall
116 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 3. Ordenar las dependencias (hacia adelante). do i = 1, N-1 A(i) = D(i-1) / 2 D(i) = C(i) + 1 enddo forall i = 1, N-1 D(i) = C(i) + 1 BARRERA (...) A(i) = D(i-1) / 2 endforall 1 2 D, 1 2………….1 2………1 2…….1 1…2.. ??
117 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 4. Alinear las dependencias: peeling. do i = 1, N-1 A(i) = B(i) C(i) = A(i-1) + 2 enddo 1 2 A, 1 doall i = 1, N-2 A(i) = B(i) C(i+1) = A(i) + 2 enddoall C(1) = A(0) + 2 A(N-1) = B(N-1)
118 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones do i = 2, N-1 A(i) = B(i) C(i) = A(i-1) + A(i-2) enddo 1 2 A, 2 A, 1 C(2) = A(1) + A(0) C(3) = B(2) + A(1) doall i = 2, N-3 A(i) = B(i) X(i+1) = B(i+1) C(i+2) = X(i+1) + A(i) enddoall A(N-2) = B(N-2) A(N-1) = B(N-1) do i = 2, N-1 A(i) = B(i) X(i) = B(i) C(i) = X(i-1) + A(i-2) enddo 1’1’ 2 A, 2 X, 1 1
119 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 5. Generar hilos independientes do i = 0, N-3 A(i+1) = B(i) + 1 B(i+2) = A(i) * 3 C(i) = B(i+2) - 2 enddo B(2) = A(0) * 3 C(0) = B(2) - 2 doall k = 0, 2 do i = pid, N-4, 3 A(i+1) = B(i) + 1 B(i+3) = A(i+1) * 3 C(i+1) = B(i+3) – 2 enddo enddoall A(N-2) = B(N-3) B,0 B,2 A,
120 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 6. Minimizar la sincronización do i = 2, N-1 B(i) = B(i) + 1 C(i) = C(i) / 3 A(i) = B(i) + C(i-1) D(i) = A(i-1) * C(i-2) E(i) = D(i) + B(i-1) enddo B,0 B,1 A,1 4 5 C,1C,1 C,2 D,0 doacross i = 2, N-1 B(i) = B(i) + 1 C(i) = C(i) / 3 post (vC,i) wait (vC,i-1) A(i) = B(i) + C(i-1) post (vA,i) wait (vA,i-1) D(i) = A(i-1) * C(i-2) E(i) = D(i) + B(i-1) enddoacross i=
121 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 7. Tratamiento de bucles: intercambio. do i do_par j do_par i do j do_par i do_par j do i
122 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones Ejemplo: do i = 1, N-1 do j = 0, N-1 A(i,j) = A(i-1,j) + 1 enddo do i = 1, N-1 doall j = 0, N-1 A(i,j) = A(i-1,j) + 1 enddoall enddo j= i=
123 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones Ejemplo: doall j = 0, N-1 do i = 1, N-1 A(i,j) = A(i-1,j) + 1 enddo enddoall do i = 1, N-1 do j = 0, N-1 A(i,j) = A(i-1,j) + 1 enddo j= i=
124 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 8. Tratamiento de bucles: cambio de sentido. j=0 1 2 i= do i = 1, 100 do j = 0, 2 A(i,j) = A(i,j) - 1 D(i) = A(i-1,j+1) * 3 enddo do j = 2, 0, -1 doall i = 1, 100 A(i,j) = A(i,j) - 1 D(i) = A(i-1,j+1) * 3 enddoall enddo
125 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones do j = 1, 2N-1 doall i = max(1,j-N+1), min(j,N) A(i,j-(i-1)) = A(i-1,j-(i-1)) + A(i,j-1-(i-1)) enddoall enddo 9.Skew do i = 1, N do j = 1, N A(i,j) = A(i-1,j) + A(i,j-1) enddo
126 C. Par. P rogramación de S istemas P aralelos IF - EHU Optimizaciones 10. Otras optimizaciones típicas Aumento del tamaño de grano y reduccción del overhead de la paralelización. -Juntar dos bucles en uno (¡manteniendo la semántica!): fusión. -Convertir un bucle de dos dimensiones en otro de una sola dimensión: colapso o coalescencia. …
127 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. ¿Cómo se reparten las iteraciones de un bucle entre los procesadores? Si hay tantos procesadores como iteraciones, tal vez una por procesador. Pero si hay menos (lo normal), hay que repartir. El reparto puede ser: estático : en tiempo de compilación. dinámico : en ejecución.
128 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. El objetivo: intentar que el tiempo de ejecución de los trozos que se reparten a cada procesador sea similar, para evitar tiempos muertos ( load balancing ). En todo caso, OJO con las dependencias (sincronización), el tamaño de grano, la localidad de los accesos y el coste del propio reparto.
129 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. Planificación estática Qué ejecuta cada procesador se decide en tiempo de compilación. Es por tanto una decisión prefijada. Cada proceso tiene una variable local que lo identifica, pid [0..P-1]. Dos opciones básicas: reparto consecutivo y reparto entrelazado.
130 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. - No añade carga a la ejecución de los threads. - Pero no asegura el equilibrio de la carga entre los procesos. -Permite cierto control sobre la localidad de los accesos a cache. ▪ Consecutivo ▪ Entrelazado principio = pid * N/P fin = (pid+1) * N/P – 1 do i = principio, fin... enddo do i = pid, N, P... enddo
131 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. Equilibrio en el reparto de carga estático (fijo) Tej asignación dinámica de una nueva tarea Tej do i = 1, 80 if (A(i) > 0) calcular() enddo
132 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. Planificación dinámica Para intentar mantener la carga equilibrada, las tareas se van escogiendo en tiempo de ejecución de un cola de tareas. Cuando un proceso acaba con una tarea (un trozo del bucle) se asigna un nuevo trozo. Dos opciones básicas: los trozos que se van repartiendo son de tamaño constante o son cada vez más pequeños.
133 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. Las iteraciones se reparten una a una o por trozos Self / Chunk scheduling Añade carga a la ejecución de los threads. Hay que comparar ejecución y reparto. LOCK (C); mia = i; i = i + Z; Z = 1 self UNLOCK (C); while (mia <= N-1) endwhile do j = mia, min(mia+Z-1, N-1)... enddo LOCK (C) mia = i; i = i + Z; UNLOCK (C)
134 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. Los trozos de bucle que se reparten son cada vez más pequeños según nos acercamos al final. Guided / Trapezoidal ▪ Guided :parte proporcional de lo que queda por ejecutar: Z s = (N – i) / P (entero superior) que equivale a: Z i = Z i-1 (1 - 1/P)
135 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. ▪ Trapezoidal : reduciendo el trozo anterior en una constante: Z i = Z i-1 - k op. de planificación Z1Z1 ZnZn 1 n 2 i k Z2Z2
136 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. En general, el reparto dinámico busca un mejor equilibrio en el reparto de carga, pero: - hay que considerar la carga que se añade (overhead), en relación al coste de las tareas que se asignan. - hay que considerar la localidad en los accesos a los datos y los posibles problemas de falsa compartición.
137 C. Par. P rogramación de S istemas P aralelos IF - EHU Reparto de tareas / iterac. Ejemplo de reparto (1.000 iteraciones, 4 procesadores) : ▪ chunk (Z = 100) (10) ▪ guided quedan: … se reparten : … (22) ▪ trapezoidal (Z 1 = 76, Z n = 4 >> k = 3) … (25)
138 C. Par. P rogramación de S istemas P aralelos IF - EHU Paralelismo de función Paralelismo a nivel de procedimiento o función: F2 F3 F1 F4 F5 - modelo Fork / Join - Parallel sections Fork F1 F2 Join Fork F3 F4 Join F5 doall k = 0, 1 if (pid = 0) then F1 if (pid = 1) then F2 endoall [barrera] doall k = 0, 1 if (pid = 0) then F3 if (pid = 1) then F4 endoall F5
P rogramación de S istemas P aralelos IF - EHU Índice 1. Estructura de los sistemas paralelos. Máquinas SMP, DSM y MPP. Clusters. Situación actual. 2. Infraestructura de comunicación. Protocolos de comunicación de alto rendimiento. 3. Coherencia de los datos. Sincronización de procesos. Modelo de consistencia. 4. Modelo de paralelismo. Análisis de dependen- cias. Optimizaciones. 5. Rendimiento del sistema paralelo.
P rogramación de S istemas P aralelos IF - EHU 140 C. Par. El objetivo de un sistema de P procesadores es ejecutar el código P veces más rápido. Problemas (algunos) : - ¿puede ejecutarse todo el código en paralelo? ¿está bien repartida la carga? - ¿dónde están los datos? ¿cuál es el coste de la transmisión de datos? - ¿cuál es el coste de la sincronización? - ¿es eficiente el uso de la memoria cache? Rendimiento
P rogramación de S istemas P aralelos IF - EHU 141 C. Par. Ejecución en un procesador (código serie, no la versión paralela de 1 procesador) Ts Ejecución en P procesadores Tp fa = Ts / Tp límite P ideal: crecer linealmente con P efic = fa / P límite 1 ideal: constante Rendimiento
P rogramación de S istemas P aralelos IF - EHU 142 C. Par. La parte más lenta (serie) en la ejecución de un pro- grama marcará la velocidad de ejecución del mismo. Serie TsParalelo Ts / P Parte en paralelo (f), pero parte en serie (1-f) fa (speed-up) = Ts / Tp = Ts / (f*Ts/P + (1-f)Ts) = 1 / (1-f) (máximo) = independiente de P! ¿Es todo el código paralelizable? En general, no. - Ley de Amdahl (tamaño constante) Rendimiento
P rogramación de S istemas P aralelos IF - EHU 143 C. Par. Rendimiento
P rogramación de S istemas P aralelos IF - EHU 144 C. Par. - Ley de Gustafson (tiempo constante) En muchos casos, se utiliza el paralelismo no para ir más rápido, sino para ejecutar tareas de mayor tamaño. fa = (1-f) + f*p f*Ts (1-f)*Ts f*Ts*p(1-f)*Ts mayor tamaño p procesadores f*Ts Rendimiento
P rogramación de S istemas P aralelos IF - EHU 145 C. Par. A la fracción de código en paralelo, hay que añadirle una serie de overheads; por ejemplo, la comunicación debida al reparto o recolección de datos en unos casos y a la sincronización de procesos en otros. T_ej T_com n. de procesadores T_total Tp = Ts / P + Tcom(P) Rendimiento
P rogramación de S istemas P aralelos IF - EHU 146 C. Par. Load balancing Otra fuente típica de perdida de eficiencia en la ejecución en paralela es el reparto no equilibrado de tareas. Ejemplo: 6 tareas independientes, de peso equivalente, ▪ entre 3 procesadoresTp = Ts/3 ▪ entre 4 procesadoresTp = Ts/3 Rendimiento
P rogramación de S istemas P aralelos IF - EHU 147 C. Par. No podemos olvidarnos de la memoria cache. Para que su uso sea eficiente, se necesita reutilizar los datos que se cargan (un bloque o line). Por ejemplo, si A(1) y A(2) están en posiciones consecutivas de memoria, tal vez sea conveniente que se procesen en el mismo procesador para aumentar la tasa de aciertos de la cache. Por otra parte, todos los overheads que añada la ejecución paralela hay que valorarlos en función del tamaño de grano, es decir en relación al tiempo de ejecución. Rendimiento
P rogramación de S istemas P aralelos IF - EHU fin del resumen