Narzędzie Roofline Analysis Tool
Narzędzie Roofline Analysis udostępnia intuicyjny wizualny model wydajności, który możesz wykorzystać do zrozumienia ograniczeń sprzętowych, które wpływają na wydajność programu. W szczególności skupia się na tym, czy program jest ograniczony przez pamięć czy przez procesor oraz na tym, jak bardzo wydajność programu zbliża się do teoretycznej szczytowej wydajności sprzętu, reprezentowanej przez „dach”.
Obsługiwane platformy
TPU: obsługiwane
GPU: obsługiwane (w wersji beta).
Co to jest wykres Roofline
Wykres linii dachowej wizualizuje związek między intensywnością działania (FLOPS na bajt) a osiągniętą wartością FLOPS na sekundę.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
Kształt „dachu” jest określany przez niższą wartość szczytowego FLOPS i wydajności osiągalnej z uwzględnieniem przepustowości pamięci i intensywności działania. Punkt szczytowy wskazuje minimalną intensywność działania wymaganą do osiągnięcia szczytowej wartości FLOPS.
Więcej informacji o modelach roofline znajdziesz w artykule Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures (Roofline: przydatny wizualny model wydajności dla programów zmiennoprzecinkowych i architektur wielordzeniowych) oraz w artykule Roofline model (model roofline) na Wikipedii.
Interpretowanie wykresu Roofline
Na wykresie roofline możesz wyświetlić intensywność działania i osiągnięte FLOPS-y dla różnych kroków, części programu lub poszczególnych operacji HLO, aby uzyskać informacje o wąskich gardłach pod względem wydajności:
- Jeśli punkt danych znajduje się na nachylonym fragmencie linii dachowej, wydajność jest prawdopodobnie ograniczona przez przepustowość pamięci (ograniczona przez pamięć). Zwiększenie intensywności działania (przeprowadzenie większej liczby obliczeń na bajt danych) może potencjalnie poprawić wydajność.
- Jeśli punkt danych znajduje się na płaskiej części krzywej roofline, wydajność jest prawdopodobnie ograniczona przez możliwości obliczeniowe (ograniczenie ze względu na moc obliczeniową). W takim przypadku dalsze zwiększanie intensywności działania może nie przynieść znaczących wzrostów wydajności, chyba że uda się lepiej wykorzystać szczytową wartość FLOPS sprzętu.
- Odległość punktu danych od linii dachowej wskazuje na potencjalną poprawę skuteczności. Większa odległość sugeruje, że istnieją możliwości optymalizacji programu w celu lepszego wykorzystania możliwości sprzętu.
Komponenty interfejsu
Interfejs narzędzia Roofline Analysis składa się z kilku kluczowych elementów:
- Sekcja Informacje o urządzeniu zawiera specyfikację sprzętową, która służy do stałego rysowania „linii dachowej” na wykresie.
- Wykres dachów na poziomie programu z punktami danych odpowiadającymi tym elementom:
- Łączny czas trwania profilu.
- Całkowity czas trwania profilu, ale z danymi FLOPS/s pochodzącymi z liczników wydajności sprzętu, a nie z domyślnych modeli kosztów obliczanych przez kompilator XLA.
- Średnia liczba kroków wykonanych w czasie trwania profilu (w przypadku zadań treningowych; w przypadku zadań wnioskowania możesz zignorować terminologię kroków).
- Każdy pełny krok wykonany w czasie trwania profilu (w przypadku zadań treningowych; w przypadku zadań wnioskowania możesz zignorować terminologię kroków).
- Wykres dachówki zawiera też te funkcje:
- Za pomocą menu możesz uwzględnić lub wykluczyć operacje na danych wejściowych/wyjściowych.
- Najeżdżając kursorem na dowolny punkt danych na wykresie, możesz wyświetlić dodatkowe informacje, takie jak wartości przepustowości dla różnych pamięci, łączny czas spędzony na danej czynności itp.
- Tabela statystyk na poziomie programu, która zawiera dodatkowe informacje o każdym punkcie danych, takie jak maksymalne wykorzystanie pamięci (%), szczytowa częstotliwość FLOP (%) itp.
- Drugi wykres dachówki, który zawiera bardziej szczegółowe informacje, z punktami danych dla 1000 najbardziej czasochłonnych operacji w okresie profilowania:
- Podobnie jak w przypadku wykresu linii dachowej na poziomie programu, najeżdżanie kursorem na każdy punkt danych powoduje wyświetlenie dodatkowych informacji o danym operatorze.
- Punkty danych wyświetlane na wykresie możesz dostosowywać na te sposoby:
- Uwzględnianie lub wykluczanie operacji w plikach wejściowych i wyjściowych za pomocą menu.
- Filtrowanie według określonych kategorii operacji.
- Filtrowanie operacji związanych z określonym zasobem.
- Filtrowanie według konkretnej nazwanej operacji.
- Druga tabela statystyk, podobna do tabeli na poziomie programu, zawierająca dodatkowe informacje o każdym punkcie danych.
W opisanych powyżej sekcjach obsługiwane są następujące wspomnienia:
- W przypadku TPU: HBM, VMEM, CMEM (tylko TPU v4).
- W przypadku GPU: HBM, L1/SharedMem.
- Odpowiednie linie na wykresie pojawiają się tylko wtedy, gdy w czasie trwania profilu były jakieś operacje powiązane z tą pamięcią. Jeśli na przykład wszystkie operacje są ograniczone przez HBM lub procesor, nie zobaczysz wierszy dotyczących VMEM ani CMEM.