introduccion algoritmos multihilo
TRANSCRIPT
![Page 1: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/1.jpg)
Algoritmos Multihilo
Introducción
![Page 2: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/2.jpg)
Algoritmos Multihilo
• Hasta ahora los algoritmos que hemos visto son seriales ya que se ejecutan en modelo RAM (un solo procesador)
• Necesitamos extender modelo RAM para describir algoritmos que se ejecutan en paralelo
• La mayor parte de los dispositivos de cómputo actuales son multiprocesador
![Page 3: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/3.jpg)
Modelos PRAM
• Hay varios tipos de modelos de computadoras que funcionan en paralelo
• Uno de los principales aspectos en que difieren es en como se intercambian mensajes
• Existen modelos de memoria compartida y los de memoria distribuida
• Los computadores actuales son de memoria compartida
![Page 4: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/4.jpg)
Programación Multihilo Dinámica
• Generalmente nos basamos en una plataforma de concurrencia (capa de software)
• El lenguaje de programación (o una librería) nos provee extensiones simples en la forma de instrucciones de concurrencia parallel, spawn, and sync.
![Page 5: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/5.jpg)
Spawn
• Spawn: Si spawn precede a una llamada a función, el procedimiento que ejecuta la llamada (el padre) sigue ejecutándose en paralelo con la subrutina creada (el hijo), en vez de esperar a que el hijo termine.
![Page 6: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/6.jpg)
Spawn
• Spawn significa que pude ejecutarse en paralelo, no que es obligatorio
• En tiempo de ejecución, el scheduler decide que instrucciones se ejecutan de manera concurrente.
![Page 7: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/7.jpg)
Sync
• La palabra reservada sync indica que un procedimiento debe esperar hasta que todos sus hijos creados completen sus tareas.
![Page 8: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/8.jpg)
Parallel• Muchos algoritmos contienen lazos. • Si se utiliza la palabra reservada parallel antes de un lazo form, esto
indica que el cuerpo del lazo puede ser ejecutado en paralelo.
![Page 9: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/9.jpg)
Cálculo de los Números Fibonacci Multihilo
• Los números Fibonacci son generados por la siguiente definición:
F0 = 0 F1 = 1para i > 1, Fi = Fi-1 + Fi-2
![Page 10: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/10.jpg)
Algoritmo Fuerza Bruta
![Page 11: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/11.jpg)
Algoritmo de Fuerza Bruta
![Page 12: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/12.jpg)
Fibonacci Multihilo• Si lo queremos hacer multihilo este sería el algoritmo:
![Page 13: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/13.jpg)
DAG del Algoritmo
• La ejecución multihilo puede comprenderse mejor con un grafo acícliclo dirigido (DAG) G=(V,E).
• Los vértices V en el gráfico son las instrucciones. • Los enlaces E representan la dependencia entre
las instrucciones.• Si un enlace (u,v) está en E significa que la
instrucción u debe ejecutarse antes de la instrucción v.
![Page 14: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/14.jpg)
DAG
![Page 15: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/15.jpg)
Strands
![Page 16: Introduccion Algoritmos Multihilo](https://reader036.vdocuments.co/reader036/viewer/2022062503/58a517591a28ab8e1c8b6c87/html5/thumbnails/16.jpg)
Loops Paralelos