- 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
Proje hakkında tanıtım için gpu.cpp: portable GPU compute for C++ with WebGPU tarafı biraz daha ayrıntılı.