10 puan yazan GN⁺ 2025-03-24 | 1 yorum | WhatsApp'ta paylaş
  • GPU'lar CPU'lardan 10 ila 100 kat daha güçlü, ancak dinamik iş yüklerini işlemede zorlanıyorlar ve paralel programlama araçları yetersiz olduğu için genel amaçlı işlerde performanslarını tam kullanamıyorlar
  • Geçmişte Connection Machine, Cell ve Larrabee gibi paralel bilgisayar tasarımları vardı, ancak programlama modelinin karmaşıklığı gibi nedenlerle başarısız oldular
  • Modern GPU'larda bellek yönetimi sorunları ve karmaşık yürütme modeli nedeniyle performansı optimize etmek zordur; kuyruk tabanlı verimli bir veri aktarım yapısına ihtiyaç vardır
  • AI hızlandırıcıları ve paralel çekirdek kümeleri gibi yeni mimariler, GPU'nun sınırlamalarını aşma potansiyeline sahip
  • Paralel bilgisayarların gelişimi hâlâ tamamlanmış değil; daha basit ve verimli bir yürütme modeli ile programlama araçlarının iyileştirilmesi gerekiyor

GPU'nun güçlü performansı ve sınırları

  • GPU'lar CPU'lardan yaklaşık 10 ila 100 kat daha güçlüdür (iş türüne göre değişir)
  • Gerçek zamanlı grafik işleme ve makine öğreniminde bu performans iyi değerlendiriliyor
  • Ancak GPU performansı genel amaçlı işlerde yeterince kullanılamıyor

GPU'nun sınırlamalarının nedenleri

  • Zayıf yürütme modeli
    • GPU'lar öngörülebilir büyük veri üzerinde (ör. yoğun matris çarpımı) güçlüdür, ancak dinamik işlerde performans düşer
  • Yetersiz diller ve araçlar
    • Paralel bilgisayar programlaması başlı başına çok zordur

Karmaşıklığın artışı

  • En yeni GPU'larda karmaşıklık hızla artıyor
  • Mesh shader'lar ve work graph'lar gibi yeni özellikler eklendi, ancak bazı temel işler hâlâ desteklenmiyor

Karmaşık GPU bellek verimliliği sorunu

  • Yazar, Vello adlı gelişmiş bir 2D vektör grafik işleyici geliştiriyor
    • CPU sahne tanımını (SVG biçiminde) yüklüyor → compute shader bunu işleyip görüntü üretiyor
  • Sorun: Bellek yönetiminin zorluğu
    • Ara sonuçları depolayacak tamponların boyutunu öngörmek zor
    • Tampon taşarsa GPU'dan CPU'ya okuma işlemi performans kaybına yol açıyor

Önerilen çözüm

  • Sonuçların GPU içinde kuyruk (queue) üzerinden aktarılacak şekilde iyileştirilmesi

Geçmişteki paralel bilgisayar tasarımları

  • Connection Machine (1985)

    • Hiperküp ağıyla bağlanmış 64 bin işlemcili bir paralel bilgisayar
    • Her işlemcinin performansı düşüktü, ancak büyük ölçekli paralel işler mümkündü
    • Paralel algoritma araştırmalarına büyük katkı sağladı
  • Cell (2006, PS3)

    • PS3'e dahil edilen bir paralel bilgisayar (yaklaşık 87,4 milyon adet sevk edildi)
    • 8 paralel çekirdek bağımsız olarak hesaplama yapabiliyordu
    • Başarısızlığın nedeni programlama modelinin karmaşıklığıydı
  • Larrabee (2008)

    • x86 tabanlı paralel bilgisayar olarak geliştirildi
    • Başarısızlık nedenleri: güç tüketimi ve yetersiz yazılım desteği
    • Daha sonra Xeon Phi ve AVX-512 komutlarına uzandı

Değişen iş yükleri

  • Oyunlarda da hesaplama işlerinin payı artıyor
    • Starfield örneğinde toplam iş süresinin yaklaşık %50'si hesaplama
    • Nanite işleyicisi, küçük üçgenlerin rasterizasyonunu da hesaplama olarak yapıyor

Gelecekteki gelişim yönleri

  • 1. Çekirdek kümesini genişletmek (Cell'in dönüşü)

    • Modern üst düzey CPU tasarımları 100 milyardan fazla transistör içeriyor
    • Düşük güçlü, basit RISC çekirdeklerinden yüzlerce ila binlerce içeren çipler üretmek mümkün
    • AI hızlandırıcıları zaten benzer bir mimari benimsiyor
  • 2. GPU üzerinde Vulkan komutlarını çalıştırmak

    • Vulkan komutlarının doğrudan GPU üzerinde çalıştırılabilmesine destek verilmesi
    • Şu anda bazı Vulkan uzantılarında sınırlı biçimde uygulanıyor
  • 3. Work Graph

    • Programın düğümler (kernel'ler) ve kenarlardan (kuyruklar) oluşması
    • Paralel çalışır, ancak şu sınırlamalar vardır
      • join işlemleri zordur
      • Öğelerin sıralama düzeni garanti edilmez
      • Değişken boyutlu öğeler desteklenmez
  • 4. CPU ile birleşerek evrimleşme

    • Yüksek performanslı CPU tasarımları paralel işlemeye optimize olabilir
    • Paralel hesaplama ve SIMD (tek komut çoklu veri) işleme performansı gelişiyor
  • 5. Donanım zaten hazır olabilir

    • Bazı GPU'larda kullanıcı kodu çalıştırabilen komut işlemcileri bulunuyor
    • Komut işlemcisi tamamen açılırsa performans artışı mümkün olabilir

Karmaşıklık sorunu

  • GPU mimarisi aşırı derecede karmaşıktır
    • Paralel bilgisayar + özel donanım + komut işleme yapısı iç içe geçmiş durumda
    • Çeşitli API ve sürücü uyumluluğu sorunları var
  • Buna karşılık CPU'lar, basit komut kümesi temeli üzerinde performanslarını artırmayı sürdürüyor

Sonuç

  • Paralel bilgisayarların gelişimi hâlâ tamamlanmış değil
  • GPU'ların grafik ve AI işleri dışında genel amaçlı işlere de optimize olabilmesi için şunlar gerekli
    • Basit bir yürütme modeli
    • Programlama kolaylığı
    • Düşük güç tüketimi
  • Vello gibi gelişmiş 2D işleyicilerde paralel bilgisayar performansından tam olarak yararlanmak mümkün olabilir
  • GPU performans sınırlarını aşacak yeni bir paralel bilgisayar mimarisi gerekiyor

1 yorum

 
GN⁺ 2025-03-24
Hacker News görüşü
  • "Bunu engelleyen iki ana etken olduğuna inanıyorum"

    • görüşleri bilimsel bir çerçeveye oturtma yönündeki teşvikler
    • Cell işlemcisi üzerinde çalışma deneyiminde çok fazla mikro yönetim gerekmişti
    • modern sistemler bellek koruması, yalıtım ve kararlılık gözetilerek tasarlanıyor
    • insanlara Amiga'da kod yazdırsanız yeni bir takdir duygusu oluşurdu
  • Programlama modeli 2025 itibarıyla verimsiz

    • çalışma zamanında shader kaynak kodunu/bytecode'u derlemek gerekiyor
    • NUMA/ayrık sistemlerde CPU ile GPU arasında veri yapılarını yönetmek zor
    • CPU-GPU ve GPU işleri arasında veri erişimi senkronizasyonu gerekiyor
    • standartlaşmamış donanım nedeniyle kafa karıştırıcı API'lerle uğraşmak gerekiyor
    • farklı yapılandırma kombinasyonlarını ele almak gerekiyor
  • "yüzlerce küçük CPU'yu tek bir çipe koyan" bir şirkette çalışma deneyimi

    • programlama modeli o kadar tuhaftı ki başarısız olacağı belliydi
    • bir sonraki nesil yeni bir mimari değil, ek özelliklere sahip GPU'lar olacak
  • GPU'lar CPU'lardan 10 ila 100 kat daha güçlü

    • birçok iş daha fazla performans gerektirmiyor
    • GUI'ler 20 yılı aşkın süredir kullanıcı girdisine duyarlıydı
    • GPU programlamasını basitleştirmek gerekiyor
  • M4 Mac mini süper bilgisayarı kurmaya dair görüş

    • Apple M3 Ultra GPU ve Neural Engine komut setinin tersine mühendisliği
    • saniyede 50 trilyondan fazla işlem gerçekleştirebilir
  • Paralel bilgisayarların sorunları

    • geliştirme amacıyla birçok kişinin bu cihazları benimsemesi gerekiyor
    • kodu CPU'dan GPU'ya taşımak büyük bir iş
    • AMD ve diğer şirketler GPU'yu CPU'ya daha yakın taşıma fikrini araştırıyor
  • 2D renderer için neden GPU gerektiği net değil

    • 3D renderer yardıma ihtiyaç duyuyor
    • Vulkan, renderer'ın altındaki bir seviye
    • Rust 3D'de renderer tasarımında sürtünme noktaları var
  • Larabee'den çok bahsediliyor ama Xeon Phis'ten hiç söz edilmiyor

    • CPU tasarımları tek çekirdek performansı ile güç verimliliğini optimize etme yönünde ayrışıyor
    • E çekirdekleri daha da arttıkça paralellikten yararlanan algoritmalar öne çıkabilir
  • GPU'nun yüksek throughput sağlamasını mümkün kılan fedakarlıklar

    • Apple Silicon'un birleşik bellek sistemi var
    • GPU programlama API'leri belleğe sanki birleşik değilmiş gibi davranmayı dayatıyor