CUTLASS 3.8.0
CUTLASS 3.8.0 – Ocak 2025
CUTLASS, CUDA için yüksek performanslı matris-matris çarpımı (GEMM) ve ilgili hesaplamaları uygulamak için kullanılan bir dizi C++ şablonlarından oluşur. Bu koleksiyon, cuBLAS ve cuDNN‘de kullanılan veri hareketi stratejileri gibi, hiyerarşik ayrıştırma yöntemleri ile geliştirilmiştir. CUTLASS, bu “hareket eden elemanları” yeniden kullanılabilir, modüler yazılım bileşenlerine ayrıştırır ve bunları C++ şablon sınıfları ile soyutlayarak kullanır. Farklı düzeylerdeki paralelleştirme hiyerarşileri için özel eğilim boyutları, veri türleri ve diğer algoritmik politikalar ile özelleştirilebilir ve ayarlanabilir. Bu sağladığı esneklik, kullanıcıların onları özel çekirdekler ve uygulamalar içerisinde bileşen olarak daha kolay kullanmalarını sağlar.
Çeşitli uygulamaları desteklemek için CUTLASS, karışık hassasiyetli hesaplama desteği sunar. Bu, FP64, FP32, TF32, FP16, BF16, tensor çekirdek talimatları aracılığıyla FP32 emülasyonu, 8b kayan nokta türleri (e5m2 ve e4m3), blok ölçekli veri türleri (NVIDIA NVFP4 ve OCP standartları MXFP4, MXFP6, MXFP8), dar tam sayılar (4 ve 8b işaretli ve işaretsiz tam sayılar) ve ikili 1b veri türleri gibi çeşitli spesifik veri hareketleri ve çarpma-toplama soyutlamalarını içerir. CUTLASS, NVIDIA’nın Volta, Turing, Ampere, Ada, Hopper ve Blackwell mimarileri tarafından uygulanan programlanabilir, yüksek verimli Tensor Core hedef alarak optimal matris çarpma işlemleri geliştirmektedir.
Neler Yeni?
CUTLASS 3.8, NVIDIA Blackwell SM100 mimarisini destekleyen ilk sürümdür. Blackwell’in yeni özellikleri hakkında daha fazla bilgi için, lütfen CUDA 12.8 için PTX belgelerine başvurun.
- Blackwell mimarisi için yeni CuTe yapı taşı desteği:
- Beşinci nesil Blackwell Tensor Core talimatları (TCGen05).
- Tensor Bellek Hızlandırıcısı için uzantılar.
- Blackwell’in yeni tensor belleğinin
tmem
olarak ilk sınıf veri bölgesi olarak kullanılabilir hale getirilmesi. tmem->rmem
,rmem->tmem
vesmem->tmem veri hareket talimatları
nın CuTe içerisinde kopya atomları olarak açığa çıkarılması.make_tmem_copy()
yardımcı yöntemi ile tmem kopya atomları için karo kopyaları oluşturulmasını kolaylaştırma.- Yeni LDSM varyantları için CuTe Kopya atomlarıyla destek.
- Blackwell mimarisi için yeni CUTLASS yapı taşları:
- Çeşitli dar hassasiyet FP4, FP6 ve FP8 formatları.
- Blackwell’a özgü senkronizasyonu uygulayan hatlar.
- İleri tercihli ve yedek küme şekilleri destekleyen küme başlatma kontrol API’si.
- Veri türleri: NVFP4, MXFP4, MXFP6 ve MXFP8 gibi tüm desteklenen eleman ve ölçek faktörü türleri.
- Blackwell’ın Küme Başlatma Kontrolü (CLC) özelliğini kullanarak GEMM ve stream-K için dinamik süreklilik planlama yapan karo programlayıcıları.
- Test yatağı ve referans kontrol kodlarında bir dizi uzantı.
- Blackwell çekirdeklerine CUTLASS 3.x API’sinde tam destek:
- Blackwell özel çekirdek katmanları ve
- Blackwell’a özel olarak ayarlanmış yeni bir wave özel tarifini uygular.
- CLC tabanlı karo planlaması, tercih edilen küme ve akümülatörlerin TMEM tabanlı çift bellek kullanımı gibi tüm yeni özellikleri kullanır.
- Tüm çekirdek türleri için her yerde akıcı yük dengelemesi için bileşen planlayıcı desteği.
- Blackwell kolektif ana döngüleri, TCGen05 MMA talimatlarını hedef alır (SS ve TS),
- Blok ölçekli veri türleri, işaretli nesne desteği olmadan GEMM ile grup performansıdır.
- Blok ölçekleme desteğiyle grup GEMM ile non-bloklardaki veri türları içerir.
- Yeni kollektif ana döngü, fprop, dgrad ve wgrad desteği sağlar.
- Yeni GEMM, konvülasyon ve epilog dağıtım politikaları.
- Blackwell epilogu, akümülatörleri
tmem
den yükler ve tüm EVT füzyonları destekler.
- CUTLASS kütüphanesi ve profil oluşturucu entegrasyonu, çekirdek emisyonu, profil oluşturma ve doğrulama için blok ölçekli veri türlarını destekler.
- Blackwell’ı hedef alan 3.x API kullanımını gösteren örnekler:
- Temel FP16 ve FP8 GEMM’lerden oluşan örnekler.
- Opt-in kolektif oluşturucu planlamaları gösterir.
- Blackwell’ın yerel blok ölçekli Tensor Core’ları ile blok ölçekli veri türleri hedef alan NVFP4 girişleri ile BF16 çıkış örnekleri.
- GEMM örnekleri, Blackwell’ın yeni tercih edilen küme desteği ile artan iş yükü için yapılmıştır.
- CLC’ye dayalı yük dengelemesi ile GEMM örnekleri.
- GEMM örneği sade FP8 veri girişleri için.
- Çarpışma çekirdekleri fprop, dgrad ve wgrad örnekleri içerir.
- Fused multi-head attention fprop kernel.
- Blackwell özel çekirdek katmanları ve
Performans
CUTLASS primitifleri son derece etkilidir. Cihaz çapında GEMM çekirdekleri oluşturulduğunda, teorik maksimum verimliliğin neredeyse tamamını sergilerler. Aşağıdaki şekilde, CUTLASS 3.8’in çeşitli girdi ve çıktı veri türlerinde, NVIDIA Blackwell SM100 mimarisi üzerinde teorik tepe kullanımının % olarak performansı gösterilmektedir.
CUTLASS Kütüphanesi
CUTLASS 3.0, CuTe adında yeni bir ana kütüphane tanıtmaktadır. Bu kütüphane, cihaz katmanları ve veri düzenleri üzerinde tanımlama ve manipülasyon için C++ CUDA şablonları içerir. CuTe, veri türünü, şekli ve bellekteki düzeni kompakt bir şekilde tanımlayan Layout
ve Tensor
nesnelerini içerir.
CuTe, matrislerin ve tensörlerin bellekte nasıl düzenlendiğini tanımlar. Bu düzenler, aynı zamanda, yaygın işlemleri çok daha kolay tasarlayıp uygulamak için bir araya getirilebilir ve işlevsel bileşim ile manipüle edilebilir.
Uyumluluk ve Gereksinimler
CUTLASS için minimum gereksinimler şunlardır:
- Mimari: Volta (hesap yeteneği 7.0)
- Derleyici: En az C++17 desteklemelidir.
- Gerekli CUDA Araç Kiti sürümü: 11.4
CUTLASS, C++17 host derleyicisi gerektirir ve CUDA 12.8 Toolkit ile kurulduğunda en iyi performansı gösterir. Ayrıca, CUDA 11.4, 11.5, 11.6, 11.7, 11.8 ve 12.x sürümleri ile de uyumludur.
İşletim Sistemleri ve Donanım Desteği
Aşağıda belirtilen işletim sistemlerinde test edilmiştir:
- Ubuntu 18.04
- Ubuntu 20.04
- Ubuntu 22.04
CUTLASS, NVIDIA’nın Volta, Turing, Ampere, Ada, Hopper ve Blackwell mimarilerine dayanarak etkilidir.
Öğrenme ve Geliştirme Platformları
CUTLASS, başkaları tarafından kullanılmak üzere header-only bir kütüphane olarak sunulmaktadır. Uygulamalar, CUTLASS’ın include/
dizinini projelerinde hedef almalıdır. CUTLASS’un birim testleri, örnekleri ve yardımcı araçları CMake ile oluşturulabilir.
Tüm bu unsurlar, etkili bir GEMM uygulamak amacıyla internette daha çok belgelenmiştir ve Hızlı Başlangıç Rehberi‘nin üzerinden detaylara ulaşabilirsiniz.