11 pontos por xguru 2024-07-15 | 1 comentários | Compartilhar no WhatsApp
  • Biblioteca leve que permite computação GPU de uso geral de forma simples em C++
  • Usa a especificação WebGPU para fornecer uma interface GPU de baixo nível, permitindo escrever código que pode rodar em várias GPUs
  • Em outras palavras, torna possível inserir código GPU em projetos C++ para executá-lo em GPUs da Nvidia, Intel, AMD e outras, aproveitando GPU com o mesmo código C++ na maior parte do hardware compatível com Vulkan, Metal e DirectX

Objetivos técnicos: leveza, iteração rápida no desenvolvimento e pouco código boilerplate

  • O objetivo é cobrir todo o necessário para computação GPU com uma API mínima
  • O build do projeto acontece quase instantaneamente, buscando um ciclo de compilar/executar inferior a 5 segundos
  • Minimiza dependências e a carga de tooling além de um compilador C++ padrão
  • Busca uma superfície de API pequena e o mínimo de código boilerplate, com o menor número possível de camadas de abstração para que o mapeamento entre a biblioteca gpu.cpp e a API WebGPU seja claro
  • Reduz o tempo de compilação ao fornecer binários pre-built da implementação WebGPU Dawn, do Google
    • Atualmente, só o backend Dawn é suportado, mas há planos de oferecer suporte a outras implementações de WebGPU no futuro

Usuários-alvo do gpu.cpp

  • O foco principal são projetos que precisam de computação GPU altamente portátil em dispositivos de computação pessoal
  • Pode ser usado em desenvolvimento de algoritmos para GPU, implementação direta de modelos de redes neurais, simulação física, aplicações multimodais, renderização gráfica offline e motores de inferência de aprendizado de máquina
  • O objetivo é facilitar computação GPU ampla em dispositivos pessoais
  • Permite controlar diretamente a movimentação detalhada de dados e o código GPU

O que gpu.cpp não é

  • Não é um framework de computação numérica de alto nível, nem um framework de aprendizado de máquina ou motor de inferência (embora possa ser usado para dar suporte a esse tipo de implementação)
  • É importante notar que o WebGPU não existe apenas em navegadores, mas também em implementações nativas ("WebGPU is Not Just About the Web")
  • O foco está em computação GPU de uso geral, mais do que em rendering/gráficos

Limitações e planos futuros

  • Melhoria da API: o design da API deve evoluir a partir de casos de uso reais
  • Há planos para oferecer suporte a targets de navegador
  • Transformar kernels reutilizáveis em bibliotecas, assim como shaders
  • Adicionar mais exemplos de uso e testes
  • Um dos objetivos de curto prazo é implementar os kernels de llm.c em WebGPU

1 comentários

 
xguru 2024-07-15

A apresentação do projeto está descrita com mais detalhes nesta página sobre gpu.cpp: portable GPU compute for C++ with WebGPU.