Estadísticas correctas para informar resultados de aceleración

12

Digamos que tengo versiones lentas y rápidas de algún código, y quiero informar un número de aceleración comparando los dos. Ejecuto la versión lenta veces y la versión rápida m veces, produciendo tiempos ( s 1 , ... , s n ) y ( f 1 , ... , f m ) . La forma más simple de producir una aceleración es promediar los medios: ˉ snm(s1,,sn)(f1,,fm) Sin embargo, esto no tiene en cuenta los valores atípicos.

s¯f¯=mi<nsinj<mfj

Pregunta : ¿Cuál es la mejor estadística para usar cuando se informan números de aceleración?

Geoffrey Irving
fuente
3
¿Qué tan grande es la desviación estándar en comparación con la media? Hagas lo que hagas, debes informar lo que hiciste y probablemente poner barras de error si son grandes. Si son realmente grandes, debe investigar la fuente. La mayoría del código de la computadora debe ejecutarse de manera bastante determinista a tiempo, a menos que haya un componente aleatorio en el programa en sí o que esté compartiendo recursos de la computadora con otros (esto podría ser una red o un disco, no solo nodos de clúster). Si la competencia por los recursos del disco es el problema, puede considerar informar el rendimiento con E / S deshabilitada (bastante común), solo asegúrese de tenerlo en cuenta.
Bill Barth
En Edison (una supercomputadora Cray), tengo una diferencia del 2% entre dos muestras. En mi computadora portátil veo una desviación estándar del 6-8% medida en más de 10 muestras. Ambos son solo para el núcleo de cómputo, sin E / S.
Geoffrey Irving
Para aclarar por qué estoy mencionando valores atípicos si las variaciones ya son razonablemente bajas: esta es una cantidad estadística suficientemente fundamental que me gustaría saber la forma ideal de informarla, incluso si las formas no ideales están bien en este caso particular.
Geoffrey Irving
2
La pregunta es: ¿qué estás tratando de comunicar y la fórmula se comunicaría mejor? No creo haber visto nunca un documento que informe sobre la variabilidad de la ejecución en la aceleración a menos que la causa fuera central en el documento. Dado que postulamos una relación lineal entre el tiempo de ejecución y el recuento de procesador / tarea / subproceso, probablemente esté bien usar la relación de medias, pero luego la barra de error con la relación de max-to-min y min-to-max si crees que es importante mostrar el rango. Además, probablemente debería ver sus opciones de escala de frecuencia y fijación de tareas para reducir su variabilidad. :)
Bill Barth
Puede haber muchos trucos para eliminar IO. Entre las optimizaciones del compilador para los trucos de "Copiar en escritura" puede haber vínculos hacia abajo realmente no obvios. Normalmente sigo el prototipo de d1 = loadData (); d2 = copia (d1); r1 = algo (d2); r2 = algo (d1), y solo considera el tiempo de la segunda ejecución.
meawoppl

Respuestas:

9

Además de todo lo que Bill Barth ya ha dicho anteriormente, permítanme mencionar que las personas a menudo informan la más rápida de varias carreras. La razón es que el tiempo de ejecución real es el tiempo de ejecución ideal más cualquier cantidad de ralentizaciones resultantes de otros procesos en ejecución, retrasos del sistema operativo, retrasos de la red, etc. Dado que estos son todos ruidos que no nos interesan, usar el tiempo de ejecución más rápido viene más cercano al que realmente queremos saber.

Wolfgang Bangerth
fuente
Desafortunadamente, este principio no ayuda cuando se informa una aceleración entre dos algoritmos.
Geoffrey Irving
3
@GeoffreyIrving, ¿por qué no? Ambos algoritmos tienen una expectativa teórica de rendimiento frente al tamaño del problema (o el conteo del procesador u otro parámetro no estadístico) con términos de bajo orden e independientes del parámetro ignorados. Usar el tiempo más rápido (y notar este hecho) simplemente te ayuda a ignorar estos términos adicionales. Lo que parece una buena estrategia. A menos que nos diga algo diferente, parece que está tratando de descubrir cómo comunicar la diferencia entre los algoritmos de manera más efectiva, y la sugerencia de Wolfgang es convencional y esperada, por lo que podría transmitir esa información mejor.
Bill Barth
1
Vaya, sí, tienes razón. Felizmente retiro mi declaración.
Geoffrey Irving
(+1) Una pregunta secundaria: Completo veo su punto sobre la distribución de ruido no simétrica , etc. Digamos, sin embargo, que hago una implementación A, y una implementación B y las comparo y después de una cantidad razonable de ejecuciones, el El 25º cuantil y la mediana y la media son ~ 4,5 veces más rápido en A que en B, mientras que el 0% del cuantil es ~ 3x. Al comparar la implementación A con B, a pesar del hecho de que: yes A is theoretically only ~3x faster¿no puede esperarse una aceleración ~ 3x no representativa de la aceleración en cuando se usa la implementación A en lugar de B? (Por cierto, este es un ejemplo de la vida real)
usεr11852
1
@ usεr11852: Todo depende del sistema en el que se encuentre. Si su mediana o quincuagésimo quinto cuartil están tan separados como para distorsionar las estadísticas en la forma en que hipotetiza aquí, entonces es probable que esté en un sistema que tiene mucho ruido. Por ejemplo, puede ser utilizado por otros al mismo tiempo, etc. Eso puede no ser representativo de los sistemas que otros tienen para sus experimentos repetidos, y me parecería que está vendiendo demasiado sus resultados en ese caso. Por lo tanto, todavía sugiero informar las mejores carreras. Hagas lo que hagas, debes informar en el documento qué estadísticas utilizas.
Wolfgang Bangerth
1

Le sugiero que use la mediana para dar una estimación estadística. A diferencia de la media, la mediana no está corrompida por los valores atípicos.

ene
fuente
1
Para datos donde todo el ruido es positivo (es decir, con una distribución de ruido no simétrica), la mediana es tan mala como cualquier otra estadística. Para tiempos de ejecución, este es el caso, vea mi respuesta más arriba.
Wolfgang Bangerth
0

Si la desviación estándar no es despreciable, puede usar dos diagramas de cajas uno al lado del otro, construidos cada uno con el tiempo de uno de los algoritmos. Por supuesto, no son estándar en el análisis numérico, pero hacen un gran trabajo al mostrar este tipo de información.

Federico Poloni
fuente