Tool zur Dachlinienanalyse
Das Tool zur Dachlinienanalyse bietet ein intuitives visuelles Leistungsmodell, mit dem Sie die Hardwareeinschränkungen nachvollziehen können, die sich auf die Leistung Ihres Programms auswirken. Insbesondere wird darauf geachtet, ob das Programm speicher- oder rechenlastig ist und wie nah die Leistung des Programms an der theoretischen Spitzenleistung der Hardware liegt, die als „Roofline“ dargestellt wird.
Unterstützte Plattformen
TPU: Unterstützt
GPU: Unterstützt (Beta)
Was ist das Roofline-Diagramm?
Das Dachliniendiagramm visualisiert die Beziehung zwischen Betriebsintensität (FLOPS pro Byte, auf das zugegriffen wird) und den erreichten FLOPS pro Sekunde.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
Die „Dach“-Form wird durch den niedrigeren Wert der Spitzen-FLOPS und der Leistung gebildet, die bei der Arbeitsspeicherbandbreite und der Betriebsintensität erreichbar ist. Der Wendepunkt gibt die minimale Betriebsintensität an, die erforderlich ist, um die Spitzen-FLOPS zu erreichen.
Weitere Informationen zu Roofline-Modellen finden Sie unter Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures oder im Wikipedia-Artikel Roofline-Modell.
Dachliniendiagramm auswerten
Wenn Sie die Betriebsintensität und die erzielten FLOPS für verschiedene Schritte, Programmteile oder einzelne HLO-Vorgänge im Roofline-Diagramm darstellen, erhalten Sie Informationen zu Leistungsengpässen:
- Wenn sich ein Datenpunkt im geneigten Teil der Dachlinie befindet, wird die Leistung wahrscheinlich durch die Arbeitsspeicherbandbreite begrenzt (speichergebunden). Durch eine Erhöhung der Betriebsintensität (mehr Berechnungen pro Byte zugegriffener Daten) kann die Leistung potenziell verbessert werden.
- Wenn sich ein Datenpunkt im flachen Teil der Dachlinie befindet, ist die Leistung wahrscheinlich durch die Rechenleistung begrenzt (rechenlastig). In diesem Fall führt eine weitere Erhöhung der Betriebsintensität möglicherweise nicht zu signifikanten Leistungssteigerungen, es sei denn, die Spitzen-FLOPS der Hardware können besser genutzt werden.
- Die Entfernung eines Datenpunkts von der Leistungsgrenze gibt Aufschluss über das Potenzial für eine Leistungssteigerung. Ein größerer Abstand weist darauf hin, dass es Möglichkeiten gibt, das Programm zu optimieren, um die Hardware besser zu nutzen.
Benutzeroberflächenkomponenten
Die Benutzeroberfläche des Roofline Analysis-Tools umfasst mehrere wichtige Komponenten:
- In einem Abschnitt mit Geräteinformationen werden die Hardwarespezifikationen beschrieben. Diese werden verwendet, um die „Grenzlinien“ im Diagramm statisch zu zeichnen.
- Ein Roofline-Diagramm auf Programmebene mit Datenpunkten, die den folgenden Werten entsprechen:
- Die Gesamtdauer des Profils.
- Die Gesamtdauer des Profils, jedoch mit FLOPS/s-Daten, die von Hardware-Leistungszählern stammen, anstatt von den Standardkostenmodellen, die vom XLA-Compiler berechnet werden.
- Ein Durchschnitt der gesamten Schritte, die während der Dauer des Profilerstellungszeitraums ausgeführt wurden (für Trainingsjobs; die Schrittterminologie für Inferenzjobs kann ignoriert werden).
- Jeder abgeschlossene Schritt, der während der Profildauer ausgeführt wurde (für Trainingsjobs; für Inferenzjobs können Sie die Schrittterminologie ignorieren).
- Das Dachliniendiagramm hat außerdem folgende Funktionen:
- Im Drop-down-Menü können Sie In-/Outfeed-Vorgänge ein- oder ausschließen.
- Wenn Sie den Mauszeiger auf einen der Datenpunkte im Diagramm bewegen, werden weitere relevante Informationen angezeigt, z. B. die Bandbreitenzahlen für verschiedene Speicher oder die Gesamtzeit.
- Eine Statistiktabelle auf Programmebene mit zusätzlichen Details zu jedem Datenpunkt, z. B. die maximale Arbeitsspeicherauslastung in % oder die maximale FLOPS-Rate in %.
- Ein zweites Roofline-Diagramm mit detaillierteren Informationen, in dem die Datenpunkte für die 1.000 zeitaufwendigsten Vorgänge während des Profilerzeitraums dargestellt sind:
- Wie beim Roofline-Diagramm auf Programmebene werden beim Bewegen des Mauszeigers auf einen Datenpunkt zusätzliche Informationen zu dieser Operation angezeigt.
- Sie können die im Diagramm angezeigten Datenpunkte auf folgende Weise anpassen:
- Über ein Drop-down-Menü können In- und Outfeed-Vorgänge ein- oder ausgeschaltet werden.
- Filtern nach bestimmten Kategorien von Vorgängen
- Filtern nach Vorgängen, die an eine bestimmte Ressource gebunden sind.
- Filtern nach einem bestimmten benannten Vorgang
- Eine zweite Statistiktabelle, die der Tabelle auf Programmebene ähnelt und zusätzliche Details zu jedem Datenpunkt enthält.
In allen oben beschriebenen Bereichen werden die folgenden Speicher unterstützt:
- Für TPUs: HBM, VMEM, CMEM (nur TPU v4)
- Für GPUs: HBM, L1/SharedMem.
- Die entsprechenden Linien im Diagramm werden nur angezeigt, wenn es während der Profildauer Operationen gab, die an diesen Arbeitsspeicher gebunden waren. Wenn beispielsweise alle Vorgänge entweder HBM- oder verarbeitungsgebunden sind, werden keine Zeilen für VMEM oder CMEM angezeigt.