La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Multi-core: Conceptos básicos Intel Software College.

Presentaciones similares


Presentación del tema: "Programación Multi-core: Conceptos básicos Intel Software College."— Transcripción de la presentación:

1 Programación Multi-core: Conceptos básicos Intel Software College

2 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 2 Multi-core Programming: Basic Concepts Objetivos Al término de este módulo estará familiarizado con los concéptos básicos de: Hilos Programación multihilos Nota: Los hilos serán agentes realizando trabajos No se usarán ejemplos de código

3 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 3 Multi-core Programming: Basic Concepts Agenda Conceptos básicos Conceptos de diseño Conceptos de depuración Conceptos de rendimiento

4 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 4 Multi-core Programming: Basic Concepts Agenda Conceptos básicos Procesos e hilos Paralelismo y concurrencia Conceptos de diseño Conceptos de depuración Conceptos de rendimiento

5 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 5 Multi-core Programming: Basic Concepts Porque usar hilos Beneficios Mayor rendimiento Método sencillo para sacar provecho de arquitecturas multi-core Mejor utilización de recursos Reduce latencia (incuso en sistemas con un procesador) Compartición eficiente de los datos Compartir datos a través de la memoria es más eficiente que pasar mensajes Riesgos Incrementa la complejidad de la aplicación Difícil depurar (condiciones de concurso, interbloqueos, etc.) Processes & Threads

6 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 6 Multi-core Programming: Basic Concepts Procesos e Hilos Los sistemas operativos modernos cargan programas como procesos Tiene recursos Ejecución Un proceso inicia ejecutando su punto de entrada como un hilo Los hilos pueden crear otros hilos dentro del proceso Cada hilo obtiene su propio stack Todos los hilos dentro de un proceso comparten código y segmentos de datos Procesos e Hilos Code segment Data segment thread main() … thread Stack

7 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 7 Multi-core Programming: Basic Concepts Concurrencia vs. Paralelismo Concurrencia: dos o más hilos están en progreso al mismo tiempo: Paralelismo: dos o más hilos están ejecutandose al mismo tiempo Se requieren varios núcleos Hilo 1 Hilo 2 Hilo 1 Hilo 2 Concurrency vs. Parallelism

8 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 8 Multi-core Programming: Basic Concepts Agenda Conceptos básicos Conceptos de diseño ¿Paralelizando por funcionalidad o por rendimiento? ¿Paralelizando por tasa de trabajos o tiempo de retorno? Descomposición del trabajo Conceptos de depuración Conceptos de rendimiento

9 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 9 Multi-core Programming: Basic Concepts Creando hilos por funcionalidad Asignar hilos a diferentes funciones de la aplicación El método más simple ya que no hay como sobreponer Ejemplo: Construyendo una casa Albañil, carpintero, pintor, plomero,… Threading for Functionality or Performance?

10 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 10 Multi-core Programming: Basic Concepts Hilos para el rendimiento Mejora el rendimiento de computadoras Paralelizar para mejorar el tiempo de retorno o la tasa de trabajos Ejemplos Línea de ensamblado de automóviles Cada trabajador hace una función asignada Buscando piezas desde Skylab Divide el area a buscar Servicio postal de USA Oficinas postales, clasificadores, entrega Threading for Functionality or Performance?

11 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 11 Multi-core Programming: Basic Concepts Tiempo de retorno Complete una sola tarea en la menor cantidad de tiempo Ejemplo: Poner la mesa para la cena Uno pone los platos Uno que dobla y pone las servilletas Uno que ponga los cubiertos Cucharas, cuchillos, tenedores Uno que ponga los vasos Threading for Throughput or Turnaround?

12 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 12 Multi-core Programming: Basic Concepts Tasa de trabajos Completar la mayor cantidad de trabajos en un tiempo fijo Ejemplo: Poner las mesas de un banquete Varios meseros hacen mesas separadas Meseros especializados para platos, vasos, cubiertos, etc. Threading for Throughput or Turnaround?

13 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 13 Multi-core Programming: Basic Concepts Descomposición de una tarea Divide el tiempo de computación basado en un conjunto natural de tareas independientes Asignar datos para cada tarea conforme se van necesitando Ejemplo: Pintar por números Pintando un color es una sola tarea Número de tareas = número de colores Dos artistas: uno hace los impares y otro los pares Task Decomposition

14 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 14 Multi-core Programming: Basic Concepts Descomposición de los datos Conjuntos de datos grandes cuyos elementos pueden computarse de manera independiente Divide datos y asocia la computación entre los hilos Ejemplo: Calificar exámenes Varios profesores con la misma llave ¿Qué sucede si se necesitan diferentes llaves? Data Decomposition

15 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 15 Multi-core Programming: Basic Concepts Agenda Conceptos basicos Conceptos de diseño Conceptos de depuración Condiciones de concurso y sincronización Interbloqeo Conceptos de rendimiento

16 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 16 Multi-core Programming: Basic Concepts Condiciones de concurso Los hilos compiten entre ellos mismos por recursos Se asume el orden de ejecución, pero no se garantiza Lo más común es el conflicto en el almacenamiento Acceso concurrente de la misma dirección de memoria por varios hilos Al menos un hilo está escribiendo Ejemplo: El juego de las sillas Race Conditions and Synchronization

17 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 17 Multi-core Programming: Basic Concepts Exclusión mutua Región crítica Porción de código que accesa (lee y escribe) variables compartidas Exclusión mutua Lógica del programa que forza a un hilo para que acceda la sección crítica. Permite corregir estructuras de programación para evitar condiciones de concurso Ejemplo: Depositar en una caja de seguridad Quienes la atienden aseguran la exclusión mutua Race Conditions and Synchronization

18 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 18 Multi-core Programming: Basic Concepts Sincronización Objetos de sincronización usados para forzar la exclusión mutua Locks, semaforos, secciones críticas, eventos, variables condición, atómicas Un hilo retiene objetos de sincronización; otros hilos deben esperar Al término, los hilos que retienen los objetos los liberan; el objeto se le entrega a un hilo que esté esperando Ejemplo: Biblioteca Una persona tiene prestado un libro Otros deben esperar a que el libro regrese Race Conditions and Synchronization

19 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 19 Multi-core Programming: Basic Concepts 9 Sincronización por barreras Los hilos se detienen en un punto de ejecución Los hilos que esperan están ociosos; sobrecarga Cuando los hilos llegan, todos arrancan Ejemplo: Linea de salida en una carrera Race Conditions and Synchronization

20 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 20 Multi-core Programming: Basic Concepts Interbloqueo Los hilos esperan por un evento o condición que nunca sucede Ejemplo: Intersección de coches Los coches no pueden echarse en reversa ¿Qué es un Livelock? Los hilos cambian de estado en respuesta de otros Ejemplo: Robin Hood y Pequeño Juan en un puente angosto Deadlock

21 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 21 Multi-core Programming: Basic Concepts Agenda Conceptos básicos Conceptos de diseño Conceptos de depuración Conceptos de rendimiento Aceleración y eficiencia Granularidad y balanceo de carga

22 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 22 Multi-core Programming: Basic Concepts Aceleración (Simple) Medir que tanto se acelera la ejecución de cómputo vs. el mejor código serial Tiempo serial dividido por tiempo paralelo Ejemplo: Pintar una barda de tablitas 30 minutos de preparación (serial) Un minuto para pintar una tabla 30 minutos para limpiar (serial) Por lo tanto, 300 tablas toman 360 minutos (tiempo serial) Speedup and Efficiency

23 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 23 Multi-core Programming: Basic Concepts Calculando Aceleración Que pasa si el dueño de la barda usa un spray para pintar 300 tablas en una hora ? Mejor algoritmo serial Si no hay sprays disponibles para varios pintores, cuál es la máxima paralelización? Numero de pintores TiempoSpeedup = X = X = 904.0X = 635.7X Infinito = 606.0X Illustra la ley de Amdahl La aceleración potencial está restringida por la porción serial Speedup and Efficiency

24 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 24 Multi-core Programming: Basic Concepts Eficiencia Medir que tan efectivamente los recursos de cómputo están ocupados Aceleración dividida entre el número de hilos Expresada como porcentaje promedio de tiempo no ocioso Numero de pintores TiempoAceleraci ón Eficiencia X100% = X85% = 904.0X40% = 635.7X5.7% Infinito = 606.0XMuy baja Speedup and Efficiency

25 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 25 Multi-core Programming: Basic Concepts Granularidad Pobremente definido como tasa de computación a sincronización Asegurarse que hay suficiente trabajo que merezca cómputo en paralelo Ejemplo: Dos granjeros dividen un campo. ¿Cuántos granjeros más se pueden agregar? Granularity and Load Balance

26 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 26 Multi-core Programming: Basic Concepts Balanceo de carga La distribución más efectiva es tener la misma cantidad de trabajo por hilo Los primeros hilos que terminan se convierten en ociosos Los hilos deben terminar casi al mismo tiempo Ejemplo: Poner las mesas de un banquete Lo mejor es asignar la misma cantidad de mesas a cada cuadrilla Granularity and Load Balance

27 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 27 Multi-core Programming: Basic Concepts Programacuón Multi-core: Conceptos básicos, ¿Qué se ha cubierto? Procesos e hilos Paralelismo y concurrencia Conceptos de diseño ¿Paralelizando por tasa de respuesta o tiempo de retorno? ¿Paralelizando por funcionalidad o rendimiento? Descomposición del trabajo Conceptos de depuración Condiciones de concurso y sincronización Interbloqueo Conceptos de rendimiento Aceleración y eficiencia Granularidad y carga de trabajo

28 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 28 Multi-core Programming: Basic Concepts

29 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 29 Multi-core Programming: Basic Concepts Diapositivas alternativas

30 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 30 Multi-core Programming: Basic Concepts Tiempo de retorno Completar una sola tarea en la menor cantidad de tiempo Ejemplo: Decoración de un pastel Betún Uno pone betún arriba, otro hace los lados Decoración Uno hace los bordes Uno pone las flores Uno escribe Happy Birthday Threading for Throughput or Turnaround?

31 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 31 Multi-core Programming: Basic Concepts Tasa de trabajos Completar la mayor cantidad de trabajos en una cantidad de tiempo fija Ejemplo: Decorar pasteles Muchos pasteleros haciendo toda la decoración Linea de ensamble de quienes ponen el betún y los decoradores Threading for Throughput or Turnaround?

32 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 32 Multi-core Programming: Basic Concepts Tiempo de retorno Completa una sola tarea en la menor cantidad de tiempo Ejemplo: Los padres están por llegar en una hora Hugues limpia la sala Otto limpia el baño Thomas limpia la cocina Threading for Throughput or Turnaround?

33 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 33 Multi-core Programming: Basic Concepts Tasa de trabajos Completa la mayor cantidad de tareas en un tiempo Example: Producir pines Una persona traza el alambre, otro lo estira, un tercerlo lo corta, un cuarto le saca la punta, un quinto arregla la parte superior; … (A. Smith 1776) Threading for Throughput or Turnaround?

34 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 34 Multi-core Programming: Basic Concepts Paralelizando por funcionalidad Asignar hilos a funciones separadas El método más sencillo ya que no hay como sobreponer Ejemplo: Dirigiendo un equipo de americano Coach de cabeza, coach de posiciones, coach de equipos especiales Threading for Functionality or Performance?

35 Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners. 35 Multi-core Programming: Basic Concepts Interbloqueo Los hilos esperan algún evento o condición que nunca sucederá Ejemplo: Intersección de tráfico Los autos no se pueden echar para atrás ¿Qué es un Livelock? Los hilos cambian de estado en respuesta de otro Ejemplo: Robin Hood y el pequeño Juan en un puente angosto Deadlock


Descargar ppt "Programación Multi-core: Conceptos básicos Intel Software College."

Presentaciones similares


Anuncios Google