Herramienta de análisis de techos

La herramienta de análisis de techo ofrece un modelo de rendimiento visual intuitivo que puedes usar para comprender las limitaciones inherentes del hardware que afectan el rendimiento de tu programa. Específicamente, se enfoca en si el programa está limitado por la memoria o por el procesamiento, y en qué medida el rendimiento del programa está cerca del rendimiento máximo teórico del hardware, representado como una “línea del techo”.

Plataformas compatibles

TPU: Compatible

GPU: Compatible (en versión beta)

¿Qué es el gráfico de techo?

El gráfico de techo visualiza la relación entre la intensidad operativa (FLOPS por byte accedido) y los FLOPS por segundo alcanzados.

\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]

La forma de "techo" está formada por el valor más bajo de los FLOPS máximos y el rendimiento que se puede lograr según el ancho de banda de la memoria y la intensidad operativa. El punto de cresta indica la intensidad operativa mínima necesaria para alcanzar los FLOPS máximos.

Puedes obtener más información sobre los modelos de techo en Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures o en el tema Roofline model en Wikipedia.

Cómo interpretar el gráfico de techo

Si trazas la intensidad operativa y los FLOPS obtenidos para diferentes pasos, partes del programa o operaciones individuales de HLO en el gráfico de techo, puedes obtener estadísticas sobre los cuellos de botella de rendimiento:

  • Si un dato se encuentra en la parte inclinada de la línea del techo, es probable que el rendimiento esté limitado por el ancho de banda de la memoria (limitado por la memoria). Aumentar la intensidad operativa (realizar más procesamiento por byte de datos a los que se accede) podría mejorar el rendimiento.
  • Si un dato se encuentra en la parte plana de la línea del techo, es probable que el rendimiento esté limitado por la capacidad de procesamiento (limitado por el procesamiento). En este caso, es posible que aumentar aún más la intensidad operativa no genere mejoras significativas en el rendimiento, a menos que se pueda aprovechar mejor el máximo de FLOPS del hardware.
  • La distancia de un dato de la línea del techo indica el potencial de mejora del rendimiento. Una distancia mayor sugiere que hay oportunidades para optimizar el programa y aprovechar mejor las capacidades del hardware.

Componentes de la interfaz

La interfaz de la herramienta de análisis de techos tiene varios componentes clave:

  • En una sección de información del dispositivo, se describen las especificaciones de hardware, que se usan para dibujar de forma estática las "líneas de techo" en el gráfico.
  • Un gráfico de techo a nivel del programa con datos que corresponden a lo siguiente:
    • Es la duración total del perfil.
    • La duración total del perfil, pero con datos de FLOPS/s derivados de los contadores de rendimiento de hardware en lugar de los modelos de costo predeterminados que calcula el compilador XLA.
    • Es un promedio de los pasos completos que se ejecutaron durante la duración del perfil (para trabajos de entrenamiento; puedes ignorar la terminología de pasos para trabajos de inferencia).
    • Cada paso completo que se ejecutó durante la duración del perfil (para trabajos de entrenamiento; puedes ignorar la terminología de pasos para trabajos de inferencia).
  • El gráfico de techo también tiene las siguientes características:
    • Puedes incluir o excluir operaciones de in-feed o out-feed con el menú desplegable proporcionado.
    • Si colocas el cursor sobre cualquiera de los datos del gráfico, aparecerá información adicional relevante, como los números de ancho de banda para diferentes memorias, el tiempo total dedicado, etcétera.
  • Una tabla de estadísticas a nivel del programa que proporciona detalles adicionales para cada dato, como el porcentaje de uso máximo de memoria, el porcentaje de tasa máxima de FLOPS, etcétera.
  • Un segundo gráfico de techo que proporciona información más detallada, con puntos de datos trazados para las 1,000 operaciones más costosas en tiempo durante el período de generación de perfiles:
    • Al igual que con el gráfico de techo a nivel del programa, si colocas el cursor sobre cada dato, se muestra información adicional sobre esa operación.
    • Puedes personalizar los datos que se muestran en el gráfico de las siguientes maneras:
      • Incluye o excluye operaciones de infeed y outfeed a través de un menú desplegable.
      • Filtrar categorías específicas de operaciones
      • Filtrar operaciones vinculadas a un recurso determinado
      • Filtrar por una operación específica con nombre
  • Una segunda tabla de estadísticas, similar a la tabla a nivel del programa, que proporciona detalles adicionales para cada dato

En todas las secciones descritas anteriormente, se admiten las siguientes memorias:

  • Para TPU: HBM, VMEM, CMEM (solo TPU v4).
  • Para GPUs: HBM, L1/SharedMem.
  • Las líneas correspondientes en el gráfico solo aparecen si hubo operaciones dentro de la duración del perfil que estaban vinculadas a esa memoria. Por ejemplo, si todas las operaciones están vinculadas a HBM o a Compute, no verás líneas para VMEM ni CMEM.