24 puan yazan GN⁺ 2025-04-05 | 3 yorum | WhatsApp'ta paylaş
  • NVIDIA'nın yıllardır C/C++ merkezli olan CUDA araç setine 2024 GTC'de yerel Python desteği resmen eklendi
  • Artık yalnızca Python ile GPU üzerinde doğrudan algoritma odaklı yüksek hızlı hesaplamalar çalıştırmak mümkün
  • CUDA mimarı Stephen Jones, “Python CUDA, C kodunu Python sözdizimine taşımaktan ibaret değil;
    Python geliştiricileri için doğal olacak şekilde baştan tasarlandı” diye açıklıyor

Yerel Python desteğinin açtığı yeni olanaklar

  • Mevcut CUDA kullanıcılarının C++ ya da Fortran bilmesi gerekiyordu; artık ise yalnızca Python ile de yüksek performanslı GPU hesaplaması mümkün
  • 2024 GitHub açık kaynak anketine göre Python, JavaScript'i geride bırakarak en popüler dil haline geldi
  • CUDA kullanıcı sayısı 2020'de 2 milyonken 2023'te 4 milyona çıktı, ancak
    Python geliştiricileri on milyonlar ölçeğinde; bu da özellikle Hindistan ve Brezilya gibi yükselen ülkelerdeki geliştiriciler için büyük bir avantaj
  • Bunun küresel GPU altyapısının genişlemesi üzerinde de olumlu etki yaratması bekleniyor

Pythonic CUDA nasıl yapılandırılıyor

  • CUDA; kütüphaneler, SDK, derleyici, çalışma zamanı, araçlar ve algoritmalardan oluşuyor
  • Python entegrasyonu, yalnızca çekirdekler sunmakla kalmıyor; tüm yığını Python dostu olacak şekilde yapılandırıyor
  • Temel yaklaşım: JIT (Just-In-Time) derleme tabanlı, derleyici bağımlılığını en aza indiriyor

Başlıca bileşenler

  • cuPyNumeric: NumPy ile aynı API'yi sunarken GPU hızlandırmasını destekleyen Python kütüphanesi
  • CUDA Core: CUDA çalışma zamanını Python tarzında yeniden tasarlayan, yürütme akışı temelli sistem
  • NVMath Python: host/device kütüphane çağrıları için birleşik arayüz sunuyor
  • Yüksek performanslı C++ kütüphaneleriyle doğrudan entegre olabilen Python API yapısı
  • Performans analizi ve kod analizi araçları da birlikte sunuluyor

> “Mevcut yüksek performanslı C++ koduyla doğrudan bağlantılı olduğu için performans kaybı neredeyse yok.” — Stephen Jones

Yeni programlama modeli: CuTile

  • Python geliştiricileri için tasarlanmış yüksek seviyeli, dizi merkezli model
  • Mevcut CUDA iş parçacığı tabanlı ayrıntılı kontrol gerektirirken, CuTile tile düzeyinde soyutlama ile daha sade ve anlaşılır bir yapı sunuyor
  • CuTile, dizileri GPU tile birimlerine eşleyerek hata ayıklama ve optimizasyonu kolaylaştırırken performansı koruyor
  • İleride C++ CUDA'ya da genişletilmesi planlanıyor

> “Derleyici GPU yapısını daha iyi anladığı için performans optimizasyonunu da otomatik olarak daha iyi yapabiliyor.”

Özet

  • CUDA'nın Python ile yerel entegrasyonu, GPU programlamaya giriş eşiğini ciddi biçimde düşüren bir değişim
  • Artık karmaşık dil bilgisi gerektirmeden yalnızca Python ile GPU üzerinde yapay zeka/bilimsel hesaplamalar yapılabilecek
  • Python merkezli yapay zeka ekosisteminin büyümesi ve NVIDIA GPU kullanımının yaygınlaşması için yeni bir dönemi başlatan kritik bir dönüm noktası

3 yorum

 
aer0700 2025-04-06

Cupy ve pytorch gibi mevcut Cuda wrapper'larından daha hızlı olur mu acaba. Cupy ve torch'un avantajı, API'lerinin neredeyse numpy ile tamamen aynı olmasıydı; bu sayede numpy ile yazdığım test kodlarını çok uğraşmadan taşıyabiliyordum. Bunun nasıl olduğunu da kullanıp görmek gerekecek sanırım.

 
GN⁺ 2025-04-05
Hacker News görüşleri
  • GPU programcısı değilim ama benim gibi biri için bile kullanımı kolay görünüyor. GPU ve CPU kullanan basit bir demo yaptım. Sonuçlar şöyle

    • CPU'da 5000x5000 boyutunda 100 rastgele matris oluşturma
    • CPU ile matris toplama
    • CPU matris toplama tamamlanma süresi: 0.6541 saniye
    • CPU sonuç matris boyutu: (5000, 5000)
    • GPU'da 5000x5000 boyutunda 100 rastgele matris oluşturma
    • GPU ile matris toplama
    • GPU matris toplama tamamlanma süresi: 0.1480 saniye
    • GPU sonuç matris boyutu: (5000, 5000)
    • API gerçekten çok basit, o yüzden daha derine inmeye değer. CUDA programlama, böyle yüksek seviyeli bir şey olmadan büyük bir iş gibi görünüyor
  • Python'ın neden bunlar için hedef haline geldiğini merak ediyorum. Birçok projenin Python desteği eklediğini gördüm. Python kod tabanlarının diğerlerine göre daha kolay şekilde çeşitli hedeflere derlenip derlenemediğini merak ediyorum

  • PyTorch'un bunun ortaya çıkmasından önce büyük ivme kazanmış olmasına sevindim. Artık paralel hesaplama için gerçekten platformdan bağımsız, yarı standart bir yapımız var. NVIDIA ile sınırlı değil

    • PyTorch'un NVIDIA backend'iyle ilgili kısmı artık doğrudan Python'da uygulanabilir
    • Önemli olan, bunun son kullanıcı/geliştirici için önemli olmaması ya da olmaması gerekmesi
    • Bu yeni platform belki de Python üzerinden GPU hesaplama fikrini oyun gibi daha fazla alana genişletebilir
    • Python üzerinden ağırlıklı olarak GPU'da çalışan Rust oyunlarını hayal edin
  • CuTile birçok açıdan OpenAI'nin Triton'unun devamı gibi hissettiriyor. Yalnızca tile/block seviyesinde primitive'ler ve TileIR değil, CuPy içinde düzgün bir SIMT programlama modeli de sunuyor. Görünüşe göre bu yılki GTC'de de pek çok kişi buna dikkat etmedi. Çok havalı bir şey

    • Buna rağmen CPU tarafıyla ilgili neredeyse hiç sunum ya da konuşma yoktu. Grace CPU'nun duyurulmasının üzerinden epey zaman geçti ama Nvidia CPU ve GPU'da sorunsuz çalışan genelleştirilmiş bir soyutlamayı yakında görecekmişiz gibi durmuyor
    • Her gün paralel algoritmalarla çalışan biri için bu bir sorun. NSight ve CUDA-GDB ile hata ayıklamak hâlâ ham GDB gibi değil ve önce algoritmayı CPU'da tasarlayıp sonra GPU'ya port etmek çok daha kolay
    • Derleyici alanındaki tüm ekipler arasında Modular, LLM çılgınlığına tamamen kapılmadan çoklu platformları kapsayan soyutlamalar ve diller inşa etmeye aktif biçimde devam eden az sayıdaki ekipten biri. Bu ortamda giderek daha da değerli hale geliyor. Daha fazla kişinin Mojo'yu denemesini isterim. Belki de sonunda her gün karşılaştığımız CPU-GPU uçurumunu kapatabilir
  • JAX ile nasıl karşılaştırıldığını gerçekten çok merak ediyorum

    • JAX, yalnızca Nvidia değil başka markaların GPU'larında da çalışan Python kodu yazmanıza izin veriyor (destek düzeyi değişiyor). Benzer şekilde NumPy fonksiyonları için bire bir yerine geçebilen alternatifleri var
    • Bu ise yalnızca Nvidia'yı destekliyor. Peki JAX'in yapamadığı şeyleri yapabiliyor mu? Kullanımı daha mı kolay? Sabit boyutlu dizi odaklılığı daha mı az? Tek bir GPU markasına kendini kilitlemeye değer mi?
  • Bu müthiş. Yapay zeka alanında NVIDIA'ya alternatif olarak AMD + ROCm'u düşünen kimse artık düşünmeyecektir

    • Ben, GPU üzerinde çalışacak şekilde verimli kod yazabilecek kadar C++ öğrenemeyen (ve öğrenmeyecek olan) insanlardan biriyim. Ama Python üzerinden doğrudan GPU'ya bir pipeline kurabiliyorum. İnanılmaz
    • Bunun verimlilik açısından anlamı çok büyük. Sadece PyTorch gibi Python kütüphaneleri için değil, NVIDIA GPU'larında çalışan her şey için
    • Verimliliğin arttığını görmek hoşuma gidiyor. OpenAI ve Google'ın tüm GPU'ları çalıştırmak için ne kadar çok nükleer santrale ihtiyaç duyacağına dair şeyleri sürekli duyuyoruz
  • Sırada Rust desteği mi var? Şu anda veri yapılarımı kernel'e/kernel'den byte dizileri olarak elle [de]serialize ediyorum. CUDA'nın C++'ta sunduğu gibi gerçekten paylaşılan veri yapılarına sahip olmak güzel olurdu

  • Python gerçekten de programlama dillerinin lingua franca'sı haline geliyor. FOSS rönesansında benimsenmesi hızla artıyor ve bence elimizdeki en yakın genel amaçlı araç bu

    • PEP modeli, öz iyileştirme ve standardizasyon için iyi bir araç. uv ve BeeWare gibi projeler sayesinde paketleme ve dağıtım yakında çözülmüş sorunlar olacak. Performans iyileştirmelerinin her yıl süreceğine eminim
  • Bu muhtemelen Python'ın genel olarak öncülük ettiği şeyi daha da hızlandıracak: daha fazla şeyin daha hızlı denenmesi ve hızlı dillerde kalıcı hale gelmesi. Genel olarak bu harika bir adım. Bununla oynamayı kesinlikle dört gözle bekliyorum

  • CUDA, C ve C++ içinde doğdu. Keşke C++'ı genişletip buna CUDA C demek yerine gerçekten CUDA'nın bir C varyantını hayata geçirmiş olsalardı

 
iwi19 2025-04-06

İlk hız gerçekten böyle mi? Fazla yavaş görünüyor...