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. 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. 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 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 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. CUTLASS için minimum gereksinimler şunlardır: 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. Aşağıda belirtilen işletim sistemlerinde test edilmiştir: CUTLASS, NVIDIA’nın Volta, Turing, Ampere, Ada, Hopper ve Blackwell mimarilerine dayanarak etkilidir. CUTLASS, başkaları tarafından kullanılmak üzere header-only bir kütüphane olarak sunulmaktadır. Uygulamalar, CUTLASS’ın 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.CUTLASS 3.8.0
Neler Yeni?
tmem
olarak ilk sınıf veri bölgesi olarak kullanılabilir hale getirilmesi.tmem->rmem
, rmem->tmem
ve smem->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.
tmem
den yükler ve tüm EVT füzyonları destekler.
Performans
CUTLASS Kütüphanesi
Layout
ve Tensor
nesnelerini içerir.Uyumluluk ve Gereksinimler
İşletim Sistemleri ve Donanım Desteği
Öğrenme ve Geliştirme Platformları
include/
dizinini projelerinde hedef almalıdır. CUTLASS’un birim testleri, örnekleri ve yardımcı araçları CMake ile oluşturulabilir.