NVIDIA CUDA-X matematik kütüphaneleri, geliştiricilerin birden fazla yüksek performans alanında hızlandırılmış uygulamaları dağıtmalarını sağlayan temel sayısal yapı taşlarını sunar. Bu alanlar arasında yapay zeka ve bilimsel hesaplama gibi alanlar bulunmaktadır.
cuBLAS, matris ve vektör işlemleri için NVIDIA donanımı üzerinde en iyi performansı elde etmek amacıyla özel olarak ayarlanmış, son derece optimizasyonlu temel lineer cebir alt rutinleri koleksiyonudur. Ayrıca, kullanımı kolay ve tanıdık API’ler sunar.
NVIDIA CUDA Toolkit 13.0 Güncellemesi 2’deki en son cuBLAS güncellemesi, çift hassasiyetli (FP64) matris çarpımları için performansı önemli ölçüde artıran yeni API’ler ve uygulamalar tanıtmaktadır. Bu, Tensor Core emülasyonu ile sağlanmaktadır ve bu emülasyon, NVIDIA GB200 NVL72 ve NVIDIA RTX PRO 6000 Blackwell Server Edition gibi GPU mimarilerindeki Tensor Core’larda kullanılır. FP32 ve FP64 emülasyonu için GPU uyumluluğu hakkında kapsamlı bilgiler için cuBLAS belgelendirmesine başvurabilirsiniz.
Bu yeni emüle edilmiş FP64 matmul uygulaması, yakın zamanda piyasaya sürülen tek hassasiyetli (FP32) matmul emülasyonunu tamamlamaktadır. Geliştiriciler, FP64 matris çarpımlarında gereken hassasiyeti ayarlayabilir, ancak varsayılan olarak cuBLAS, yerel donanım kadar veya daha iyi bir hassasiyet sunar. Bu işlem sırasında, bir işlemin FP emülasyonu (hassasiyet korunduğunda) veya yerel donanım kullanarak daha iyi performans gösterip göstermeyeceğini otomatik olarak değerlendirir ve en uygun uygulamayı seçer.
cuBLAS Yetenekleri
Bu yazı, CUDA Toolkit 13.0 Güncellemesi 2’deki cuBLAS yeteneklerini aşağıdaki gibi açıklamaktadır:
- Tensor Core performansına sorunsuz erişim sağlama; tanıdık ve basit geliştirici API’leri yoluyla
- Blackwell BF16 tensor çekirdekleri ile FP32 emülasyonu; yerel FP32 matris çarpımına göre artan performans sağlarken hassasiyeti korur
- Blackwell INT8 tensor çekirdekleri ile FP64 emülasyonu; güvenli, otomatik bir performans artışı sağlar ve yerel yürütmeye geri dönüş olanağı sunar
- Çeşitli yazılım alanları ve donanım platformlarında artan performans için FP emülasyonu
Bu, FP64 matmul emülasyonunun ilk sürümüdür ve gelecekte daha fazla gelişme beklenmektedir.
FP Emülasyonu Uygulamada
cuBLAS kütüphanesi, matmul emülasyonu için iki versiyon sunmaktadır: BF16x9 algoritması FP32 için ve Ozaki Şeması FP64 için. BF16x9 algoritması, Blackwell BF16 tensor çekirdeklerini kullanarak normal ve alt normal FP32 değerlerini güvenli bir şekilde emüle etmek için kullanılabilecek statik bir ayrıştırma sağlar. Ancak, FP64 emülasyonu ile ilgili yaygın bir zorluk, problemin sayısallarının farklı temsiller gerektirmesidir.
Başka bir deyişle, tek bir yapılandırma tüm FP64 değerleriniperformanslı ve doğru bir şekilde emüle edemez. Özellikle, Ozaki Şeması, operandların üsleri hizalandıktan sonra sabit nokta temsili kullandığından, gerekli “mantissa bitleri” veri bağımlıdır ve IEEE 754 FP64 temsilindeki 53 bit veya daha fazlasına eşit veya daha fazla doğruluk sağlamak için gereklidir.
Bu sorunu çözmek için cuBLAS kütüphanesi, emülasyonu daha verimli bir şekilde kullanmak için girişleri analiz eden otomatik dinamik hassasiyet (ADP) çerçevesi dahil edilmiştir. Eğer emülasyon güvenli bir şekilde kullanılabilirse, emülasyon parametreleri otomatik olarak yapılandırılır ve bu sayede FP64 matmul’a göre eşit veya daha iyi bir doğruluk sağlanmış olur.
Uygulama Sonuçları
Hava tahmini veya iklim modelleme uygulamaları, yerkürenin atmosferi, okyanusları ve diğer sistemleri içindeki karmaşık fiziği simüle ederken, hesaplamaları gerçekleştirmek amacıyla bir ızgara gerekmektedir. Açık kaynak ecTrans kütüphanesi, hava tahminleri için kullanılan Entegre Tahmin Sistemi (IFS) için ızgara tabanlı dönüşümleri gerçekleştiren lineer cebir işlemlerine dayanır.
Sekil 1’de görüldüğü gibi, NVIDIA Blackwell Tensor Core’ları kullanarak FP32 emülasyonu, ecTrans’te matris çarpımı hesaplamalarına %240 performans artışı sağlamaktadır.

Artan performansın yanı sıra, FP emülasyonu ile elde edilen sayısal hassasiyet, yerel FP32 kullanıldığında elde edilen sonuçlarla eşit veya daha üstündür. Bunu doğrulamak için, gerçek verilerden elde edilen 1.000 ardışık ileri ve geri dönüşüm işlem tekrarlandı. Bu süreçte, BF16x9 FP emülasyonu kullanırken hız (U ve V) ve sıcaklık (T) ile ilgili hata dağılımları takip edildi ve standart FP32 hassasiyeti ile elde edilen sonuçlarla karşılaştırıldı.

Kesirli hataların olasılık yoğunluk fonksiyonları, FP32, TF32 ve BF16x9 FP emülasyonu arasında gösterilmektedir. Bu grafikler, hız ve sıcaklık rastgele örneklendiğinde bu hataların karşılaşılma olasılığını gösterir. Eğrilerin 0 etrafında yoğunlaşması, temel uygulamanın daha doğru olduğunu gösterir.
TF32’nin hız grafiklerinde yer almadığı görünmektedir çünkü büyük hata terimleri vardır. Daha büyük hataların ve sıcaklıkların görünmesi, hava modellemenin hassasiyeti üzerine etkisini gösterir. Ancak, BF16x9 FP emülasyonu elde edilen sonuçların kabul edilebilir sınırlar içinde kalmasına neden olur ve yerel FP32 ile karşılaştırıldığında aynı veya daha iyi derecede doğru sonuçlar elde edilmiştir.
Uygulama Sonuçları: BerkeleyGW
BerkeleyGW kodu, malzemelerin fiziksel özelliklerini incelemek için kullanılan bir uygulamadır ve bu, elektronların enerji durumlarındaki değişimlerin nasıl ortaya çıktığını araştırmak için kullanılır. Bu, liderlik konumundaki süper bilgisayarlarda tam ölçekli çalışmak üzere tasarlanmış kütlece paralel bir kod yapısına sahiptir. BerkeleyGW ile GPU kullanıldığında, CPU yalnızca uygulamasına göre %86 hız artışı sağlamak mümkündür ve FP emülasyonu ile daha da hızlandırılabilir.
BerkeleyGW’nin Epsilon modülündeki CHISUM rutininde emüle edilmiş karmaşık FP64 matmullarının (ZGEMM) kullanılması, doğruluk ile performans arasında en iyi dengeyi sağlamak için esneklik sunar. Varsayılan olarak, cuBLAS kullanıcıların FP64 düzeyindeki hassasiyetle aynı veya daha iyi sonuçları garanti edecek parametreleri belirlemek için ADP çerçevesini kullanır. Bu özellik otomatik olarak sağlanır ve aşağıdaki gibi performans kazançlarına yol açar.

CUBLAS API, kullanıcıların FP64 emülasyon işlemlerinde kullanılan hassasiyeti daha da ayarlamasına olanak tanır. BerkeleyGW için iki durum ölçülmüştür. Varsayılan ADP ayarı ile FP emülasyonu ve manuel olarak ayarlanan 55 mantissa bitleri durumu, karşılaştırma değerlerine göre 10E-10 toleransına kadar hassasiyet sağlamakta ve 55 mantissa bitlerinin kullanıldığı durum, daha fazla hız kazancı sunmaktadır.
Performans farkı, ADP’nin 55 mantissa bitinden fazlasını gerektirdiğini belirlemesinden kaynaklanmaktadır; ancak manuel olarak ayarlanan 55 mantissa bitleri, bu testler için uygulama düzeyindeki hassasiyet üzerinde bir etki yapmamaktadır. Daha fazla performans istendiğinde, cuBLAS API’leri, emülasyon sırasında kullanılan hassasiyetin ayarlanmasına olanak tanır ve elde edilen sonuçların uygulama gereksinimlerini karşılayıp karşılamadığını keşfetmenizi sağlar.
Uygulama Sonuçları: Quantum Espresso
Açık kaynak Quantum Espresso (QE), dünya genelinde yoğunluk fonksiyonu teorisi (DFT) temelinde malzeme bilim hesaplamaları için kullanılan uygulamaları içeren bir koleksiyondur. Bu uygulamaların temeli, hem dağıtılmış hesaplama hem de bir düğüde ince paralellik için yüksek oranda optimize edilmiştir.
QE, atomların ve malzemelerin temel durum enerjilerini belirlemek için her adımda operatörler uygulamak amacıyla verimli çift hassasiyetli GEMM kullanmaktadır. Çift hassasiyetli GEMM kullanımı, birçok diğer DFT tabanlı uygulama için benzerlik göstermektedir ve bu nedenle FP emülasyonunun yarattığı performans iyileştirmelerinin Quantum Espresso için de geçerli olması beklenmektedir.
Resim 4’te görüldüğü üzere, Ausurf benchmark veri seti, FP emülasyonu etkinleştirildiğinde QE’nin sayısal sonuçlarının kalitesi ve performansını ölçmek için kullanılmıştır.

Şekil 4, emülasyon ADP ile %150 sonlandırma hızı artışı sağlarken, 39 mantissa bitlerine kadar yapılan daha fazla ayarlama neredeyse %300 hız artışı elde edilmektedir. Tüm yapılandırmalar arasında, hassasiyet sonuçları birbirinden ayırt edilemezken, emüle edilmiş FP64 ile 39 mantissa bitleri kullanıldığında uygulama çıkış değerleri 12 (on taban) anlamlı rakama kadar tutarlı olacaktır.
ADP ile 55 mantissa bitleri arasındaki performans farkı, ADP çerçevesinin IEEE 754 FP64 seviyesindeki hassasiyeti sağlamak için daha fazla mantissa bitlerine ihtiyaç duyduğunu belirlemesindendir. Ancak pratikte, daha az mantissa bitleri kullanılmasının ölçülen uygulama düzeyinde hassasiyet üzerinde etkisi yoktur.
Benchmark Sonuçları: Isı Haritaları
FP emülasyonu sayesinde uygulama performansındaki artışların yanı sıra, emülasyonun uygulanabilirlik alanını anlamak da önemlidir. Şekil 5-7’de gösterilen üç ısı haritası, farklı matris şekillerinde emülasyon FP32 ve FP64 kullanımıyla elde edilen performans artışlarını göstermektedir.



Üçü de ısı haritası, orta ve büyük problem şekillerinde dikkate değer performans artışlarını göstermektedir. Ayrıca, Şekil 6 ve 7’de ADP çerçevesi 55 mantissa bitleri kullanmaktadır ve emülasyon denemeleri için çok küçük olan problem kümelerinde yerel FP64 algoritmalarını seçerek emülasyon denemelerinden dolayı herhangi bir performans kaybı yaşanmamaktadır. Gelecek cuBLAS sürümlerinde daha fazla performans iyileştirmeleri ve uygulanabilirlik alanında genişlemenin beklenildiği öngörülmektedir.
FP Emülasyonu için Gelecek
FP emülasyonu, gerçekteki uygulamaları hızlandırmakta iken, NVIDIA, bu teknolojiyi birkaç anahtar etki alanında geliştirmeye devam etmektedir. CUDA-X matematik kütüphanelerinde bulunan daha fazla temel BLAS seviye-3 ve LAPACK rutinleri, hem FP32 hem de FP64 emülasyonu ile hızlandırılacaktır. Ekip, ADP çerçevesine, GEMM çekirdeklerine, azaltılmış çalışma alanı gereksinimlerine ve Ozaki-II Şeması ile optimize ederek FP64 emülasyonunu iyileştirmeye devam edecektir.
CUDA Toolkit 13.0 Güncellemesi 2’de FP Emülasyonu ile Başlama
Bu yazıda tartışılan stratejileri kullanarak, matris çarpımı kullanan algoritmalar için Tensor Core performansından yararlanabilir ve kodunuzu değiştirmeye veya zahmetli bir performans analizi yapmaya gerek kalmaz. cuBLAS, en iyi stratejiyi otomatik olarak seçecek ve yüksek performans sunarken istenen hassasiyeti koruyacaktır.
FP emülasyonunu kullanmaya başlamak ve kendi uygulamalarınızdaki faydalarını keşfetmek için CUDA Toolkit 13.0 Güncellemesi 2’yi indirin.
Daha fazla bilgi edinmek için bu kaynaklara göz atabilirsiniz:















