Roofline Analiz Aracı
Roofline Analizi aracı, programınızın performansını etkileyen donanım sınırlamalarını anlamak için kullanabileceğiniz sezgisel bir görsel performans modeli sunar. Özellikle, programın bellek sınırlı veya bilgi işlem sınırlı olup olmadığına ve programın performansının, donanımın teorik maksimum performansına ne kadar yakın olduğuna odaklanır. Bu performans, "tavan çizgisi" olarak gösterilir.
Desteklenen Platformlar
TPU: Desteklenir
GPU: Desteklenir (beta sürümünde)
Çatı çizgisi grafiği nedir?
Çatı çizgisi grafiği, işlem yoğunluğu (erişilen bayt başına FLOPS) ile saniye başına elde edilen FLOPS arasındaki ilişkiyi görselleştirir.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
"Çatı" şekli, en yüksek FLOPS ile bellek bant genişliği ve işlem yoğunluğu göz önüne alındığında elde edilebilecek performansın düşük değerlerinden oluşur. Sırt noktası, en yüksek FLOPS değerine ulaşmak için gereken minimum işlem yoğunluğunu gösterir.
Roofline modelleri hakkında daha fazla bilgiyi Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures (Roofline: Kayan Nokta Programları ve Çok Çekirdekli Mimariler İçin Anlamlı Bir Görsel Performans Modeli) başlıklı makalede veya Wikipedia'daki Roofline model konusunda bulabilirsiniz.
Çatı çizgisi grafiğini yorumlama
İşlem yoğunluğunu ve farklı adımlar, programın bölümleri veya ayrı HLO işlemleri için elde edilen FLOPS'leri çatı çizgisi grafiğinde göstererek performans darboğazları hakkında bilgi edinebilirsiniz:
- Bir veri noktası, çatı çizgisinin eğimli kısmında yer alıyorsa performans büyük olasılıkla bellek bant genişliğiyle sınırlıdır (bellek sınırlamalı). İşlem yoğunluğunu artırmak (erişilen her bayt veri için daha fazla hesaplama yapmak), performansı artırabilir.
- Bir veri noktası, çatı çizgisinin düz kısmında yer alıyorsa performans büyük olasılıkla bilgi işlem kapasitesi tarafından sınırlandırılmıştır (bilgi işleme bağlı). Bu durumda, donanımın en yüksek FLOPS'ı daha iyi kullanılamadığında işlem yoğunluğu daha da artırıldığında önemli performans kazanımları elde edilemeyebilir.
- Bir veri noktasının çatı çizgisine olan mesafesi, performans iyileştirme potansiyelini gösterir. Daha büyük bir mesafe, programı donanımın özelliklerinden daha iyi yararlanacak şekilde optimize etme fırsatları olduğunu gösterir.
Arayüz Bileşenleri
Roofline Analizi aracı arayüzünde birkaç temel bileşen bulunur:
- Cihaz bilgileri bölümünde donanım özellikleri açıklanır. Bu özellikler, grafikte "tavan çizgilerini" statik olarak çizmek için kullanılır.
- Aşağıdakilere karşılık gelen veri noktaları içeren program düzeyinde bir üst sınır grafiği:
- Toplam profil süresi.
- Toplam profil süresi, ancak XLA derleyicisi tarafından hesaplanan varsayılan maliyet modelleri yerine donanım performans sayaçlarına dayalı FLOPS/s verileri ile.
- Profil süresi boyunca yürütülen tamamlanmış adımların ortalaması (eğitim işleri için; çıkarım işleri için adım terminolojisini yoksayabilirsiniz).
- Profil süresi boyunca yürütülen her bir tam adım (eğitim işleri için; çıkarım işleri için adım terminolojisini yoksayabilirsiniz).
- Çatı çizgisi grafiğinde aşağıdaki özellikler de bulunur:
- Sağlanan açılır menüyü kullanarak feed'e/feed'den veri aktarma işlemlerini dahil edebilir veya hariç tutabilirsiniz.
- Fareyle grafikteki veri noktalarının üzerine geldiğinizde farklı belleklerin bant genişliği sayıları, harcanan toplam süre gibi alakalı ek bilgiler gösterilir.
- Her veri noktası için maksimum bellek kullanımı yüzdesi, en yüksek FLOP oranı yüzdesi gibi ek ayrıntılar sağlayan program düzeyinde bir istatistik tablosu.
- Profil oluşturma döneminde en çok zaman harcayan ilk 1.000 işlem için noktaların çizildiği, daha ayrıntılı bilgiler sağlayan ikinci bir çatı çizgisi grafiği:
- Program düzeyindeki tavan çizgisi grafiğinde olduğu gibi, fareyle her bir veri noktasının üzerine geldiğinizde ilgili işlem hakkında ek bilgiler gösterilir.
- Grafikte gösterilen veri noktalarını aşağıdaki şekillerde özelleştirebilirsiniz:
- Açılır menüden feed'e besleme ve feed'den besleme işlemlerini dahil etme/hariç tutma.
- Belirli işlem kategorilerine göre filtreleme
- Belirli bir kaynağa bağlı işlemler için filtreleme.
- Belirli bir adlandırılmış işleme göre filtreleme.
- Program düzeyindeki tabloya benzer şekilde, her veri noktası için ek ayrıntılar sağlayan ikinci bir istatistik tablosu.
Yukarıda açıklanan tüm bölümlerde aşağıdaki anılar desteklenir:
- TPU'lar için: HBM, VMEM, CMEM (yalnızca TPU v4).
- GPU'lar için: HBM, L1/SharedMem.
- Grafikteki ilgili çizgiler yalnızca profil süresi içinde bu belleğe bağlı işlemler varsa görünür. Örneğin, tüm işlemler HBM veya bilgi işleme bağlıysa VMEM veya CMEM satırlarını görmezsiniz.