1 / 82

Arquitecturas Paralelas Curso 13/14

Arquitecturas Paralelas Curso 13/14. Horas 6 6 8 5 4. INTRODUCCIÓN CONECTIVIDAD MÁQUINAS MIMD MÁQUINAS SIMD y SIMT SUPERESCALARES. arqPar Clasificación de Flynn Ampliada Introducción- 2. Procesadores Vectoriales. Array de Procesadores. Multi-procesadores. Multi-computadores.

maddox
Download Presentation

Arquitecturas Paralelas Curso 13/14

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 Curso 13/14 Horas 6 6 8 5 4 • INTRODUCCIÓN • CONECTIVIDAD • MÁQUINAS MIMD • MÁQUINAS SIMD y SIMT • SUPERESCALARES

  2. arqPar Clasificación de Flynn Ampliada Introducción-2 Procesadores Vectoriales Array de Procesadores Multi-procesadores Multi-computadores Sistólicos Symetric Multi Processor UMA COMA NUMA MPP COW Distintas formas de organizar la memoria común Beowulf Distributed Shared Memory Arquitecturas Paralelas SISD SIMD MISD MIMD Von Neumann ??

  3. arqPar Temario SIMD-3 • MÁQUINAS SIMD y SIMT • Procesamiento Sistólico • Introducción • Metodología • Ejemplos • Procesamiento Vectorial • Definiciones y tipos de instrucciones • Memorias entrelazadas • Funciones vectoriales compuestas • Encadenamiento Hardware • Procesamiento SIMT • Bibliografía: • “VLSI Array Processors” S.Y. Kung-1988 [119..149] • “Advanded Computer Architecture...” Kai Hwang-1993 [Capítulo 8]

  4. arqPar Sistólicos (Introducción) SIMD-4 INTRODUCCIÓN • Límites de MIMD para grano fino • El modelo sistólico • Ejemplo Vector x Matriz • Algunos inconvenientes • Ejemplos de máquinas

  5. arqPar Introducción (Límites de MIMD para grano fino) SIMD-5 Algunas aplicaciones Problema: Multiplicar una secuencia muy grande de vectores por una matriz • Filtrado de imagen • Generación de efectos de vídeo • Conversión, cod/decod de vídeo • Manipulación de imagen en 3D • Procesado de imágenes médicas • Reconocimiento de objetos • detectando bordes • Filtros FIR para sistemas de • comunicaciones

  6. arqPar Introducción (Límites de MIMD para grano fino) SIMD-6 a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 a41 a42 a43 a44 (x1,x2,x3,x4)i * = (y1,y2,y3,y4)i x1a11+x2a21+x3a31+x4a41 x1a14+x2a24+x3a34+x4a44 T(Yi4) = 16*2+12*1+20*1+4*1 = 68 (*) (+) (r) (w) Problema: Multiplicar una secuencia muy grande de vectores por una matriz ..... Xi4, ..... X24, X14 * A4x4 ==> ..... Yi4, ..... Y24, Y14 ¿Tiempo  de cálculo de Yi4 en monoprocesador? T(*) => 2 T(+) => 1 T(Mem <==> Reg) => 1

  7. arqPar Introducción (Límites de MIMD para grano fino) SIMD-7  . . X2 X1 1 0 P11 . . P14 . P22 . . . . . . P41 . . P44 1 x 3 5 -1 4 2 7 3 -2 4 0 1 5 8 6 9 -3 3 5 -1 4 6 21 9 -6 8 0 2 10 -8 -6 -9 3 2 1 3 2 -1 x1 x2 x3 x4 P11 P12 P13 P14 2 0 => Cargar coeficientes Y1 Y2 . . . . . . y 9 20 1 11 1 => 16 Pijmultiplican y1 y2 y3 y4 2 => 4 P1i suman Paralelización de X4*A4x4 con multiprocesadores ¿Cada cuánto tiempo obtengo Yi?

  8. arqPar Introducción (Límites de MIMD para grano fino) SIMD-8 11 ¡ Sincronizar ! -- Código de P1i repeat -- Multiplicar -- Sumar ¿Conflictos de accesos paralelos a datos comunes? Bajar(SNuevoX); Hagamos los cálculos: repeat [i,j] := X[i] * A[i,j] -- Los 16 Pij T1 Y[i] := [1,i]+[2,i]+[3,i]+[4,i] -- Los 4 P1i T2 forever T1 = 1(r) + 2(*) + 1(w) = 4 ¿SEGURO? T2 = 3(r) + 3(+) + 1(w) = 7 • El tiempo puede dispararse 20 .... • Barreras de sincronización Hw. B(SP1i); B(SP1i); B(SP1i); Subir (SNuevoY); • ¿Mejorable con multicomputadores?

  9. arqPar Introducción (Límites de MIMD para grano fino) SIMD-9 x1 x2 x3 x4 x 1 3 2 -1 12.. 1 1 1 3 5 -1 4 5 -1 4 3 3 3 2 7 3 -2 8 3 5 -1 4 2 7 3 -2 4 0 1 5 8 6 9 -3 26 2 2 4 0 1 5 26 -1 ? ? * + ! ! y 8 6 9 -3 9 20 1 11 1 9 2 y1 y2 y3 y4 Paralelización de X4*A4x4 con multicomputadores ¿Flujo E/S? Xi / Yi D=I 1 Coste 3 3 S=I*A21+N 9 2 17 -1 9 • ¿Será alcanzable  4? Sistólicos

  10. arqPar Introducción (El modelo sistólico) SIMD-10 Datos a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 a41 a42 a43 a44 8 (E/S) vs 28 (*/+) Flujo ....X43,X42,X41* = .... Y43, Y42, Y41 1978 (H.T. Kung y C.E. Leiserson) Mucho interés en los 80 Yale, Carnegie Mellon, MIT Objetivo: Aprovechar el alto grado de paralelismo espacial y temporal de algunos algoritmos muy demandados y limitados por cómputo Aplicaciones: Computación científica, procesado de señal e imagen, análisis de datos biológicos, criptografía, etc.

  11. arqPar Introducción (El modelo sistólico) SIMD-11 Trabajos ARQUITECTURA SISTÓLICA HOST Resultados • Sistólicos: Máquinas paralelas de propósito específico: • Paralelismo masivo y descentralizado (Pipeline) • Peso del cómputo mucho mayor que el de E/S • Comunicaciones locales • Arquitectura regular y modular organizada como una red de un gran número de unidades de proceso idénticas (celdas), conectadas localmente. • Sólo las celdas de los bordes pueden comunicarse con el exterior. • Modo de operación síncrono • Factores de posibilidad (VLSI, CAD) y muy escalables

  12. arqPar Introducción (El modelo sistólico) SIMD-12 Ejemplos de redes sistólicas

  13. arqPar Introducción (El modelo sistólico) SIMD-13 3 i t0 t1 t2 t3 t4 ........... Paralelo • Recibe datos de sus vecinos • Realiza unos cálculos sencillos • Transmite resultados a sus vecinos i+1 i+2 • En cada ciclo (), dos fases: • Intercambio de datos 2 Cálculo Modo de operación síncrono • Cada celda siempre hace lo mismo: • Recibe datos de sus vecinos • Realiza unos cálculos sencillos • Transmite resultados a sus vecinos

  14. arqPar Introducción (Ejemplo Vector * Matriz) SIMD-14 N 1?I, ?N, !S, !D 2 S = (I*aij)+N, D = I Propagación de las Xi aij I D S  0 0 0 0 x11 x12 x11 a11 a11 a12 a12 t0 t1 x11a11 a21 a21 a22 a22 x21 ¿Cómo utilizar esta arquitectura para multiplicar Vectores2 * Matriz2x2? Recordar el intento de paralelización con multicomputadores Situación justo al inicio del ciclo

  15. arqPar Introducción (Ejemplo Vector * Matriz) SIMD-15 t3 t2 t4 x12 x11 x14 x13 x15 x13 x12 x14 x11a11 x12a11 x14a11 x13a11 x11a12 x12a12 x13a12 x21 x23 x22 x21 x23 x22 x24 y11 y13 y12 y22 y21 ti x1i+1 x1i x1ia11 x1i-1a12 t1 x2i x2i-1 Y1i-1 Y2i-2

  16. arqPar Introducción (Ejemplo Vector * Matriz) SIMD-16 t0 ti x15 x24 x33 x42 x14 x23 x32 x41 x13 x22 x31 x12 x21 x11 x1i+1 x2i x3i-1 x4i-2 t4 y11 y12 y21 y13 y22 y31 y14 y23 y32 y41 y15 y24 y33 y42 ¿Tiempos creíbles? ¿Tiempo de cálculo de Yi4 con este método? • Obtenemos un resultado cada ciclo () • Transferir datos => 1 • Multiplicar => 2 • Sumar => 1 • Total => 4

  17. arqPar Introducción (Ejemplo Vector * Matriz) SIMD-17  Ck Ck Ck * + Ck aij Posible aspecto de una celda:

  18. arqPar Introducción (Algunos inconvenientes) SIMD-18 • Sincronismo de reloj (Sesgo de reloj | Clock Skew) Ck Distribución regular de Ck • Frente de Ola | Wave Front • Asíncronos • Flujo de Datos vs Flujo de Control Ck • Dificultad algorítmica (Veremos una sistematización) ¿Soluciones?

  19. arqPar Introducción (Ejemplos de máquinas) SIMD-19 iPSC www-2.cs.cmu.edu/~iwarp • iWarp (1988-1992) • Carnegie Mellon Univ. + Intel Supercomputing System Div. • Todavía la mejor en 1995 para algunas aplicaciones • µP RISC de 32 bits de 96bit LIW a 20MHz • Desde 4 a 1024 celdas. Típico un toro de 8x8 => 64µP “iWarp: Anatomy of a Parallel Computing System” 1998

  20. arqPar Introducción (Ejemplos de máquinas) SIMD-20 • SAMBA (1993-1995) www.irisa.fr/SAMBA • Systolic Accelerator for Molecular Biological Applications • Laboratorio IRISA de Rennes • 1994 => Chips con 4µP de 100MIPS (12bits) (Total 128µP) • 1998 => “Speeding up genome computations with a systolic accelerator” • Estudio genético => 41’ en SAMBA y 127,5h en una WorkStation • 1998 => Chips con 16..20µP más MIPS => Todo en una tarjeta PCI

  21. arqPar Introducción (Ejemplos de máquinas) SIMD-21 • … GeneMatcher2 … 2004] • www.paracel.com • Sistema de análisis de similitud de secuencias genéticas. • Acelerador => 3.072..221.184 P • GeneMatcher2: • 192 P SIMD • Empresa comprada en junio 2000 • por Celera Genomics Group. • www.celera.com

  22. arqPar Introducción (Ejemplos de máquinas) SIMD-22 • Procesador CSX700 [Hoy?] • www.clearspeed.com • “Convierta su PC en un supercomputador” #4 Nov/10 #11 Nov/13 #9 Top500 Nov/06 TSUBAME Grid Cluster #29 Top500 Nov/08 #56 Top500 Nov/09 + GPU’s 96 96 96 GFlops y < 9 W

  23. arqPar Introducción (Ejemplos de máquinas) SIMD-23 • Procesador CSX700 [Hoy?]

  24. arqPar Introducción (Ejemplos de máquinas) SIMD-24 • Procesador CSX700 [Hoy?]

  25. arqPar Introducción (Ejemplos de máquinas) SIMD-25 • DeCypher Engine G4 => SeqCruncher [Hoy] www.timelogic.com BLAST => FPGA

  26. arqPar Introducción (Ejemplos de máquinas) SIMD-26 • Cell [Hoy?] www.blachford.info/computer/Cell/Cell0_v2.html 2008 QS22 †

  27. arqPar Introducción (Ejemplos de máquinas) SIMD-27 122.400 núcleos 12.000 PowerXCell 8i 6.912 AMD Opteron

  28. arqPar Vectoriales (Definiciones) SIMD-28 Procesador vectorial: Conjunto de elementos hardware diseñado para procesar vectores • Un resultado por ciclo • Menor overhead control bucle por software • Menos conflictosde accesos a memoria Vectorización Conversión de código escalar a vectorial Proporción de vectorización Grado de vectorización alcanzado Compilador vectorial Traductor diseñado para vectorizar código DEFINICIONES Vector: Conjunto ordenado de unidades de datos escalares de un mismo tipo

  29. arqPar Vectoriales (Definiciones) SIMD-29 short V1[5]; long V2[5]; tPersona V3[5]; ¿Vector V4? $1000 $1000 $1000 V1[0] V2[0] V4[0] $1002 V1[1] $1004 V1[2] $1004 V2[1] $1004 V4[1] $1006 V1[3] $1008 V1[4] $1008 V2[2] $1008 V4[2] $100C V2[3] $100C V4[3] Stride 2 $1010 V2[4] $1010 V4[4] Stride 4 Stride 4 Vector: Conjunto ordenado de unidades de datos escalares de un mismo tipo Stride  tsize(tipo) ¿Utilidad?

  30. arqPar Tipo / Fuentes (Control, Datos, Flujo) Introducción-30 + 3 5 2 5 4 1 + + 6 9 3 2 + 1 1 4 4 0 + + 7 5 2 8 1 7 + 1 9 + 8 A Suma de Vectores, etc. B C • PARALELISMO DE DATOS (Espacial) • Operaciones sobre datos regulares (vectores) aplicando la misma operación sobre cada elemento • ¡LIMITACIONES! • Más datos que U.P. • Operaciones escalares En los procesadores vectoriales hay poca replicación hardware (pocas unidades de proceso que sumen). En su lugar, se apoyan en una especialización mediante pipeline.

  31. arqPar Vectoriales (Definiciones) SIMD-31 A 4+0 5+2 7+1 8+1 8+1 7+1 8+1 8+1 5+2 8+1 8+1 7+1 8+1 8+1 1+1 3+6 4+0 1+1 4+0 5+2 5+2 7+1 5 2 3 5 4 1 6 3 9 1 2 1 4 4 0 5 2 7 1 7 8 9 1 8 7 8 9 B C Un resultado por ciclo Unidad Funcional Aritmética Segmentada Registros Vectoriales 4 Etapas: Sumar Exponentes Multiplicar Mantisas Normalizar Redondear

  32. arqPar Vectoriales (Tipos de instrucciones) SIMD-32 Vector-Vector Vj Vi Vj Vj x Vk Vi Vi Vk Escalar-Vector S Vi S x Vk Vi Vk Memoria-Vector, Vector-Memoria Memoria V M  V V  M • TIPOS DE INSTRUCCIONES VECTORIALES Unidad funcional segmentada PAVG

  33. arqPar Vectoriales (Tipos de instrucciones) SIMD-33 Vector reducción Vj S Vi S , Vj x Vk S Vk Compresión (gather  recoger) memoria M Vj x Vk VL Vj Vk etc. 4 6 20 56 200 3 410 49 201 200 4 130 769 202 A0 0 56 410 203 etc. etc. 130 204 46 205 20 206 etc. ¿Utilidad?

  34. arqPar Vectoriales (Tipos de instrucciones) SIMD-34 Expansión (scatter  esparcir) memoria Vj x Vk M Vj Vk VL etc. 4 5 20 xx 200 1 410 410 201 200 4 130 56 202 A0 2 56 xx 203 etc. etc. 130 204 20 205 xx 206 • MPI_Scatter • MPI_Gather • MPI_Reduce MPI etc.

  35. arqPar Vectoriales (Tipos de instrucciones) SIMD-35 Máscara (masking) Vkx Vm Vi Vk Vi VL 7 66 0 200 0 2 201 230 3 202 1011001...... 91 6 203 VM 0 xx 204 0 xx 205 56 xx 206 etc. etc. ¿Utilidad? ¿Utilidad VM?

  36. arqPar Vectoriales (Memorias entrelazadas) SIMD-36 • Acceso a bloques: • Instrucciones • Arrays • Líneas de caché Vectorial ¿Un único pipe? Vectorial M0 M1 M7 M.P. V[0] V[1] V[7] V[8] V[9]   Entrelazado orden inferior n 3 Patrón de acceso a MP palabra módulo ¿Memoria multipuerto? ¿Cuántos bancos? ¿ Acceso paralelo al vector V[16] ? ¡ Demasiado secuencial !

  37. arqPar Vectoriales (Memorias entrelazadas) SIMD-37 Entrelazado de orden inferior: Acceso Concurrente Memoria de 2a+b palabras, # de módulos: m=2a, Palabras por módulo: w=2b M0 M1 Mm-1 decodificador 0 1 m-1 m m+1 2m-1 a Dirección de memoria 2m 2m+1 3m-1 palabra módulo b m(w-1) m(w-1)+1 wm-1 RIM RIM RIM RDM Para acceder a un vector en memoria (longElemento = palabra): DirInicio, NumElementos, Stride (Separación entre elementos)

  38. arqPar Vectoriales (Memorias entrelazadas) SIMD-38 Pérdida de eficiencia t de acceso () t total de un vector grande (m) t de transmisión () Sin pérdida de eficiencia Stride=1 ¿Stride=2? Módulos M7 M6 M5 M4 M3 M2 M1 M0 Tiempo ¡ Ojo al ubicar matrices en memoria ! ¿Stride = 3?

  39. arqPar Vectoriales (Memorias entrelazadas) SIMD-39 Entrelazado de orden inferior: Acceso Simultáneo Memoria de 2a+b palabras, # de módulos: m=2a, Palabras por módulo: w=2b M0 M1 Mm-1 0 1 m-1 m m+1 2m-1 b Ciclo de búsqueda Dirección de memoria 2m 2m+1 3m-1 palabra módulo a m(w-1) m(w-1)+1 wm-1 RIM RIM RIM Ciclo de acceso Multiplexador

  40. arqPar Vectoriales (Memorias entrelazadas) SIMD-40 Módulos Ciclo de búsqueda M7 M6 Ciclo de acceso M5 M4 M3 M2 M1 Tiempo M0 ‘m’ palabras (8) Pérdida de eficiencia para Stride  1

  41. arqPar Vectoriales (Funciones vectoriales compuestas) SIMD-41 Vectorización Almacenamiento de Vector Carga de Vector Carga de Vector Y(I) = S * X(I) + Y(I) Escalar x Vector Suma vectorial FUNCIONES VECTORIALES COMPUESTAS BUCLE I=1 HASTA 100 CARGA R1,X(I) CARGA R2,Y(I) MULTIPLICA R1,S SUMA R2,R1 ALMACENA Y(I), R2 FIN BUCLE IV1: CARGA VECTOR IV2: CARGA VECTOR IV3: MULTIPLICA VECTOR x ESCALAR IV4: SUMA VECTOR, VECTOR IV5: ALMACENA VECTOR Si disponemos de 2 U.F. (*,+) ¿Ociosa siempre una?

  42. arqPar Vectoriales (Encadenamiento hardware) SIMD-42 6 5 4 3 2 1 4 2 1 2 3 4 5 6 Y(I) = S * X(I) + Y(I) Conflicto en los 3 accesos a memoria Cuantos más pipelines de acceso a memoria tengamos, mejor podremos encadenar los procesamientos vectoriales 1 1 2 1 3 2 5 2 3 4 4 1 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 6 ENCADENAMIENTO HARDWARE Una vez extraídos X e Y, hay que realizar 2 operaciones vectoriales S * X(I) + Y(I) Vx Vector intermedio Vector intermedio 2 S Multiplicador Sumador Vy Etapa de procesamiento

  43. arqPar Vectoriales (Encadenamiento hardware) SIMD-43 Carga de Y Etapa 1 memoria Vy Carga de memoria Etapa 2 Carga de X memoria Carga de memoria V3 Vx S V4 Multiplicador Etapa de procesamiento Sumador Vy Almacenamiento de Y Etapa 3 V4 memoria Almacenamiento en memoria Y(I) = S * X(I) + Y(I) Conflicto en los 3 accesos a memoria Disponiendo de un solo pipeline para acceso a memoria (Cray I):

  44. arqPar Vectoriales (Encadenamiento hardware) SIMD-44 Carga de Y memoria Carga de memoria Carga de X memoria Carga de memoria V3 Vx S Multiplicador Etapa de procesamiento Sumador Vy Almacenamiento de Y memoria V4 Almacenamiento en memoria Y(I) = S * X(I) + Y(I) Conflicto en los 3 accesos a memoria Disponiendo de tres pipelines para acceso a memoria (Cray X-MP): Encadenamiento completo

  45. arqPar Vectoriales (Encadenamiento hardware) SIMD-45 Eficiencia sin utilizar encadenamiento: Eficiencia utilizando encadenamiento con un solo pipe de acceso a memoria: Eficiencia utilizando encadenamiento con 3 pipes de acceso a memoria: Carga X Carga Y S * X V + Y Almacena Y t Carga Y Carga X S * X V + Y Almacena Y t Carga X • Limitaciones: • # Unidades Funcionales • # Registros Vectoriales Carga Y S * X V + Y Almacena Y t

  46. arqPar Vectoriales (Encadenamiento hardware) SIMD-46 Cray Y-MP 1988 Fujitsu VP200 1988 Earth Simulator 2001 8 registros de 64 elementos • Fichero registros 64K: • 8 x 1024 • 16 x 512 • 32 x 256 • 64 x 128 • 128 x 64 • 256 x 32 72 registros de 256 elementos + 17 registros máscara 64 bits 128 bits

  47. arqPar Vectoriales (Encadenamiento hardware) SIMD-47

  48. arqPar SIMT(Introducción) SIMD-48 • Tarjetas Gráficas: Evolución (NVIDIA) www.nvidia.es/object/corporate-timeline-es.html 1999: GeForce 256 2009: Fermi 16 x 32 ..512 núcleos CUDA 2005: Play Station 3 2012: Kepler 15 x 192 ..2880 núcleos CUDA 2006 2008 2010 2012 G80 GT200 Fermi Kepler 128 256 512 1.536 2006: CUDA 2012: #1 TOP500

  49. arqPar SIMT (Introducción) SIMD-49

  50. arqPar SIMT (Introducción) SIMD-50 • Tarjetas Gráficas: Comparativa FLOPS en CPU vs GPU

More Related