Outil d'analyse des toitures
L'outil d'analyse Roofline propose un modèle de performances visuel intuitif que vous pouvez utiliser pour comprendre les limites matérielles inhérentes qui affectent les performances de votre programme. Plus précisément, il se concentre sur la question de savoir si le programme est limité par la mémoire ou par le calcul, et sur la proximité des performances du programme avec les performances de pointe théoriques du matériel, représentées sous la forme d'une "ligne de toit".
Plates-formes compatibles
TPU: compatible
GPU: compatible (bêta)
Qu'est-ce qu'un graphique Roofline ?
Le graphique de toiture illustre la relation entre l'intensité opérationnelle (FLOPS par octet accessible) et les FLOPS par seconde atteints.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
La forme de "toit" est formée par la valeur la plus basse des FLOPS de pointe et des performances réalisables compte tenu de la bande passante de la mémoire et de l'intensité opérationnelle. Le point de crête indique l'intensité opérationnelle minimale requise pour atteindre le pic de FLOPS.
Pour en savoir plus sur les modèles roofline, consultez Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures ou l'article Roofline model sur Wikipedia.
Interpréter le graphique Roofline
En traçant l'intensité opérationnelle et les FLOPS obtenus pour différentes étapes, parties du programme ou opérations HLO individuelles sur le graphique de roofline, vous pouvez obtenir des insights sur les goulots d'étranglement des performances:
- Si un point de données se trouve sur la partie inclinée de la ligne de toit, les performances sont probablement limitées par la bande passante de la mémoire (limité par la mémoire). Augmenter l'intensité opérationnelle (effectuer plus de calculs par octet de données consultées) peut potentiellement améliorer les performances.
- Si un point de données se trouve sur la partie plate de la courbe, les performances sont probablement limitées par la capacité de calcul (liée au calcul). Dans ce cas, une augmentation supplémentaire de l'intensité opérationnelle peut ne pas entraîner de gains de performances significatifs, sauf si le pic de FLOPS du matériel peut être mieux utilisé.
- La distance d'un point de données par rapport à la ligne de toit indique le potentiel d'amélioration des performances. Une distance plus importante suggère qu'il existe des possibilités d'optimiser le programme pour mieux exploiter les capacités du matériel.
Composants d'interface
L'interface de l'outil d'analyse Roofline comporte plusieurs composants clés:
- Une section "Informations sur l'appareil" décrit les spécifications matérielles. Elles sont utilisées pour dessiner de manière statique la ou les "lignes de toit" du graphique.
- Graphique de toiture au niveau du programme avec des points de données correspondant aux éléments suivants :
- Durée totale du profil.
- Durée totale du profil, mais avec des données FLOPS/s dérivées des compteurs de performances matérielles plutôt que des modèles de coût par défaut calculés par le compilateur XLA.
- Moyenne des étapes complètes exécutées pendant la durée du profil (pour les tâches d'entraînement ; vous pouvez ignorer la terminologie des étapes pour les tâches d'inférence).
- Chaque étape complète exécutée pendant la durée du profil (pour les tâches d'entraînement ; vous pouvez ignorer la terminologie des étapes pour les tâches d'inférence).
- Le graphique de toiture présente également les caractéristiques suivantes :
- Vous pouvez choisir d'inclure ou d'exclure des opérations infeed/outfeed à l'aide du menu déroulant fourni.
- Si vous pointez sur l'un des points de données du graphique, des informations pertinentes supplémentaires s'affichent, telles que les valeurs de bande passante pour différentes mémoires, le temps total passé, etc.
- Tableau de statistiques au niveau du programme qui fournit des informations supplémentaires pour chaque point de données, comme le pourcentage d'utilisation maximale de la mémoire, le pourcentage de pic de taux de FLOPS, etc.
- Un deuxième graphique de toiture qui fournit des informations plus précises, avec des points de données représentés pour les 1 000 opérations les plus chronophages au cours de la période de profilage :
- Comme pour le graphique de toiture au niveau du programme, en pointant sur chaque point de données, vous obtenez des informations supplémentaires sur cette opération.
- Vous pouvez personnaliser les points de données affichés dans le graphique de différentes manières :
- Inclure/exclure les opérations d'infeed et de outfeed via un menu déroulant.
- Filtrage en fonction de catégories d'opérations spécifiques
- Filtrage des opérations liées à une ressource spécifique.
- Filtrage pour une opération nommée spécifique.
- Un deuxième tableau de statistiques, semblable au tableau au niveau du programme, fournit des informations supplémentaires pour chaque point de données.
Dans toutes les sections décrites ci-dessus, les mémoires suivantes sont compatibles:
- Pour les TPU: HBM, VMEM, CMEM (TPU v4 uniquement).
- Pour les GPU: HBM, L1/SharedMem.
- Les lignes correspondantes du graphique n'apparaissent que si des opérations au cours de la durée du profil étaient liées à cette mémoire. Par exemple, si toutes les opérations sont liées à la mémoire HBM ou au calcul, aucune ligne ne s'affiche pour VMEM ou CMEM.