11 points par xguru 2024-07-15 | 1 commentaires | Partager sur WhatsApp
  • Une bibliothèque légère qui permet simplement le calcul GPU généraliste en C++
  • En s’appuyant sur la spécification WebGPU pour fournir une interface GPU de bas niveau, elle permet d’écrire du code exécutable sur différents GPU
  • Concrètement, il devient possible d’intégrer du code GPU dans un projet C++ pour l’exécuter sur des GPU Nvidia, Intel, AMD et autres, et de tirer parti du GPU avec le même code C++ sur la plupart des matériels prenant en charge Vulkan, Metal et DirectX

Objectifs techniques : légèreté, itérations de développement rapides, peu de code boilerplate

  • L’objectif est de couvrir l’ensemble des besoins du calcul GPU avec une API minimale
  • La compilation du projet est quasi immédiate, avec un cycle compilation/exécution visé de moins de 5 secondes
  • En dehors d’un compilateur C++ standard, les dépendances et la charge liée à l’outillage sont réduites au minimum
  • Le projet vise une petite surface d’API et un minimum de code boilerplate, en limitant les couches d’abstraction pour que le mapping entre la bibliothèque gpu.cpp et l’API WebGPU reste clair
  • Des binaires pre-built de l’implémentation WebGPU Dawn de Google sont fournis afin de réduire les temps de compilation
    • Pour l’instant, seul le backend Dawn est pris en charge, mais le support d’autres implémentations WebGPU est prévu par la suite

Public visé par gpu.cpp

  • La cible principale est constituée des projets ayant besoin d’un calcul GPU portable sur des appareils de computing personnel
  • Peut être utilisé pour le développement d’algorithmes GPU, l’implémentation directe de modèles de réseaux de neurones, la simulation physique, les applications multimodales, le rendu graphique hors ligne et les moteurs d’inférence de machine learning
  • L’objectif est de rendre le calcul GPU à grande échelle sur appareil personnel plus accessible
  • Permet un contrôle direct et précis des transferts de données et du code GPU

Ce que gpu.cpp n’est pas

  • Ce n’est ni un framework de calcul numérique ou de machine learning de haut niveau, ni un moteur d’inférence (même s’il peut servir de base à ce type d’implémentation)
  • Il est important de noter que WebGPU ne se limite pas au navigateur web et dispose aussi d’implémentations natives ("WebGPU is Not Just About the Web")
  • Le projet se concentre sur le calcul GPU généraliste plutôt que sur le rendu/les graphismes

Limites et feuille de route

  • Amélioration de l’API : le design de l’API continuera d’évoluer à partir des cas d’usage
  • Support des cibles navigateur prévu
  • Création de bibliothèques de kernels et de shaders réutilisables
  • Ajout de davantage d’exemples d’utilisation et de tests
  • L’un des objectifs à court terme est d’implémenter les kernels de llm.c avec WebGPU

1 commentaires

 
xguru 2024-07-15

Pour une présentation du projet, gpu.cpp: portable GPU compute for C++ with WebGPU est un peu plus détaillé.