Los puntos de referencia de LINPACK son una medida de la potencia de cálculo de punto flotante de un sistema . Introducidos por Jack Dongarra , miden qué tan rápido una computadora resuelve un sistema de ecuaciones lineales denso n por n Ax = b , que es una tarea común en ingeniería .
Autor (es) original (es) | Jack Dongarra , Jim Bunch, Cleve Moler y Gilbert Stewart |
---|---|
Versión inicial | 1979 |
Sitio web | www |
La última versión de estos puntos de referencia se utiliza para crear la lista TOP500 , clasificando las supercomputadoras más potentes del mundo. [1]
El objetivo es aproximar qué tan rápido funcionará una computadora al resolver problemas reales. Es una simplificación, ya que ninguna tarea computacional puede reflejar el rendimiento general de un sistema informático. Sin embargo, el rendimiento de referencia de LINPACK puede proporcionar una buena corrección sobre el rendimiento máximo proporcionado por el fabricante. El rendimiento máximo es el rendimiento teórico máximo que puede lograr una computadora, calculado como la frecuencia de la máquina, en ciclos por segundo, multiplicado por el número de operaciones por ciclo que puede realizar. El rendimiento real siempre será inferior al rendimiento máximo. [2] El rendimiento de una computadora es un tema complejo que depende de muchas variables interconectadas. El rendimiento medido por el punto de referencia LINPACK consiste en la cantidad de operaciones de punto flotante de 64 bits , generalmente sumas y multiplicaciones, que una computadora puede realizar por segundo, también conocidas como FLOPS . Sin embargo, es probable que el rendimiento de una computadora cuando se ejecutan aplicaciones reales esté muy por detrás del rendimiento máximo que logra al ejecutar el punto de referencia LINPACK apropiado. [3]
El nombre de estos puntos de referencia proviene del paquete LINPACK , una colección de subrutinas de álgebra Fortran ampliamente utilizadas en la década de 1980 e inicialmente estrechamente vinculadas al punto de referencia LINPACK. Desde entonces, el paquete LINPACK ha sido reemplazado por otras bibliotecas.
Historia
El informe de referencia de LINPACK apareció por primera vez en 1979 como un apéndice del manual del usuario de LINPACK . [4]
LINPACK fue diseñado para ayudar a los usuarios a estimar el tiempo requerido por sus sistemas para resolver un problema utilizando el paquete LINPACK , extrapolando los resultados de rendimiento obtenidos por 23 computadoras diferentes que resuelven un problema de matriz de tamaño 100.
Este tamaño de matriz se eligió debido a las limitaciones de memoria y CPU en ese momento:
- 10,000 entradas de punto flotante de -1 a 1 se generan aleatoriamente para completar una matriz densa general,
- luego, la descomposición LU con pivote parcial se utiliza para la sincronización.
A lo largo de los años, se lanzaron versiones adicionales con diferentes tamaños de problemas, como matrices de orden 300 y 1000, y restricciones, lo que permitió nuevas oportunidades de optimización a medida que las arquitecturas de hardware comenzaron a implementar operaciones matriz-vector y matriz-matriz. [5]
El procesamiento paralelo también se introdujo en el punto de referencia LINPACK Parallel a fines de la década de 1980. [2]
En 1991, LINPACK fue modificado para [6] resolver problemas de tamaño arbitrario, permitiendo que las computadoras de alto rendimiento (HPC) se acerquen a su rendimiento asintótico.
Dos años más tarde, este punto de referencia se utilizó para medir el rendimiento de la primera lista TOP500 .
Los puntos de referencia
LINPACK 100
LINPACK 100 es muy similar al punto de referencia original publicado en 1979 junto con el manual del usuario de LINPACK . La solución se obtiene por eliminación gaussiana con pivotaje parcial , con operaciones de coma flotante 2 / 3n³ + 2n² donde n es 100, el orden de la matriz densa A que define el problema. Su pequeño tamaño y la falta de flexibilidad del software no permiten que la mayoría de las computadoras modernas alcancen sus límites de rendimiento. Sin embargo, aún puede ser útil predecir el rendimiento en código escrito por el usuario con un uso intensivo de números utilizando la optimización del compilador. [2]
LINPACK 1000
LINPACK 1000 puede proporcionar un rendimiento más cercano al límite de la máquina porque además de ofrecer un tamaño de problema mayor, una matriz de orden 1000, son posibles cambios en el algoritmo. Las únicas limitaciones son que la precisión relativa no se puede reducir y el número de operaciones siempre se considerará 2 / 3n³ + 2n², con n = 1000. [2]
HPLinpack
Los puntos de referencia anteriores no son adecuados para probar equipos paralelos, [7] y se introdujo el denominado punto de referencia de Computación Altamente Paralela de Linpack, o HPLinpack. En HPLinpack, el tamaño n del problema se puede hacer tan grande como sea necesario para optimizar los resultados de rendimiento de la máquina. Nuevamente, se tomará como recuento de operaciones 2 / 3n³ + 2n², con independencia del algoritmo utilizado. No se permite el uso del algoritmo Strassen porque distorsiona la tasa de ejecución real. [8] La precisión debe ser tal que se cumpla la siguiente expresión:
, dónde es la precisión de la máquina y n es el tamaño del problema, [9] es la norma de la matriz ycorresponde a la notación O grande .
Para cada sistema informático, se notifican las siguientes cantidades: [2]
- R max : el rendimiento en GFLOPS para el mayor problema ejecutado en una máquina.
- N max : el tamaño del problema más grande que se ejecuta en una máquina.
- N 1/2 : el tamaño donde se alcanza la mitad de la tasa de ejecución Rmax.
- R pico : el rendimiento máximo teórico GFLOPS de la máquina.
Estos resultados se utilizan para compilar la lista TOP500 dos veces al año, con las computadoras más potentes del mundo. [1] TOP500 los mide en formato de punto flotante de doble precisión (FP64).
Implementaciones de referencia de LINPACK
La sección anterior describe las reglas básicas para los puntos de referencia. La implementación real del programa puede divergir, con algunos ejemplos disponibles en Fortran , [10] C [11] o Java . [12]
HPL
HPL es una implementación portátil de HPLinpack que se escribió en C, originalmente como una guía, pero que ahora se usa ampliamente para proporcionar datos para la lista TOP500, aunque se pueden usar otras tecnologías y paquetes. HPL genera un sistema lineal de ecuaciones de orden ny lo resuelve mediante la descomposición LU con pivoteo parcial de filas. Requiere implementaciones instaladas de MPI y BLAS o VSIPL para ejecutarse. [13]
En términos generales, el algoritmo tiene las siguientes características: [14] [15]
- distribución cíclica de datos en bloques 2D
- Factorización de LU utilizando la variante de aspecto correcto con varias profundidades de anticipación
- factorización recursiva del panel
- seis variantes de transmisión de panel diferentes
- algoritmo de transmisión de intercambio de reducción de ancho de banda
- sustitución hacia atrás con anticipación de profundidad 1
Crítica
Se dice que el benchmark LINPACK tuvo éxito debido a la escalabilidad [16] de HPLinpack, el hecho de que genera un solo número, lo que hace que los resultados sean fácilmente comparables y la extensa base de datos históricos que tiene asociada. [17] Sin embargo, poco después de su lanzamiento, el punto de referencia LINPACK fue criticado por proporcionar niveles de rendimiento "generalmente inalcanzables para todos menos unos pocos programadores que optimizan tediosamente su código para esa máquina y esa máquina sola", [18] porque solo prueba la resolución de sistemas lineales densos , que no son representativos de todas las operaciones que se realizan habitualmente en la informática científica. [19] Jack Dongarra , la principal fuerza impulsora detrás de los puntos de referencia LINPACK, dijo que, aunque solo enfatizan la velocidad "pico" de la CPU y el número de CPU, no se le da suficiente estrés al ancho de banda local y la red. [20]
Thom Dunning, Jr. , director del Centro Nacional de Aplicaciones de Supercomputación , dijo lo siguiente sobre el punto de referencia LINPACK: "El punto de referencia de Linpack es uno de esos fenómenos interesantes; casi cualquiera que lo conozca se burlará de su utilidad. Entienden su limitaciones, pero tiene mentes compartidas porque es el número que todos hemos comprado a lo largo de los años ". [21]
Según Dongarra, "los organizadores del Top500 están buscando activamente ampliar el alcance de los informes de referencia" porque "es importante incluir más características de rendimiento y firmas para un sistema dado". [22] Una de las posibilidades que se está considerando para ampliar el punto de referencia para el TOP500 es el HPC Challenge Benchmark Suite. [23] Con el advenimiento de las computadoras a petaescala , los bordes atravesados por segundo han comenzado a emerger como una métrica alternativa a los FLOPS medidos por LINPACK. Otra alternativa es el benchmark HPCG , propuesto por Dongarra. [24]
El problema del tiempo de ejecución
Según Jack Dongarra , se espera que aumente el tiempo de ejecución necesario para obtener buenos resultados de rendimiento con HPLinpack. En una conferencia celebrada en 2010, dijo que espera tiempos de ejecución de 2,5 días en "unos pocos años". [25]
Ver también
- LAPACK
Referencias
- ^ a b "El Linpack Benchmark, sitios de supercomputación TOP500" . Consultado el 10 de febrero de 2015 .
- ^ a b c d e Dongarra, Jack J .; Luszczek, Piotr; Petitet, Antoine (2003), "The LINPACK Benchmark: pasado, presente y futuro" (PDF) , Concurrencia y Computación: Práctica y Experiencia , John Wiley & Sons, Ltd., 15 (9): 803–820, doi : 10.1002 /cpe.728 , S2CID 1900724
- ^ Entrevista de Jack Dongarra por Sander Olson , archivado desde el original el 4 de marzo de 2016 , consultado el 13 de enero de 2012
- ^ Dongarra, JJ; Moler, CB; Manojo, JR; Stewart, GW (1979), LINPACK: guía del usuario , SIAM , ISBN 9780898711721
- ^ Dongarra, Jack (1988), "El punto de referencia LINPACK: una explicación" (PDF) , Supercomputación , Lecture Notes in Computer Science, Springer Berlin / Heidelberg, 297 : 456–474, doi : 10.1007 / 3-540-18991-2_27 , ISBN 978-3-540-18991-6
- ^ Benchmark Linpack de alto rendimiento (PDF) , consultado el 10 de febrero de 2015
- ^ Bailey, DH; Barszcz, E .; Barton, JT; Browning, DS; Carter, RL; Dagum, L .; Fatoohi, RA; Frederickson, PO; Lasinski, TA; Schreiber, RS; Simon, HD; Venkatakrishnan, V .; Weeratunga, SK (1991), "Resumen y resultados preliminares de las evaluaciones comparativas paralelas NAS" , Supercomputación : 158-165, doi : 10.1145 / 125826.125925 , ISBN 0897914597, S2CID 18046345 Parámetro desconocido
|conference=
ignorado ( ayuda ) - ^ "Preguntas frecuentes sobre LINPACK: ¿Puedo utilizar el método de Strassen al realizar los múltiplos de matrices en la prueba de HPL o para la ejecución de Top500?" . Consultado el 10 de febrero de 2015 .
- ^ "Preguntas frecuentes de LINPACK - ¿Con qué precisión debe ajustarse la solución?" . Consultado el 10 de febrero de 2015 .
- ^ "Programa de referencia Linpack en Fortran" . Consultado el 10 de febrero de 2015 .
- ^ "Programa de referencia Linpack en C" . Consultado el 10 de febrero de 2015 .
- ^ "Programa de referencia Linpack en Java" . Consultado el 10 de febrero de 2015 .
- ^ "HPL - Una implementación portátil del Benchmark Linpack de alto rendimiento para computadoras de memoria distribuida" . Consultado el 10 de febrero de 2015 .
- ^ "Algoritmo HPL" .
- ^ "Descripción general de HPL" . Consultado el 10 de febrero de 2015 .
- ^ "Una entrevista con la leyenda de la supercomputadora Jack Dongarra" . 2012-05-24. Archivado desde el original el 3 de febrero de 2013.
- ^ Haigh, Thomas (2004). "Una entrevista con Jack J. Dongarra" (PDF) .
LINPACK es un punto de referencia que la gente suele citar porque hay una base de datos histórica de información allí, porque es bastante fácil de ejecutar, es bastante fácil de entender y, en cierto sentido, captura lo mejor y lo peor de la programación.
- ^ Hammond, Steven (1995), Beyond Machoflops: Getting MPPs Into the Production Environment , archivado desde el original el 13 de julio de 2012
- ^ Gahvari, Hormozd; Hoemmen, Mark; Demmel, James; Yelick, Katherine (2006), "Benchmarking Sparse Matrix-Vector Multiply in Five Minutes", Taller de referencia de SPEC (PDF)
- ^ Dongarra, Jack J. (2007), "The HPC Challenge Benchmark: ¿Un candidato para reemplazar a Linpack en el Top500?", Taller de Benchmark de SPEC (PDF)
- ^ Christopher Mims (8 de noviembre de 2010). "Por qué la nueva supercomputadora de China es sólo técnicamente la más rápida del mundo" . Consultado el 22 de septiembre de 2011 .
- ^ Meuer, Martin (24 de mayo de 2002). "Una entrevista con la leyenda de la supercomputación jack dongarra" . Archivado desde el original el 3 de febrero de 2013 . Consultado el 10 de febrero de 2015 .
- ^ Luszczek, Piotr; Dongarra, Jack J .; Koester, David; Rabenseifner, Rolf; Lucas, Bob; Kepner, Jeremy; Mccalpin, John; Bailey, David; Takahashi, Daisuke (2005), Introducción a HPC Challenge Benchmark Suite (PDF)
- ^ Hemsoth, Nicole (26 de junio de 2014). "Nuevo HPC Benchmark ofrece resultados prometedores" . HPCWire . Consultado el 8 de septiembre de 2014 .
- ^ Dongarra, Jack J. (2010), LINPACK Benchmark con límites de tiempo en aceleradores multinúcleo y basados en GPU (PDF) Parámetro desconocido
|conference=
ignorado ( ayuda )
enlaces externos
- TOP500 LINPACK
- un punto de referencia LINPACK basado en la web
- Benchmark de LINPACK optimizado para Intel®