11 puan yazan xguru 2024-07-15 | 1 yorum | WhatsApp'ta paylaş
  • C++ içinde genel amaçlı GPU hesaplamayı basitçe mümkün kılan hafif bir kütüphane
  • WebGPU standardını kullanarak düşük seviyeli bir GPU arayüzü sunar; böylece farklı GPU'larda çalışabilen kodlar yazmayı mümkün kılar
  • Yani C++ projelerine GPU kodu ekleyerek bunun Nvidia, Intel, AMD ve diğer GPU'larda çalışmasını sağlar; Vulkan, Metal, DirectX destekleyen çoğu donanımda aynı C++ koduyla GPU'dan yararlanılabilir

Teknik hedefler: hafiflik, hızlı geliştirme iterasyonu, az miktarda boilerplate kod

  • Amaç, minimum API ile GPU hesaplama için gereken tüm kapsamı ele almak
  • Proje derlemesinin neredeyse anında gerçekleşmesini ve derleme/çalıştırma döngüsünün 5 saniyenin altında kalmasını hedefler
  • Standart C++ derleyicisi dışında bağımlılıkları ve tooling yükünü en aza indirir
  • Küçük bir API yüzeyi ve minimum boilerplate kod hedefler; soyutlama katmanlarını en aza indirerek gpu.cpp kütüphanesi ile WebGPU API'si arasındaki eşlemenin net olmasını sağlar
  • Google'ın Dawn WebGPU implementasyonunun pre-built ikililerini sunarak derleme süresini kısaltır
    • Şu anda yalnızca Dawn backend'i destekleniyor, ancak gelecekte diğer WebGPU implementasyonları da desteklenecek

gpu.cpp'nin hedef kullanıcıları

  • Kişisel bilgi işlem cihazlarında yüksek taşınabilirliğe sahip GPU hesaplamaya ihtiyaç duyan projeler başlıca hedef
  • GPU algoritması geliştirme, sinir ağı modellerini doğrudan uygulama, fizik simülasyonu, multimodal uygulamalar, çevrimdışı grafik render etme, makine öğrenimi çıkarım motorları gibi alanlarda kullanılabilir
  • Amaç, kişisel cihazlarda geniş kapsamlı GPU hesaplamayı daha kolay hale getirmek
  • Veri taşımasını ince ayrıntısına kadar ve GPU kodu kontrolünü doğrudan yapabilmeyi sağlar

gpu.cpp'nin olmadığı şeyler

  • Yüksek seviyeli sayısal hesaplama ya da makine öğrenimi framework'ü veya çıkarım motoru değildir (ancak bu tür implementasyonları desteklemek için kullanılabilir)
  • Önemli nokta, WebGPU'nun yalnızca web tarayıcılarında değil, native implementasyonlarda da bulunmasıdır ("WebGPU is Not Just About the Web")
  • Render etme/grafikten çok genel amaçlı GPU hesaplamaya odaklanır

Sınırlamalar ve gelecek planları

  • API iyileştirmeleri: kullanım senaryoları üzerinden API tasarımı geliştirilmeye devam edecek
  • Tarayıcı hedefi desteği planlanıyor
  • Yeniden kullanılabilir kernel'ler ve shader'ların kütüphaneleştirilmesi
  • Daha fazla kullanım örneği ve test eklenmesi
  • Kısa vadeli hedeflerden biri, llm.c'nin kernel'lerini WebGPU ile gerçekleştirmek

1 yorum

 
xguru 2024-07-15

Proje hakkında tanıtım için gpu.cpp: portable GPU compute for C++ with WebGPU tarafı biraz daha ayrıntılı.