stringtranslate.com

Modelo de línea de techo

Un ejemplo de modelo de línea de techo en su forma básica. Como muestra la imagen, la curva consta de dos límites de rendimiento específicos de la plataforma: el rendimiento máximo del procesador y un límite derivado del ancho de banda de la memoria. Ambos ejes están en escala logarítmica.

El modelo de línea de techo es un modelo de rendimiento visual intuitivo que se utiliza para proporcionar estimaciones de rendimiento de un núcleo informático determinado o una aplicación que se ejecuta en arquitecturas de procesador de múltiples núcleos , muchos núcleos o aceleradores , al mostrar las limitaciones inherentes del hardware y los beneficios potenciales y la prioridad de las optimizaciones . Al combinar localidad , ancho de banda y diferentes paradigmas de paralelización en una única cifra de rendimiento, el modelo puede ser una alternativa eficaz para evaluar la calidad del rendimiento obtenido en lugar de utilizar simples estimaciones de porcentaje de pico, ya que proporciona información tanto sobre la implementación como sobre la implementación. limitaciones inherentes al rendimiento.

El modelo de línea de techo más básico se puede visualizar trazando el rendimiento de punto flotante como una función del rendimiento máximo de la máquina [ vago ] [ se necesita aclaración ] , el ancho de banda máximo de la máquina y la intensidad aritmética. La curva resultante es efectivamente un límite de rendimiento bajo el cual existe el rendimiento del kernel o de la aplicación, e incluye dos límites de rendimiento específicos de la plataforma [ se necesita aclaración ] : un límite derivado del ancho de banda de la memoria y otro derivado del rendimiento máximo del procesador (consulte la figura de la derecha). ).

Términos relacionados y métricas de rendimiento

Trabajar

El trabajo denota el número de operaciones realizadas por un núcleo o aplicación determinada. [1] Esta métrica puede referirse a cualquier tipo de operación, desde el número de puntos de matriz actualizados, hasta el número de operaciones con números enteros y el número de operaciones de punto flotante (FLOP), [2] y la elección de uno u otro depende de la conveniencia. . Sin embargo, en la mayoría de los casos se expresa como FLOP . [1] [3] [4] [5] [6]

Tenga en cuenta que el trabajo es una propiedad del kernel o aplicación determinado y, por lo tanto, depende sólo parcialmente de las características de la plataforma.

Tráfico de memoria

El tráfico de memoria denota la cantidad de bytes de transferencias de memoria incurridas durante la ejecución del kernel o la aplicación. [1] A diferencia de , depende en gran medida de las propiedades de la plataforma elegida, como por ejemplo la estructura de la jerarquía de caché . [1]

Intensidad aritmética

La intensidad aritmética , también conocida como intensidad operativa , [3] [7] es la relación entre el trabajo y el tráfico de memoria : [1] y denota el número de operaciones por byte de tráfico de memoria. Cuando el trabajo se expresa como FLOP , la intensidad aritmética resultante será la relación entre las operaciones de punto flotante y el movimiento total de datos ( FLOP/byte ).

Línea del techo ingenua

Ejemplo de un gráfico ingenuo de la línea del tejado donde se informan dos núcleos . La primera (línea roja discontinua vertical) tiene una intensidad aritmética que está por debajo del límite máximo del ancho de banda (línea negra continua diagonal) y luego está vinculada a la memoria . En cambio, el segundo (correspondiente a la línea roja discontinua vertical más a la derecha) tiene una intensidad aritmética que está por debajo del techo de rendimiento máximo (línea negra sólida horizontal) y, por lo tanto, está vinculado a la computación .

La línea del techo ingenua [3] se obtiene aplicando un análisis simple de límites y cuellos de botella. [8] En esta formulación del modelo de línea de techo, solo hay dos parámetros, el rendimiento máximo y el ancho de banda máximo de la arquitectura específica , y una variable, la intensidad aritmética . El rendimiento máximo, generalmente expresado como GFLOPS , generalmente se puede derivar de la evaluación comparativa , mientras que el ancho de banda máximo, que hace referencia al ancho de banda máximo de DRAM para ser específico, se obtiene a través de manuales de arquitectura. [1] [3] La gráfica resultante, en general con ambos ejes en escala logarítmica , se deriva entonces mediante la siguiente fórmula: [1] donde es el rendimiento alcanzable, es el rendimiento máximo , es el ancho de banda máximo y es la intensidad aritmética . El punto en el que el rendimiento se satura en el nivel máximo de rendimiento , es decir, donde se unen el techo diagonal y horizontal, se define como punto de cumbrera. [4] El punto de cresta ofrece información sobre el rendimiento general de la máquina, proporcionando la intensidad aritmética mínima requerida para poder alcanzar el máximo rendimiento y sugiriendo de un vistazo la cantidad de esfuerzo requerido por el programador para lograr el máximo rendimiento. [4]

Un núcleo o aplicación determinada se caracteriza entonces por un punto dado por su intensidad aritmética (en el eje x). Luego, el rendimiento alcanzable se calcula dibujando una línea vertical que llega a la curva de la línea del techo. Por eso. Se dice que el kernel o la aplicación están vinculados a la memoria si . Por el contrario, si , se dice que el cálculo está vinculado a la computación . [1]

Agregar techos al modelo

La ingenua línea del techo proporciona sólo un límite superior (el máximo teórico) al rendimiento . Aunque todavía puede ofrecer información útil sobre el rendimiento alcanzable, no proporciona una imagen completa de lo que realmente lo limita. Si, por ejemplo, el núcleo o la aplicación considerada funciona muy por debajo del límite máximo de rendimiento, podría ser útil capturar otros límites de rendimiento, además del ancho de banda y el rendimiento máximos, para guiar mejor al programador sobre qué optimización implementar, o incluso evaluar el rendimiento. idoneidad de la arquitectura utilizada con respecto al kernel o aplicación analizada. [3] Los techos agregados imponen entonces un límite en el rendimiento alcanzable que está por debajo de la línea del techo real, e indican que el núcleo o la aplicación no puede superar ninguno de estos techos sin realizar primero la optimización asociada. [3] [4]

La trama de la línea del techo se puede ampliar en tres aspectos diferentes: comunicación , agregando techos de ancho de banda ; cómputo , sumando los llamados techos in-core ; y localidad , añadiendo los muros de la localidad .

Techos de ancho de banda

Los techos de ancho de banda son diagonales de ancho de banda colocadas debajo de la diagonal de ancho de banda máxima idealizada. Su existencia se debe a la falta de algún tipo de optimización arquitectónica relacionada con la memoria, como la coherencia de la caché , u optimización del software, como una mala exposición de la concurrencia (que a su vez limita el uso del ancho de banda). [3] [4]

Techos integrados

Los techos en el núcleo tienen una curva similar a la línea del techo debajo de la línea del techo real que puede estar presente debido a la falta de algún tipo de paralelismo . Estos límites limitan efectivamente el alto rendimiento que se puede alcanzar. El desempeño no puede exceder un techo interno hasta que se exprese y explote la falta subyacente de paralelismo. Los techos también pueden derivarse de manuales de optimización arquitectónica distintos de los puntos de referencia. [3] [4]

Muros de la localidad

Si se elimina la suposición ideal de que la intensidad aritmética es únicamente una función del núcleo y se tiene en cuenta la topología de la caché (y, por tanto, los errores de caché ), la intensidad aritmética claramente se vuelve dependiente de una combinación de núcleo y arquitectura. Esto puede resultar en una degradación del rendimiento dependiendo del equilibrio entre la intensidad aritmética resultante y el punto de cresta . A diferencia de los techos "correctos", las líneas resultantes en el trazado de la línea del techo son barreras verticales a través de las cuales la intensidad aritmética no puede pasar sin optimización. Por este motivo, se les denomina muros de localidad o muros de intensidad aritmética . [3] [4]

Ampliación del modelo

Desde su introducción, [3] [4] el modelo se ha ampliado aún más para dar cuenta de un conjunto más amplio de métricas y cuellos de botella relacionados con el hardware. Ya están disponibles en la literatura extensiones que tienen en cuenta el impacto de la organización NUMA de la memoria , [6] de la ejecución fuera de orden , [9] de las latencias de la memoria , [9] [10] y para modelar en un grano más fino. la jerarquía de caché [5] [9] para comprender mejor qué es lo que realmente limita el rendimiento e impulsar el proceso de optimización .

Además, el modelo se ha ampliado para adaptarse mejor a arquitecturas específicas y características relacionadas, como las FPGA . [11]

Ver también

Referencias

  1. ^ abcdefgh Ofenbeck, G.; Steinmann, R.; Caparrós, V.; Spampinato, DG; Püschel, M. (1 de marzo de 2014). "Aplicación del modelo de línea del techo". Simposio internacional IEEE 2014 sobre análisis del rendimiento de sistemas y software (ISPASS) . págs. 76–85. doi :10.1109/ISPASS.2014.6844463. ISBN 978-1-4799-3606-9. S2CID  206992177.
  2. ^ David A. Patterson, John L. Hennessy. Organización y diseño de ordenadores . pag. 543.
  3. ^ abcdefghij Williams, Samuel W. (2008). Rendimiento de ajuste automático en computadoras multinúcleo (Ph.D.). Universidad de California en Berkeley.
  4. ^ abcdefgh Williams, Samuel; Waterman, Andrés; Patterson, David (1 de abril de 2009). "Roofline: un modelo de rendimiento visual revelador para arquitecturas multinúcleo". Comunitario. ACM . 52 (4): 65–76. doi :10.1145/1498765.1498785. ISSN  0001-0782. S2CID  7766361.
  5. ^ abIlic , A.; Pratas, F.; Sousa, L. (1 de enero de 2014). "Modelo Roofline compatible con caché: actualización del loft". Cartas de arquitectura informática IEEE . 13 (1): 21-24. doi :10.1109/L-CA.2013.6. ISSN  1556-6056. S2CID  9208032.
  6. ^ ab Lorenzo, Oscar G.; Peña, Tomás F.; Cabaleiro, José C.; Pichel, Juan C.; Rivera, Francisco F. (31 de marzo de 2014). "Uso de un modelo de línea de techo extendido para comprender las afinidades de datos y subprocesos en los sistemas NUMA". Anales de programación multinúcleo y GPU . 1 (1): 56–67. ISSN  2341-3158.
  7. ^ "Modelo de rendimiento de la línea del techo". Laboratorio Nacional Lawrence Berkeley . Consultado el 19 de junio de 2016 .
  8. ^ Kourtis, Kornilios; Goumas, Georgios; Koziris, Nectarios (1 de enero de 2008). "Optimización de la multiplicación de matrices-vectores dispersos mediante compresión de índices y valores". Actas de la V conferencia sobre fronteras de la informática . CF '08. Nueva York, NY, Estados Unidos: ACM. págs. 87–96. CiteSeerX 10.1.1.140.9391 . doi :10.1145/1366230.1366244. ISBN  9781605580777. S2CID  8038147.
  9. ^ abc Cabezas, VC; Püschel, M. (1 de octubre de 2014). "Ampliación del modelo de línea de techo: análisis de cuellos de botella con restricciones de microarquitectura". Simposio internacional IEEE 2014 sobre caracterización de cargas de trabajo (IISWC) . págs. 222-231. doi :10.1109/IISWC.2014.6983061. ISBN 978-1-4799-6454-3. S2CID  33023605.
  10. ^ Lorenzo, OG; Peña, TF; Cabaleiro, JC; Pichel, JC; Rivera, FF (26 de marzo de 2014). "3DyRM: un modelo de línea de techo dinámico que incluye información de latencia de memoria". La revista de supercomputación . 70 (2): 696–708. doi :10.1007/s11227-014-1163-4. ISSN  0920-8542. S2CID  5318695.
  11. ^ da Silva, Bruno; Braeken, An; D'Hollander, Erik H.; Touhafi, Abdellah (1 de enero de 2013). "Modelado de rendimiento para FPGA: ampliación del modelo de línea de techo con herramientas de síntesis de alto nivel". Revista Internacional de Computación Reconfigurable . 2013 : 1–10. doi : 10.1155/2013/428078 . hdl : 1854/LU-4226966 . ISSN  1687-7195.

enlaces externos