Sobrecarga de comunicación en supercomputación

10

Estoy buscando referencias creíbles que indiquen la cantidad de recursos que las supercomputadoras gastan en coordinarse en comparación con el trabajo real relacionado con las tareas. Los recursos podrían estar disponibles en potencia de procesamiento, pero incluso los vatios parecen una unidad válida.

Creo que uno de mis profesores o libros de texto dijo una vez que en sistemas masivamente paralelos, hasta la mitad de la potencia de procesamiento disponible se gasta en coordinar la tarea y el envío de mensajes. Desafortunadamente, parece que no puedo encontrar esta referencia ni ningún otro material sobre esta proporción.

Me doy cuenta de que esto diferirá mucho dependiendo de la arquitectura de la supercomputadora y las implementaciones modernas probablemente sean más eficientes a este respecto, por lo que una descripción general de esta métrica en múltiples arquitecturas o evoluciones (antes y después del hardware dedicado para pasar mensajes) sería aún mejor.

Tomás Creemers
fuente
2
Puede obtener fácilmente cualquier número que desee eligiendo una computadora, un algoritmo y una implementación adecuados.
David Ketcheson

Respuestas:

10

2/ /3norte3+2norte2norte

Las medidas de referencia incluyen RPEAK (el número máximo teórico de operaciones de punto flotante por segundo para el sistema) y RMAX (el número máximo alcanzado de operaciones por segundo en el punto de referencia HPLinpack).

Es típico que RPEAK sea una fracción sustancial de RMAX, lo que indica que en esta tarea de referencia, las supercomputadoras actuales pueden lograr una fracción significativa de su rendimiento máximo teórico. Por ejemplo, en la clasificación de supercomputadoras TOP500 de noviembre de 2015, la máquina más rápida, Tianhe-2, tiene RPEAK = 54.902 petaflops y RMAX = 33.863 petaflops.

Sin embargo, el punto de referencia HPLinpack se considera ampliamente como no representativo de las cargas de trabajo actuales. Los resultados de HPlinpack suelen exagerar en gran medida el rendimiento de las supercomputadoras en aplicaciones reales.

Un nuevo punto de referencia, llamado HPCG, está en desarrollo. Este punto de referencia involucra operaciones comúnmente realizadas en métodos iterativos para la solución de grandes sistemas dispersos de ecuaciones que surgen de PDE discretizados. Esta carga de trabajo es mucho más difícil para las computadoras de alto rendimiento. También es mucho más representativo de para qué se utilizan las supercomputadoras en la práctica.

Algunos resultados iniciales de HPCG están llegando a menos del 5% de RPEAK. Por ejemplo, Tianhe-2 tiene RPEAK = 54.902 petaflops y HPCG a 0.58 petaflops (consulte la referencia a continuación para una presentación sobre HPCG).

Los puntos de referencia TOP500 HPLinpack se pueden encontrar en:

http://www.top500.org/

Se puede encontrar una presentación sobre HPCG en:

http://www.hpcg-benchmark.org/downloads/isc15/HPCG-ISC15-FINAL-SLIDES_update1.pdf

El sitio web de HPCG está en

http://www.hpcg-benchmark.org/

Brian Borchers
fuente
1
2/ /3norte3+2norte2
3
Esto no parece responder a la pregunta, ya que no dice nada sobre la transmisión de mensajes.
David Ketcheson
Responde parcialmente a la pregunta en el sentido de que estos puntos de referencia le dicen qué tan eficientemente se están utilizando las unidades de coma flotante; puede restar de una para averiguar cuánto tiempo se dedica a todo lo demás, que incluye el paso de mensajes, entre otras cosas.
Brian Borchers
6

La respuesta honesta es que no lo sabemos. La respuesta depende en gran medida de lo que realmente se está ejecutando y qué código ha escrito el usuario. Como señala Brian Borchers, hay una gran diferencia entre dos puntos de referencia donde tenemos todo el código y supuestamente sabemos qué está haciendo ese código, pero hay mucho desacuerdo sobre cuán representativo es este código de lo que los usuarios de supercomputadoras están haciendo realmente. Sin un análisis detallado del código fuente y algunos instrumentos pesados ​​de códigos reales en máquinas reales, encontrar esta relación es casi imposible. Hay algunos proyectos que están comenzando a recopilar datos que podrían acercar a la comunidad a responder esta pregunta, pero no está del todo resuelto.

De hecho, la pregunta no es realmente clara. Si la tarjeta de comunicación de un nodo de clúster tiene un procesador que solo se puede usar para la comunicación, ¿cómo cuenta el tiempo que esta tarjeta pasa inactiva sin manejar la comunicación (ni nada más)? Es decir, ¿qué cuenta como "potencia de procesamiento disponible"? ¿Contamos los programas mal escritos que tienen rutinas de computación y comunicaciones no optimizadas de la misma manera que las optimizadas? ¿Qué pasa si alguien usa un antipatrón conocido en su código que deliberadamente subutiliza la CPU? ¿Qué pasa con los programas vergonzosamente paralelos que no se comunican en absoluto (estos se ejecutan en supercomputadoras, lo prometo)?

No perdería su tiempo tratando de cuantificar un comentario inesperado en un libro o de su profesor. Este tipo de declaraciones están ahí para recordarnos que la programación paralela es difícil y generalmente se hace mal. Las supercomputadoras tampoco están perfectamente diseñadas para eliminar u optimizar todos los desperdicios.

Bill Barth
fuente