Permíteme darte algunos problemas en los que estoy trabajando en este momento (léase: les dije a los estudiantes de doctorado que trabajen).
- Los enfoques modernos para administrar las térmicas y el rendimiento del procesador han tenido el efecto secundario no deseado de eliminar la reproducibilidad del rendimiento. Si ejecuto un punto de referencia sintético 350 veces en procesadores 4200, el mejor momento / peor momento puede ser 0.85. Hemos observado variaciones a nivel de hyperthreads, procesadores, sockets y, por supuesto, en Linux mismo. Estadísticamente, ¿cómo pasa de 350 ejecuciones * 2100 nodos * 2 sockets / nodo * 36 hiperthreads / mediciones de socket a una atribución de ruido a la variación de fabricación, ubicación de subprocesos, ubicación de socket y efectos del sistema operativo?
- Teniendo en cuenta los datos recopilados anteriormente, ¿cómo determinaría el nivel de “unicidad” de cada procesador? Si tuviera 4200 contenedores, ¿qué tan diferente sería cada contenedor del siguiente (y cómo mediría eso)? Si elige un número menor de contenedores, ¿cómo hace para elegir ese número?
- El patrón de comunicación “plantilla” es bastante común en las aplicaciones de física: realiza una pequeña cantidad de trabajo, envía los resultados a sus “vecinos”, espera a que sus vecinos le envíen sus resultados, y solo luego continúe con el siguiente bit de trabajo. Como puede imaginar, dar más trabajo a unos pocos procesadores significa que el resto del sistema estará inactivo la mayor parte del tiempo: el equilibrio de carga es fundamental para una utilización eficiente. Sin embargo, los procesadores baratos no hacen muy bien la reproducibilidad del rendimiento. Deje que un gráfico acíclico dirigido represente el patrón de comunicación de un programa con los pesos de los nodos como la cantidad de cálculo y las aristas de las dependencias de datos. Si los pesos de los nodos se extraen de alguna distribución, ¿cuál es la distribución esperada de la ruta crítica del DAG?
- Dado todo lo anterior, la comunicación basada en stencil puede simplemente no ser el modelo correcto para usar. Una alternativa es “bolsa de tareas” (o, en ocasiones, “DAG de tareas”). Las tareas de cálculo específicas ya no están ancladas a procesadores individuales. En cambio, pueden asignarse a cualquier procesador que esté libre y “cercano”. Estadísticamente, ¿este enfoque amplifica o amortigua los efectos de la irreproducibilidad del rendimiento?
- Nos gusta pensar que, con suficiente tiempo y talento, las personas inteligentes pueden hacer que el código se ejecute más rápido, y tenemos un historial bastante extenso de esto en una máquina reproducible por rendimiento. Dado todo lo anterior, ¿cómo demuestra que los cambios que realizó en su código dieron como resultado un cambio estadísticamente significativo en el tiempo de ejecución? Tenga en cuenta que probablemente no podrá tomar prestada la supercomputadora durante una semana para hacer 350 A / B para ver si ha empujado la mediana.