Roofline Analysis Tool
Lo strumento di analisi Roofline offre un modello di prestazioni visivo intuitivo che puoi utilizzare per comprendere le limitazioni hardware intrinseche che influiscono sul rendimento del tuo programma. In particolare, si concentra sul fatto che il programma sia vincolato dalla memoria o dall'elaborazione e su quanto le prestazioni del programma siano vicine alle prestazioni di picco teoriche dell'hardware, rappresentate come "linea di soglia".
Piattaforme supportate
TPU: supportata
GPU: supportata (in versione beta)
Che cos'è il grafico della linea del tetto
Il grafico della linea del tetto mostra la relazione tra intensità operativa (FLOPS per byte a cui si accede) e FLOPS al secondo raggiunti.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
La forma "a tetto" è formata dal valore più basso tra i FLOPS di picco e le prestazioni conseguibili in base alla larghezza di banda della memoria e all'intensità operativa. Il punto di massimo indica l'intensità operativa minima richiesta per raggiungere il picco di FLOPS.
Per scoprire di più sui modelli di roofline, consulta Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures o l'articolo Roofline model su Wikipedia.
Interpretazione del grafico della linea del tetto
Se nel grafico della linea di soglia riporti l'intensità operativa e i FLOPS raggiunti per diversi passaggi, parti del programma o singole operazioni HLO, puoi ottenere informazioni sui colli di bottiglia del rendimento:
- Se un punto dati si trova nella parte inclinata della linea di confine, il rendimento è probabilmente limitato dalla larghezza di banda della memoria (limitato dalla memoria). L'aumento dell'intensità operativa (esecuzione di più calcoli per byte di dati acceduti) potrebbe potenzialmente migliorare le prestazioni.
- Se un punto dati si trova nella parte piana della linea di confine, il rendimento è probabilmente limitato dalla capacità di calcolo (limitato dal calcolo). In questo caso, un ulteriore aumento dell'intensità operativa potrebbe non portare a significativi miglioramenti delle prestazioni, a meno che i FLOPS di picco dell'hardware non possano essere utilizzati meglio.
- La distanza di un punto dati dalla linea di massima efficienza indica il potenziale miglioramento del rendimento. Una distanza maggiore suggerisce che esistono opportunità per ottimizzare il programma in modo da utilizzare meglio le funzionalità dell'hardware.
Componenti dell'interfaccia
L'interfaccia dello strumento di analisi della linea del tetto ha diversi componenti chiave:
- Una sezione Informazioni sul dispositivo descrive le specifiche hardware, che vengono utilizzate per disegnare in modo statico le "linee di soglia" sul grafico
- Un grafico della linea di confine a livello di programma con punti di dati corrispondenti a quanto segue:
- La durata totale del profilo.
- La durata totale del profilo, ma con dati FLOPS/s ricavati dai contatori delle prestazioni hardware anziché dai modelli di costo predefiniti calcolati dal compilatore XLA.
- Una media dei passaggi completati eseguiti durante la durata del profilo (per i job di addestramento; puoi ignorare la terminologia dei passaggi per i job di inferenza).
- Ogni passaggio completo eseguito durante la durata del profilo (per i job di addestramento; puoi ignorare la terminologia dei passaggi per i job di inferenza).
- Il grafico della linea del tetto include anche le seguenti funzionalità:
- Puoi scegliere di includere o escludere le operazioni infeed/outfeed utilizzando il menu a discesa fornito.
- Se passi il mouse sopra uno dei punti dati del grafico, vengono visualizzate altre informazioni pertinenti, ad esempio i valori di larghezza di banda per diverse memorie, il tempo totale trascorso e così via.
- Una tabella di statistiche a livello di programma che fornisce ulteriori dettagli per ciascun punto dati, ad esempio la percentuale di utilizzo massimo della memoria, la percentuale di frequenza FLOP di picco e così via.
- Un secondo grafico della linea di soglia che fornisce informazioni più granulari, con i punti dati tracciati per le 1000 operazioni più in termini di tempo durante il periodo di profiling:
- Come per il grafico della linea di confine a livello di programma, se passi il mouse sopra ciascun punto dati vengono visualizzate ulteriori informazioni sull'operazione.
- Puoi personalizzare i punti dati visualizzati sul grafico nei seguenti modi:
- Inclusione/esclusione di operazioni infeed e outfeed tramite un menu a discesa.
- Filtrare per categorie specifiche di operazioni.
- Filtro per le operazioni vincolate da una determinata risorsa.
- Filtrare in base a un'operazione denominata specifica.
- Una seconda tabella delle statistiche, simile a quella a livello di programma, che fornisce dettagli aggiuntivi per ogni punto dati.
In tutte le sezioni descritte sopra, sono supportati i seguenti ricordi:
- Per le TPU: HBM, VMEM, CMEM (solo TPU v4).
- Per le GPU: HBM, L1/SharedMem.
- Le linee corrispondenti nel grafico vengono visualizzate solo se sono state eseguite operazioni all'interno della durata del profilo vincolate da quella memoria. Ad esempio, se tutte le operazioni sono vincolate all'HBM o al calcolo, non vedrai righe per VMEM o CMEM.