Cosas para hacer
- Encontrar una métrica de performance del problema.
- Que sea comparable para cualquier tamaño del problema.
- Mejorar la performance cambiando cosas, por ejemplo:
- Opciones de compilación. (explorar mucho)
- Mejoras algorítmicas y/o numéricas. (si hay)
- Optimizaciones de cálculos. (que no haga ya el compilador)
- Unrolling de loops y otras fuentes de ILP. (nuevamente, que no haga el compilador)
- Sistema de memoria: Hugepages y estrategias cache-aware. (altamente probable que no rindan hasta agregar paralelismo)
Hints
- Tomar decisiones sobre dónde mirar primero en el código haciendo profiling. (perf)
- Automatizar TODO, es una inversión para todo el cuatrimestre:
- Compilación
- Tests para detectar rápido problemas en el código
- Ejecución y medición de performance
- Generación de gráficas
Entrega
Presentación de los resultados en clase (10 minutos) e informe breve.
- 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.
-
- Optimizaciones probadas y sus resultados.
-