- Library ringan yang memungkinkan komputasi GPU serbaguna dengan mudah di C++
- Dengan memanfaatkan standar WebGPU untuk menyediakan antarmuka GPU tingkat rendah, library ini memungkinkan penulisan kode yang dapat berjalan di berbagai GPU
- Artinya, Anda dapat menyisipkan kode GPU ke dalam proyek C++ agar bisa dijalankan di Nvidia, Intel, AMD, dan GPU lainnya, serta memanfaatkan GPU dengan kode C++ yang sama di sebagian besar perangkat keras yang mendukung Vulkan, Metal, dan DirectX
Tujuan teknis: ringan, iterasi pengembangan cepat, sedikit kode boilerplate
- Bertujuan mencakup seluruh kebutuhan komputasi GPU dengan API yang minimal
- Build proyek berlangsung hampir seketika, dengan siklus kompilasi/eksekusi dijaga di bawah 5 detik
- Meminimalkan ketergantungan dan beban tooling selain kompiler C++ standar
- Mengarah pada permukaan API yang kecil dan kode boilerplate seminimal mungkin, dengan lapisan abstraksi yang diminimalkan agar pemetaan antara library gpu.cpp dan API WebGPU tetap jelas
- Menyediakan biner pre-built dari implementasi WebGPU Dawn milik Google untuk mempersingkat waktu kompilasi
- Saat ini hanya mendukung backend Dawn, tetapi dukungan untuk implementasi WebGPU lain direncanakan ke depan
Pengguna yang dituju gpu.cpp
- Ditujukan terutama untuk proyek yang membutuhkan komputasi GPU portabel pada perangkat komputasi pribadi
- Dapat digunakan untuk pengembangan algoritme GPU, implementasi langsung model jaringan saraf, simulasi fisika, aplikasi multimodal, rendering grafis offline, dan engine inferensi pembelajaran mesin
- Tujuannya adalah mempermudah komputasi GPU berskala luas di perangkat pribadi
- Memungkinkan kontrol langsung yang rinci atas perpindahan data dan kode GPU
Yang bukan gpu.cpp
- Bukan framework komputasi numerik tingkat tinggi, framework pembelajaran mesin, atau engine inferensi (meski dapat digunakan untuk mendukung implementasi semacam itu)
- Penting untuk dicatat bahwa WebGPU tidak hanya ada di browser web, tetapi juga memiliki implementasi native ("WebGPU is Not Just About the Web")
- Fokusnya adalah komputasi GPU serbaguna, bukan rendering/grafis
Keterbatasan dan rencana ke depan
- Peningkatan API: desain API akan terus dikembangkan melalui berbagai use case
- Dukungan target browser direncanakan
- Menjadikan kernel dan shader dapat digunakan ulang sebagai library
- Menambahkan lebih banyak contoh penggunaan dan pengujian
- Salah satu target jangka pendek adalah mengimplementasikan kernel llm.c dengan WebGPU
1 komentar
Untuk pengenalan proyek, gpu.cpp: portable GPU compute for C++ with WebGPU menjelaskannya sedikit lebih detail.