1 / 93

ARQUITECTURAS PARALELAS Computación de altas prestaciones Idoia Cearreta idoia.cearreta@ehu.es

ARQUITECTURAS PARALELAS Computación de altas prestaciones Idoia Cearreta idoia.cearreta@ehu.es www.sc.ehu.es/arpar K onputagailuen A rkitektura eta T eknologia saila I nformatika F akultatea – E uskal H erriko U nibertsitatea. ARQUITECTURAS PARALELAS. 0. Introducción.

eros
Download Presentation

ARQUITECTURAS PARALELAS Computación de altas prestaciones Idoia Cearreta idoia.cearreta@ehu.es

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ARQUITECTURAS PARALELAS • Computación de altas prestaciones • Idoia Cearreta • idoia.cearreta@ehu.es • www.sc.ehu.es/arpar • Konputagailuen Arkitektura eta Teknologia saila • Informatika Fakultatea – Euskal Herriko Unibertsitatea Arquitecturas Paralelas 12-13

  2. ARQUITECTURAS PARALELAS • 0. Introducción. • 1. Computadores vectoriales. • 2.Computadores paralelos (conceptos básicos). • 3. Coherencia de los datos (SMP). • 4. Sincronización de procesos (SMP). • 5. Consistencia de la memoria. • 6. Red de comunicación. Paso de mensajes. • 7.Coherencia de los datos (DSM). • 8. Paralelización de bucles, reparto de tareas. • 9. Computadores paralelos de alta velocidad. Programación paralela: OpenMP yMPI (introd.).

  3. 0. Introducción Arquitecturas Paralelas 12-13

  4. Introducción La evolución de los computadores se basa principalmente en tres factores:  avances en la tecnología electrónica  avances enel diseño de laarquitectura de sistemas  avances en el desarrollo desoftware de sistemas Arquitecturas Paralelas 12-13

  5. Introducción Avances en la tecnología electrónica número de transistores > 1.000 M frecuencia del reloj > 1 GHz velocidad de conmutación  tecnología de empaquetamiento  capacidad de memoria  tiempos de comunicación entre elementos/chips Arquitecturas Paralelas 12-13

  6. Introducción Avances en la arquitectura de sistemas  arquitecturas RISC  jerarquía de memoria unidades funcionales específicas registros segmentación (ILP) desorden (Tomasulo) superescalares - VLIW / ejecución especulativa multithreading multicore on chip Arquitecturas Paralelas 12-13

  7. Introducción Avances en el software de sistemas OpenMP MPI UPC OpenCL / Cuda ... list scheduling loop unrolling software pipelining trace scheduling EPIC... Arquitecturas Paralelas 12-13

  8. Introducción Velocidad de cálculo del procesador escalar: > 1 Gflop/s109 operaciones de coma flotante por segundo Recordad: Mega (M) 106 Giga (G) 109 Tera (T) 1012 Peta (P) 1015 micro (µ) 10-6 nano (n) 10-9 pico (p) 10-12 femto (f) 10-15 Dicha velocidad no es suficiente para algunas aplicaciones técnicas/científicas: meteorología, genética, astrofísica, aeronaútica, geofísica, bases de datos grandes... Arquitecturas Paralelas 12-13

  9. Introducción Hennessy – Patterson, 4. ed. 20% anual 52% anual Arquitecturas Paralelas 12-13

  10. Introducción Solución: paralelismo - Multicore(2-8 procesadores por chip) - muchos (?) procesadores trabajando conjuntamente P = 10.000 proc. >> 10.000 GF/s??  ¿Cómo utilizar P procesadores? una red / mera repetición / sistema paralelo Arquitecturas Paralelas 12-13

  11. Flujo de datos 1n SIMD Procesadores en array Computadores vectoriales 1 Flujo de instrucciones MIMD memoria compartida memoria privada n Introducción Clasificación de Flynn SISD Arquitecturas Paralelas 12-13

  12. 1.Computadores vectoriales - Introducción - Dependencias de datos - Dependencias estructurales - Medidas de rendimiento - Técnicas de compilación Arquitecturas Paralelas 12-13

  13. Código escalar CV: introducción do i = 0, N-1 C(i) = A(i) + B(i) enddo buc: FLD F1,A(R1) FLD F2,B(R1) FADD F3,F2,F1 FST C(R1),F3 ADDI R1,R1,#8 SUBI R2,R2,#1 BNZ R2,buc TE≈ 7Nciclos Arquitecturas Paralelas 12-13

  14. Código vectorial LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 CV: introducción do i = 0, N-1 C(i) = A(i) + B(i) enddo Vectores: - Dirección de comienzo - longitud - paso (stride) 2000 – 2008 – 2016 – 2024 – ... – 2120 dir. com. = 2000 / longitud = 16 / paso = 8 Arquitecturas Paralelas 12-13

  15. N x CV: introducción LV V1,A(R1) BD L AM M M M E AMM M M E AMM M M E ... ... ... ... AMM M M E BD L AM M M M E E ... ... E Arquitecturas Paralelas 12-13

  16. LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 BD L AMMMME ... ... E BD LAMMMME ... ... E BD .... LAAE ... ... E BDLAM...L MMME.... ...E N ti CV: introducción BDLAM.... .L MMME...... E N = 128, ti = 14 TE = 896 ciclos Tv = 142 ciclos Tv≈ ti + Nciclos TE ≈ 7N ciclos ≈ /6 Arquitecturas Paralelas 12-13

  17. LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 BD L AMMMME ... ... E BD LAMMMME ... ... E BD .... LAAE ... ... E BDLAM...L MMME.... ...E CV: introducción Problemas Memoria: segmentada / núm. buses / módulos Unidades funcionales: segmentadas / muchas Reg. vectoriales: tamaño / cantidad / acceso Arquitecturas Paralelas 12-13

  18. CV: introducción Problemas Programas: ¿Todo operaciones vectoriales? ¿Se pueden vectorizar siempre? do i = 0, N-1 A(i) = A(i) + 1 enddo ¡Hay que desordenarel código original! escalarmente: L0 +0 S0 / L1 +1 S1 / ... / LN-1 +N-1 SN-1 vectorialmente: L0 L1 ... LN-1 / +0 +1 ... +N-1 / S0 S1 ... SN-1 Arquitecturas Paralelas 12-13

  19. Unidad funcional Reg. Reg. Procesador escalar (completo) Memoria (op.) Control del procesador vectorial Unidad de direcciones (datos) CV: introducción Esquema lógico de arquitectura vectorial (tomasulo) Arquitecturas Paralelas 12-13

  20. CV: introducción Lenguaje máquina LV Vi,A(Rj) Vi:= M(A+Rj) SV A(Rj),Vi M(A+Rj):= Vi OPV Vi,Vj,Vk Vi:= Vj OP Vk OPVS Vi,Vj,Fk Vi:= Vj OP Fk OPVI Vi,Vj,#k Vi:= Vj OP #k VL→ longitud del vector VS→ paso del vector MOVI VL,#64 MOVI VS,#8 LV V1,A(R1) Arquitecturas Paralelas 12-13

  21. CV: dependencias de datos Cuando una instrucción necesita el resultado de una instrucción previa LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 do i = 0, N-1 A(i) = A(i) + 1 enddo - esperar a que el vector completo esté en un registro y leer a continuación - hacer cortocircuitoE → L, y leer los operandos tan pronto como se pueda: ENCADENAMIENTO (chaining) Arquitecturas Paralelas 12-13

  22. LV ADDVI N SV N N CV: dependencias de datos Sin encadenamiento LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 BD L AM M M M E ... E BD . . . . . ...L A A E ... E BDLAM.. ... . . . . . . L M M M E .. . E TV = 13 + 3N Arquitecturas Paralelas 12-13

  23. LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 BD L AM M M M E ... ... ... ...E LV ADDVI SV N CV: dependencias de datos Con encadenamiento BD . . . L A A E ... ... ... E BDLAM.. . L M M M E ... ...E Tv = 13 + N Arquitecturas Paralelas 12-13

  24. BD L AM M M M E ... ... ... ... E BDL AMM M M E ... ... ... ... E CV: dependencias de datos Encadenaminto con dos instrucc.: C = A + B LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 BD . . . . L A A E ... ... ... E BDLAM.. . . L M M M E ... ...E En general, un operando de la unidad funcional (bus) y el otro del banco de registros (se está escribiendo o está escrito) Arquitecturas Paralelas 12-13

  25. CV: dependencias de datos Tablas de ejecución (A=A+1) Sin encadenamiento inic. lat. dato 1 dato N LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N 6+N+1 2 9+N+1 9+2N 9+2N+1 3 13+2N+1 13+3N Con encadenamiento inic. lat. dato 1 dato N LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N [10] 3 13+1 13+N Arquitecturas Paralelas 12-13

  26. inic. lat. dato 1 dato N LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 Sin encadenam. inic. lat. dato 1 dato N LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 Con encadenam. CV: dependencias de datos Tablas de ejecución (C=A+B) 3 3 6+1 6+N 4 3 7+1 7+N 7+N+1 2 10+N+1 10+2N 10+2N+1 3 14+2N+1 14+3N 3 3 6+1 6+N 4 3 7+1 7+N [8] 2 10+1 10+N [11] 3 14+1 14+N Arquitecturas Paralelas 12-13

  27. CV: dependencias estructurales ¿Están libres los recursos? -unidades funcionales ej: se ocuparán N ciclos -registros vectoriales ej: suficientes buses de lectura/escritura - buses de memoria -módulos de memoria Si están ocupados se perderán muchos ciclos (N) Arquitecturas Paralelas 12-13

  28. LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 BD L AM M M M E ... ... ... ... E BD . . . L A A E ... ... ... . E LV ADDVI SV CV: dependencias estructurales Buses de memoria ¿Cuántos buses hay para acceder a memoria? BDLAM.. . . ? ... .L M M ME ... bus ocupado Tv≈2N Arquitecturas Paralelas 12-13

  29. CV: dependencias estructurales Un único bus de memoria(A = A + 1) Con encadenamiento inic. lat. dato 1 dato N LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N [6+N] 3 9+N+1 9+2N Arquitecturas Paralelas 12-13

  30. 3 3 6+1 6+N 6+N 3 9+N+1 9+2N 2 12+N+1 12+2N 3 12+2N+1 12+3N LV LV Tv≈3N ADDV SV CV: dependencias estructurales Un único bus de memoria(C = A + B) inic. lat. dato 1 dato N LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 Con encadenamiento [10+N] [9+2N] Arquitecturas Paralelas 12-13

  31. inic. lat. dato 1 dato N LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 3 3 6+1 6+N 4 3 7+1 7+N Con encadenamiento [8] 2 10+1 10+N [6+N] 3 9+N+1 9+2N LV LV Tv≈2 N ADDV SV CV: dependencias estructurales Dos buses de memoria(C = A + B) Arquitecturas Paralelas 12-13

  32. CV: dependencias estructurales Módulos de memoria ¿Están libres los módulos de memoria que tenemos que utilizar? Si no están libres, habrá que esperar antes de ejecutar las instrucciones LV/SV. Conflictos: - una instrucción de memoria consigo misma - una instrucción de memoria con otra(s) Arquitecturas Paralelas 12-13

  33. 4 5 6 7 8 9 10 11 12 13 14 15 m0 m1 m2 m3 CV: dependencias estructurales Una única operación de memoria tm = 3 ciclos nm = 4 s = 1 M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M ¿Cuántos módulos se utilizan? nm / MCD(nm,s) Por lo tanto, no hay problemas, si nm / MCD(nm,s) ≥ tm Arquitecturas Paralelas 12-13

  34. m0 m1 m2 m3 m0 m1 m2 m3 A00 A01 A02 A03 A10 A11 A12 A13 A20 A21 A22 A23 A30 A31 A32 A33 A00 A01 A02 A03 - A10 A11 A12 A13 -A20 A21 A22 A23 -A30 A31 A32 A33 - CV: dependencias estructurales Padding s = 1, sin conflictos s = 1, sin conflictos Filas s = 5, sin conflictos s = 4, conflictos (mi) Columnas s = 5, sin conflictos s = 6, conflictos Diagonal p. s = 3, sin conflictos s = 4, conflictos Diagonal m. Arquitecturas Paralelas 12-13

  35. inic. lat. dato 1 dato N LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N [10] - - - M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M CV: dependencias estructurales Varias operaciones de memoria 4 5 6 7 8 910 11 12 13 14 15 16 17 18 19 m0 m1 m2 m3 m4 m5 m6 m7 M M M M M M M M M M M Arquitecturas Paralelas 12-13

  36. CV: dependencias estructurales ¿Cuántos ciclos hay que esperar hasta que se libere el módulo que se quiere utilizar? Hay que generar la lista de módulos ocupados: 1.calcular qué módulo va a comenzar a usar la instrucción j (en memoria desde el ciclo inij) en el ciclo inik : (inik – inij) + módulo de inicioj 2.añadir por delante y por detrás tm-1 módulos 3. Si el módulo que va a utilizar la instrucción k está en la lista, esperar los ciclos indicados por la posición en la lista Arquitecturas Paralelas 12-13

  37. CV: dependencias estructurales inic. mod_ocup. t_esp. lat. dato 1 dato N LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N 3 17+1 17+N [10] 4 5, 6 - 7 - 0, 1 Arquitecturas Paralelas 12-13

  38. CV: dependencias estructurales Longitud de los registros (Lmax) - ¿Qué hacemos si los vectores son más largos? strip mining do i = 0, N-1 A(i) = A(i) + 1 enddo MOVI VS,#1 MOVI R1,#N mas: MOV VL,R1 LV V1,A(R2) ADDVI V2,V1,#1 SV A(R2),V2 ADDI R2,R2,#Lmax SUBI R1,R1,#Lmax BGTZ R1,mas Tv =N/Lmax(ti + tbuc) + tv N TV = 30 + 3N; N = 500; Lmax = 64; tbuc= 10 → 8×(30+10) + 1.500 = 1.820 (+19%) Arquitecturas Paralelas 12-13

  39. CV: velocidad de cálculo Se utilizan tres parámetros para medir la “velocidad”: - Tiempo de ejecución(en ciclos o en segundos). - Velocidad de cálculo: número de operaciones de coma flotante que se ejecutan por segundo. - Factor de aceleración(speed-up): cuántas veces más rápida es la ejecución vectorial que la escalar. Arquitecturas Paralelas 12-13

  40. 300 Tv 250 200 pendiente = tv 150 100 TV = 30 + 2N 50 ti N 0 0 25 50 75 100 125 150 CV: velocidad de cálculo Tiempo de ejecución esc.: TE = te N vect.: Tv = ti + tv N OJO: son ciclos! Para darlo en segundos hay que multiplicarlo por el periodo (T). Arquitecturas Paralelas 12-13

  41. R R∞ R∞/2 N N1/2 CV: velocidad de cálculo Velocidad de cálculo × OpCF × F MF/s RV = N / TV = RV = N / (ti + tvN) R∞ = 1 / tv × OpCF × F N1/2 → R∞ / 2 N1/2= ti / tv Arquitecturas Paralelas 12-13

  42. CV: velocidad de cálculo Factor de aceleración (speed-up) KV = TE / TV = te N / (ti + tvN) K∞ = te / tv Longitud mínima de vectores TE = TV te NV = ti + tv NV → NV = N1/2 / (K∞– 1) Arquitecturas Paralelas 12-13

  43. CV: velocidad de cálculo Influencia del código escalar: ley de Amdahl. Una parte del código vectorialmente, f, y la otra, 1–f, escalarmente TVE = f TV + (1-f) TE KVE = TE / TVE = TE / (f TV + (1–f) TE) = KV / (KV – f (KV–1)) Arquitecturas Paralelas 12-13

  44. 16 8 4 2 KB = ∞ CV: velocidad de cálculo Ley deAmdahl KVE = KV / (KV – f (KV–1)) Arquitecturas Paralelas 12-13

  45. CV: velocidad de cálculo  Ley de Amdahl Velocidad de cálculo: RVE = N / TVE = N / (f TV + (1-f) TE) = = N / (f (ti + tv N) + (1-f) te N) = = N / (f (ti + tv N) + (1-f) K∞ tv N) [× OpCF × F] Arquitecturas Paralelas 12-13

  46. 16 ley de Amdahl 14 12 tv = 5 ns te = 66,6 ns 10 factor de aceleración(normalizado) 8 6 tv= 10 ns te= 33,3 ns 4 CRAY X-MP tv = 10 ns te = 66,6ns 2 0 0 0.2 0.4 0.6 0.8 1 f(factor de vectorización) CV: velocidad de cálculo Ley de Amdahl Arquitecturas Paralelas 12-13

  47. 1.Computadores vectoriales - Introducción - Dependencias de datos - Dependencias estructurales - Velocidad de cálculo - Técnicas de compilación - dependencias de datos - vectorización - optimizaciones Arquitecturas Paralelas 12-13

  48. Dependencias de datos Para poder ejecutar vectorialmente un bucle hay que cambiar el orden original de las instrucciones escalarmente: L0 +0 S0 / L1 +1 S1 / ... / LN-1 +N-1 SN-1 vectorialmente: L0L1 ... LN-1 / +0 +1 ... +N-1 / S0 S1 ... SN-1 Ojo: se pueden desordenar las instrucciones, pero hay que respetar las dependencias de datos entre instrucciones! Arquitecturas Paralelas 12-13

  49. dependencia RAW(Rango-Dominio) (i)A = ... (j) = A antidependencia WAR(Dominio-Rango) (i) = A ... (j)A = dependencia de salida WAW(Rango-Rango) (i)A = ... (j)A = ij ij i j Dependencias de datos dependencias reales dependencias de “nombres” Recordad: una dependencia implica un determinado orden entre las operaciones. Arquitecturas Paralelas 12-13

  50. Dependencias de datos • Dado que trabajaremos con bucles las dependencias de datos se pueden dar entre instrucciones de cualquier iteración. • Si hay una dependencia entre las instrucciones de las iteraciones i1 e i2, diremos que hay una dependencia a distancia i2 – i1.  Las dependencias se representan mediante dos grafos: grafo de dependencias y espacio de iteraciones. Arquitecturas Paralelas 12-13

More Related