- Eine leichte Bibliothek, die allgemeines GPU-Computing in C++ einfach ermöglicht
- Bietet mittels des WebGPU-Standards ein Low-Level-GPU-Interface, sodass Code geschrieben werden kann, der auf verschiedenen GPUs lauffähig ist
- Dadurch lässt sich GPU-Code in C++-Projekte einbetten und auf Nvidia-, Intel-, AMD- und anderen GPUs ausführen; auf den meisten Hardwareplattformen mit Unterstützung für Vulkan, Metal und DirectX kann dieselbe C++-Codebasis für GPU-Nutzung verwendet werden
Technische Ziele: geringes Gewicht, schnelle Entwicklungsiteration, wenig Boilerplate-Code
- Ziel ist es, mit einer minimalen API den gesamten für GPU-Computing nötigen Umfang abzudecken
- Projekt-Builds sollen nahezu sofort erfolgen, und der Kompilier-/Ausführungszyklus soll unter 5 Sekunden bleiben
- Abgesehen von einem Standard-C++-Compiler sollen Abhängigkeiten und Tooling-Aufwand auf ein Minimum reduziert werden
- Angestrebt werden eine kleine API-Oberfläche und minimaler Boilerplate-Code; zugleich werden Abstraktionsschichten minimiert, damit das Mapping zwischen der gpu.cpp-Bibliothek und der WebGPU-API klar bleibt
- Stellt vorgebaute Binärdateien von Googles Dawn-WebGPU-Implementierung bereit, um die Kompilierzeit zu verkürzen
- Derzeit wird nur das Dawn-Backend unterstützt, künftig sind weitere WebGPU-Implementierungen geplant
Zielgruppe von gpu.cpp
- Hauptziel sind Projekte, die portables GPU-Computing auf persönlichen Computing-Geräten benötigen
- Einsetzbar für die Entwicklung von GPU-Algorithmen, die direkte Implementierung neuronaler Netzmodelle, Physiksimulationen, multimodale Anwendungen, Offline-Grafik-Rendering und Machine-Learning-Inferenz-Engines
- Ziel ist es, breites GPU-Computing auf persönlichen Geräten einfacher zu machen
- Ermöglicht eine direkte, fein granulare Kontrolle über Datenbewegung und GPU-Code
Was gpu.cpp nicht ist
- Kein High-Level-Framework für numerisches Rechnen oder Machine Learning und keine Inferenz-Engine (kann aber zur Unterstützung solcher Implementierungen verwendet werden)
- Wichtig ist, dass es WebGPU nicht nur im Webbrowser gibt, sondern auch als native Implementierung ("WebGPU is Not Just About the Web")
- Der Fokus liegt auf allgemeinem GPU-Computing statt auf Rendering/Grafik
Einschränkungen und weitere Pläne
- API-Verbesserungen: Das API-Design soll anhand realer Anwendungsfälle weiterentwickelt werden
- Unterstützung für Browser-Ziele ist geplant
- Wiederverwendbare Kernel und Bibliotheksbildung für Shader
- Mehr Anwendungsbeispiele und Tests hinzufügen
- Eines der kurzfristigen Ziele ist die Umsetzung der Kernel von llm.c in WebGPU
1 Kommentare
Die ausführlichere Einführung in das Projekt findet sich hier: gpu.cpp: portable GPU compute for C++ with WebGPU.