24 puan yazan GN⁺ 2025-04-05 | 2 yorum | WhatsApp'ta paylaş
  • CUDA, C/C++ merkezli ekosistemden çıkarak Python geliştiricilerinin NVIDIA GPU hesaplamayı daha doğrudan ele alabileceği yönde genişliyor
  • Yeni destek basit bir binding’den ibaret değil; CUDA araç setinin geneline Python arayüzleri ve betikleme akışlarını entegre etme girişimi
  • CUDA Python yığını; temel binding’leri, çalışma zamanı derleyicisini, cuPyNumeric’i, CUDA Core’u, NVMath Python’ı, profiler’ları ve kod analiz araçlarını kapsıyor
  • NVIDIA, JIT derleme ve mevcut C++ koduyla bağlantı kurmayı kullanarak Python üretkenliğini artırırken performans farkını küçük tutmayı hedefliyor
  • CuTile arayüzü, Python geliştiricilerinin GPU işlerini thread’lerden ziyade dizi ve tile düzeyinde anlamasını ve hata ayıklamasını kolaylaştıran bir model

CUDA’ya gelen yerel Python

  • Python, GitHub’ın 2024 açık kaynak anketine göre JavaScript’i geride bırakarak dünyanın en popüler programlama dili oldu
  • NVIDIA’nın CUDA yazılım araç setinde yıllardır yerel Python desteği yoktu; ancak GTC’de yerel destek ve tam entegrasyon duyuruldu
  • Geliştiriciler, NVIDIA GPU’larında çalışan algoritmik hesaplamaları doğrudan Python ile yazabilecek
  • CUDA mimarı Stephen Jones, CUDA yığınına “accelerated Python”ı birinci sınıf destek olarak getirmek için çalıştıklarını söyledi
  • Yeni yönelim, C’yi Python söz dizimine taşımak değil; Python geliştiricileri için doğal hissettiren CUDA Python oluşturmak

Python geliştirici tabanına doğru genişleme

  • CUDA daha önce C++ veya Fortran bilgisi gerektiriyordu; bazı Python araçları vardı ancak yerel destek değildi
  • Yerel Python desteği, CUDA geliştirici araçlarını milyonlarca Python geliştiricisine açıyor
  • The Futurum Group’a göre CUDA kullanıcı sayısı 2020’de 2 milyondan 2023’te 4 milyona çıktı
  • Python hızla büyüyen bir dil ve NVIDIA, Hindistan ve Brezilya gibi gelişmekte olan ülkelerdeki Python geliştiricilerine de erişebilir hale geliyor
  • NVIDIA GPU’larının önemli bir kısmı ABD ve Avrupa’da olsa da Hindistan’daki telekom ve altyapı şirketleri, gelecekte işletilecek büyük ölçekli GPU kurulumları inşa ediyor
  • NVIDIA, programcıları bünyesine çekmeye yoğun çaba harcıyor ve Rust ile Julia dahil daha fazla programlama dilini desteklemeyi hedefliyor

Pythonic CUDA yığınının bileşenleri

  • CUDA; kütüphaneler, SDK’lar, derleyiciler, host runtime, araçlar, önceden paketlenmiş yazılımlar ve algoritmalar içeriyor
  • NVIDIA, Pythonic CUDA stack genelinde bileşenler ekledi
  • Temel hedef, Python’dan çıkmadan GPU hızlandırması sağlamak
  • Jones’a göre CUDA Python, yalnızca kernel sunmakla sınırlı kalmamalı; tüm yığınla birlikte akıcı bir yürütme akışına ihtiyaç var
    • Kernel yazıp PyTorch’a koyabilmek gerekiyor
    • Pythonic kütüphaneler ve diğer bileşenler de çağrılabilmeli
  • Derleyici katmanı fiilen JIT derleme merkezli kuruluyor ve GPU yığınının bağımlılık ağacını büyük ölçüde azaltıyor
  • Katmanlar arası birlikte çalışabilirlik, Python’ı uçtan uca kullanırken üretkenlik artışı için önemli

CUDA Core, cuPyNumeric, NVMath Python

  • NVIDIA başlangıçta çalışma zamanı derleyicisini de içeren temel Python binding’leri ve Python kütüphaneleri oluşturdu
  • cuPyNumeric, Python’da yaygın kullanılan hesaplama kütüphanesi NumPy için drop-in bir alternatiftir
    • Yalnızca bir import yönergesini değiştirerek NumPy kodu CPU yerine GPU’da çalışır
  • Geçen yıl boyunca NVIDIA CUDA Core’u geliştirdi; Jones bunu CUDA runtime’ının doğal ve yerel Python olarak yeniden tasarlanmış hali olarak görüyor
  • CUDA Core, Python’ın yürütme akışını izler; tamamen süreç içinde çalışır ve büyük ölçüde JIT derlemeye dayanır
  • NVIDIA, host tarafı ve device tarafı kütüphane çağrıları için birleşik bir arayüz sunan NVMath Python’ı da oluşturdu
  • Jones’a göre kütüphane çağrılarını birleştirebilme yeteneği, büyük performans iyileştirmeleri getiriyor
  • Python kodundan hızlandırılmış C++ kütüphanelerine doğrudan erişim sağlayan kütüphaneler de oluşturuldu
    • Python’da yeniden uygulamak yerine, mevcut ve ince ayarlanmış C++ koduna bağlanıyor
    • Jones, bu yaklaşımla performans farkının ihmal edilebilir hale geldiğini düşünüyor
  • Profiler’lar ve kod analiz araçları için araçlar da eklendi

CuTile programlama modeli

  • Python, donanım ayrıntılarını fazla düşünmeden kod yazmayı kolaylaştırır; NVIDIA da GPU yürütmesi için daha yüksek düzeyli soyutlamalara uygun bir kodlama katmanı ekliyor
  • Yeni programlama modeli olan CuTile arayüzü önce Pythonic CUDA için geliştiriliyor; ardından C++ CUDA uzantısı gelecek
  • CuTile, Python geliştiricilerinin C++ geliştiricileri gibi thread’lerden çok dizileri merkeze alarak düşündüğü gerçeğine göre tasarlandı
  • Python kodunu sihirli biçimde GPU hızlandırması için dışa aktarmak mümkün değil
    • CUDA genellikle problemi binlerce küçük bloğa böler
    • Bloklar daha küçük tile’lara ayrılır
    • Tile içinde binlerce thread tek bir öğeyi işler
    • Thread’ler bir araya gelerek tek bir işlemi gerçekleştirir
  • GPU’nun büyük hesaplama gücü, thread düzeyinde tekil öğelere kadar paralel işleyebilmesinden gelir
  • NVIDIA, GPU yürütmesinin mutlaka thread düzeyine kadar inmesi gerekmediğini; tile düzeyi ara aşamasında da işlenebileceğini düşünüyor
  • CuTile, dizileri GPU’ya daha az ayrıntılı bir düzeyde verimli biçimde eşleyerek kodun anlaşılmasını ve hata ayıklamayı kolaylaştırır
  • Jones’a göre bu yaklaşım temelde aynı performansı getiriyor
  • Bir tile’ın verileri vektörlerden, tensörlerden ve dizilerden oluşabilir
  • Derleyici, tüm dizi işlemini thread bloklarından GPU’ya eşleme işini daha iyi yapabilir; Jones, derleyicinin GPU yürütme ayrıntılarını derinlemesine anladığı için çoğu zaman kendisinden daha iyi yaptığını düşünüyor
  • Python, C++’ın aksine tasarım gereği düşük düzeyli bir dil değildir; Jones, OpenAI’ın Triton’unu Python programlarına doğal biçimde uyan bir örnek olarak gösteriyor

2 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.

 
iwi19 2025-04-06

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