11 puntos por xguru 2024-07-15 | 1 comentarios | Compartir por WhatsApp
  • Biblioteca ligera que permite realizar cómputo GPU de propósito general de forma sencilla en C++
  • Proporciona una interfaz GPU de bajo nivel usando la especificación WebGPU, lo que permite escribir código que puede ejecutarse en distintas GPU
  • Es decir, permite insertar código GPU en proyectos de C++ para ejecutarlo en GPU de Nvidia, Intel, AMD y otras, y aprovechar la GPU con el mismo código C++ en la mayoría del hardware compatible con Vulkan, Metal y DirectX

Objetivos técnicos: ligereza, iteración rápida de desarrollo y poco código boilerplate

  • El objetivo es cubrir todo lo necesario para cómputo GPU con una API mínima
  • Busca que la compilación del proyecto ocurra casi de inmediato y que el ciclo de compilar/ejecutar sea de menos de 5 segundos
  • Minimiza las dependencias y la carga de tooling más allá de un compilador estándar de C++
  • Apunta a una superficie de API pequeña y a la mínima cantidad de código boilerplate, con capas de abstracción reducidas para que el mapeo entre la biblioteca gpu.cpp y la API de WebGPU sea claro
  • Reduce el tiempo de compilación al ofrecer binarios precompilados de Dawn, la implementación de WebGPU de Google
    • Actualmente solo soporta el backend de Dawn, pero más adelante planea soportar otras implementaciones de WebGPU

Usuarios objetivo de gpu.cpp

  • Está dirigido principalmente a proyectos que necesitan cómputo GPU portable en dispositivos de computación personal
  • Puede usarse para desarrollo de algoritmos GPU, implementación directa de modelos de redes neuronales, simulación física, aplicaciones multimodales, renderizado gráfico offline y motores de inferencia de machine learning
  • Su objetivo es facilitar el cómputo GPU de amplio alcance en dispositivos personales
  • Permite controlar directamente el movimiento detallado de datos y el código GPU

Lo que gpu.cpp no es

  • No es un framework de cómputo numérico o machine learning de alto nivel, ni un motor de inferencia (aunque puede usarse para apoyar ese tipo de implementaciones)
  • Es importante que WebGPU no existe solo en navegadores web, sino también en implementaciones nativas ("WebGPU is Not Just About the Web")
  • Está enfocado en cómputo GPU de propósito general más que en rendering/gráficos

Limitaciones y planes futuros

  • Mejoras de API: planean seguir evolucionando el diseño de la API a partir de casos de uso
  • Planean soporte para targets de navegador
  • Convertir kernels reutilizables y shaders en bibliotecas
  • Agregar más ejemplos de uso y pruebas
  • Uno de los objetivos de corto plazo es implementar en WebGPU los kernels de llm.c

1 comentarios

 
xguru 2024-07-15

La introducción del proyecto está explicada con un poco más de detalle por este lado en gpu.cpp: portable GPU compute for C++ with WebGPU.