11 Punkte von xguru 2024-07-15 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
xguru 2024-07-15

Die ausführlichere Einführung in das Projekt findet sich hier: gpu.cpp: portable GPU compute for C++ with WebGPU.