Clase 04: Paralelización II¶
Limitaciones
- Trampa serial: No se puede paraelizar suponiendo que las tareas van a tardar 1/n veces (n hilos), por que hay tareas que no se pueden paralelizar
- Recursos compartidos
- Memoria: localidad temporal: Acceso a las posiciones de memoria compartidas por hilos
- Memoria: localidad espacial: Cantidad de memoria gestionada por cada hilo (secuencialidad de los datos)
- Herramientas de profiling: Nos permiten estudiar cómo se comporta en memoria y en ejecución los programas
Rendimiento de la cache
- h la tasa de acierto (HitRatio)
- Tm Tiempo de acceso memoria RAM
- Tc Tiempo de acceso memoria cache
Acceso paralelo
\[
T_{avg} = hT_c+(1-h)T_m
\]
Acceso jeraquico/Secuencia
\[
T_{avg} = hT_c+(1-h)(T_m+T_c)
\]
Dependencias
- Numeros de procesadores disponibles
- Dependencias de tareas
- Ley de Amdahl
- p es la parte del código que se puede paralelizar
- s es el número de hilos que puedo lanzar
- T es el tiempo secuencial
\[
L = \frac{T}{(1-p)+\frac{p}{s}}
\]
Elementos a tener en cuenta
- La cantidad total de trabajo: Para resolver una tarea al menos vamos a tener que realizar TODAS las operaciones que la involucran (profiling)
- El span: El tiempo de la tarea secuencial que se demora más
- La cantidad total de comunicación (Gestión de hilos y memoria en el programa)
Limitaciones con respecto al crecimiento de la capacidad
- Ley de moore: Cada dos años tenemos el doble de transitores (propuesta en los años 70) pero que se cumplio hasta los años 2000
- Tasas de reloj se estabilizaron (no tienen un crecimiento significativo) 3GHz
Tasa de reloj
- Power all: Entre más frecuencia se consume más energia (relación es exponencial) es necesario usar refrigeración especial cuando un procesador se overclockea
- Memory wall: La memoria y la CPU no tienen la misma frecuencia
- Restricciones de bajo nivel sobre paralelismo
Estrategias para paralelizar
- Formas: Paralelización de tareas y de datos
- Pipeline: Ejecutar las tareas en paralelo
- Ejecución especulativa: Adelantar ejecuciones no dependientes (hay que predecir)
Resumen¶
- La velocidad de algoritmo no depende directamente la tasa de reloj (hay limitaciones)
- El paralelismo por hardware está en sus limites
- Debe reducirse el acceso a memoria
- Los procesadores tienen instrucciones de paralelización pero el Kernel debe de proveerlas para aprovecharlas
Patrones de software en paralelismo
- Son a base de la experiencia (carecen de un marco teorico que los respalde 100%)
- Nos permiten construir aplicaciones de alto nivel para problemas complejos nos preocupamos en cómo se paraleliza ni por el hardware, si no lo que queremos paralelizar
- Muchos patrones. Pipeline (tareas), map→reduce (datos)
- Tener en cuenta las dependencias entre los datos y las operaciones (caso de addme)