Computación Paralela 2018
Laboratorio 1 - Optimización secuencial
Cosas para hacer
- Opciones de compilación (explorar mucho).
- Mejoras algorítmicas (pensar algunas).
- Optimizaciones de cálculos.
- Unrolling de loops y otras fuentes de ILP.
- Hugepages.
- Estrategias cache-aware (blocking).
- Profiling (perf) y timing (time).
- Normalizar el tiempo respecto al tamaño del problema (ns/spinflip por ejemplo).
Entrega
Presentación de los resultados (10 minutos) e informe breve con:
- Características del hardware y del software:
- CPU: modelo y velocidad.
- Memoria: capacidad, velocidad, cantidad de canales ocupados.
- Compilador: nombre y versión.
- Sistema Operativo: nombre, versión, arquitectura.
- Gráficas de scaling para la versión más rápida obtenida.
- Tiempo de cómputo normalizado vs. tamaño del problema (lin-log usualmente).
- No, no es lineal, asi que hay que explorar tamaños encontrando las diferencias en el sistema de memoria.
- Cada punto debe ser promediado, al menos, 3 veces. Lo ideal es graficar el intervalo de varianza.
- Optimizaciones probadas y sus resultados.
- Explicación y mediciones que validan la explicación.
- Intentar medir algo más que el tiempo de mejora.
- Menos caché misses.
- Más IPC.
- Menos stalled cycles.