Introducción a las arquitecturas paralelas · PDF filelos procesadores superescalares...

Click here to load reader

  • date post

    04-Oct-2018
  • Category

    Documents

  • view

    229
  • download

    0

Embed Size (px)

Transcript of Introducción a las arquitecturas paralelas · PDF filelos procesadores superescalares...

  • Introduccin a lasarquitecturasparalelasDaniel Jimnez-Gonzlez

    PID_00184814

  • Los textos e imgenes publicados en esta obra estn sujetos excepto que se indique lo contrario a una licencia de

    Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 Espaa de Creative Commons. Podis copiarlos, distribuirlos y

    transmitirlos pblicamente siempre que citis el autor y la fuente (FUOC. Fundacin para la Universitat Oberta de Catalunya), no hagis de

    ellos un uso comercial y ni obra derivada. La licencia completa se puede consultar en

    http://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es

  • CC-BY-NC-ND PID_00184814 Introduccin a las arquitecturas paralelas

    ndice

    Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1. Paralelismo en uniprocesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.1. Paralelismo a nivel de instruccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    1.1.1. Procesador segmentado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    1.1.2. Procesador superescalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    1.1.3. Procesador Very Long Instruction Word (VLIW) . . . . . . . . . . . . . . . 13

    1.2. Paralelismo a nivel de threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    1.2.1. Multithreading de grano fino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    1.2.2. Multithreading de grano grueso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    1.2.3. Simultaneous Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    1.3. Paralelismo a nivel de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.3.1. Ejemplos de vectorizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    1.3.2. Cdigo vectorizable sin dependencias . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    1.4. Limitaciones del rendimiento de los procesadores . . . . . . . . . . . . . . . . . . . . . . 23

    1.4.1. Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    1.4.2. Ley de Moore y consumo de los procesadores . . . . . . . . . . . . . . . . . . 24

    2. Taxonoma de Flynn y otras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.1. MIMD: Memoria compartida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    2.2. MIMD: Memoria distribuida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    2.3. MIMD: Sistemas hbridos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    2.4. MIMD: Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    3. Medidas de rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.1. Paralelismo potencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    3.2. Speedup y eficiencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    3.3. Ley de Amdahl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    3.4. Escalabilidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    3.5. Modelo de tiempo de ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    3.6. Casos de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    3.6.1. Ejemplo sin Blocking: Edge-Detection . . . . . . . . . . . . . . . . . . . . . . . . . 43

    3.6.2. Ejemplo con Blocking: Stencil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    4. Principios de programacin paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.1. Concurrencia en los algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    4.1.1. Buenas prcticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    4.1.2. Orden y sincronizacin de tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    4.1.3. Comparticin de datos entre tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

  • CC-BY-NC-ND PID_00184814 Introduccin a las arquitecturas paralelas

    4.2. Problemas que aparecen en la concurrencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4.2.1. Race Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4.2.2. Starvation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    4.2.3. Deadlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    4.2.4. Livelock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    4.3. Estructura de los algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    4.3.1. Patrn Task Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    4.3.2. Patrn Divide & Conquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    4.3.3. Patrn Geometric Decomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    4.3.4. Patrn Recursive Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    4.3.5. Patrn Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    4.3.6. Patrn Event-based Coordination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    4.4. Estructuras de soporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    4.4.1. SPMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    4.4.2. Master/Workers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    4.4.3. Loop Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    4.4.4. Fork/Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5. Modelos de programacin paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.1. Correspondencia entre modelos y patrones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    5.2. MPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    5.2.1. Un programa simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    5.2.2. Comunicacin punto a punto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    5.2.3. Comunicacin colectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.3. OpenMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    5.3.1. Un programa simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    5.3.2. Sincronizacin y locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    5.3.3. Comparticin de trabajo en bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    5.3.4. Tareas en OpenMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    5.4. OmpSs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    5.5. Caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    5.5.1. Cdigo secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    5.5.2. OpenMP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    5.5.3. MPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    5.5.4. Hbrido: MPI + OpenMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    Ejercicios de autoevaluacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

  • CC-BY-NC-ND PID_00184814 5 Introduccin a las arquitecturas pa