Repolode
xlite-dev

xlite-dev/LeetCUDA

Libro y colección de código de código abierto con apuntes actuales para aprender CUDA y más de 200 kernels de HGEMM, GEMM con FP8/FP4 y Flash-Attention.

Estrellas
12,104
Forks
1,277
Issues abiertos
3
Último commit
hace 11 horas

¿Qué es?

LeetCUDA es un recurso de aprendizaje para escribir kernels de GPU en CUDA, organizado como un libro de código abierto acompañado de un repositorio de código. Guía al lector desde kernels sencillos de operaciones elemento a elemento y reducción hasta multiplicación de matrices y atención. Cada tema sigue el mismo flujo de trabajo: implementación de un kernel CUDA, bindings de Python para PyTorch y pruebas.

El material cubre la programación de Tensor Cores con WMMA, MMA PTX y CuTe, e incluye benchmarks de HGEMM que alcanzan entre el 98 % y el 100 % de los TFLOPS de cuBLAS en NVIDIA L20, RTX 4090 y RTX 3080 Laptop. También incluye varias variantes de FlashAttention-2 escritas únicamente con instrucciones MMA PTX, además de kernels con precisión BF16, FP8 y FP4. Asimismo, incluye ejemplos de Triton y CUTLASS.

El proyecto ofrece un objetivo `bench` que se compila mediante un script de compilación, así como una skill para agentes de programación que se puede instalar en herramientas como Claude Code y GitHub Copilot.

Funciones clave

  • 01Más de 200 kernels CUDA, desde operaciones elemento a elemento hasta atención de nivel Hard++
  • 02Implementaciones de HGEMM con WMMA, MMA PTX y CuTe, con benchmarks comparativos frente a cuBLAS
  • 03Variantes de FlashAttention-2 basadas en Tensor Cores y que usan únicamente MMA PTX
  • 04Kernels para los tipos de datos BF16, FP8 y FP4
  • 05Ejemplos de Triton y CUTLASS/CuTe junto con código CUDA sin abstraer
  • 06Cada kernel incluye bindings de Python para PyTorch y pruebas

Casos de uso

  • Aprender programación de kernels CUDA paso a paso, desde los conceptos básicos hasta los avanzados
  • Estudiar la multiplicación de matrices con Tensor Cores y las implementaciones de FlashAttention
  • Comparar el rendimiento de kernels personalizados de GEMM o atención con cuBLAS o SDPA
  • Proporcionar a un agente de programación ejemplos de referencia de CUDA mediante la skill incluida

Inicio rápido

  1. 1

    Clona el repositorio e inicializa los submódulos

    git clone https://github.com/xlite-dev/LeetCUDA.git && cd LeetCUDA
  2. 2

    Actualiza los submódulos y entra en el directorio interview kernels

    git submodule update --init --recursive --force && cd kernels/interview
  3. 3

    Instala las versiones más recientes de cuBLAS y cuDNN para los benchmarks (sustituye las versiones antiguas como se indica en el README)

    apt install -y cublas-cuda-13 cudnn9-cuda-13 && apt install -y ccache
  4. 4

    Compila para GPU Blackwell y ejecuta el benchmark

    ./build.sh --arch sm_120a && ./bin/leetcuda_bench_sm120a.bin --bench

Antes de usarlo

  • Los benchmarks requieren una GPU NVIDIA con CUDA toolkit y versiones recientes de cuBLAS/cuDNN.
  • El ejemplo de compilación de inicio rápido está orientado a Blackwell (sm_120a); otras arquitecturas necesitan flags de compilación distintos.

Temas

Preguntas frecuentes

¿Qué es LeetCUDA?
Libro y colección de código de código abierto con apuntes actuales para aprender CUDA y más de 200 kernels de HGEMM, GEMM con FP8/FP4 y Flash-Attention. LeetCUDA es un recurso de aprendizaje para escribir kernels de GPU en CUDA, organizado como un libro de código abierto acompañado de un repositorio de código. Guía al lector desde kernels sencillos de operaciones elemento a elemento y reducción hasta multiplicación de matrices y atención. Cada tema sigue el mismo flujo de trabajo: implementación de un kernel CUDA, bindings de Python para PyTorch y pruebas.
¿LeetCUDA es gratuito? ¿Qué licencia tiene?
LeetCUDA es open source bajo la licencia GPL-3.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿LeetCUDA sigue mantenido?
Mantenimiento activo. El último commit de LeetCUDA fue el 20 oct 2026.
¿Para qué puedo usar LeetCUDA?
Aprender programación de kernels CUDA paso a paso, desde los conceptos básicos hasta los avanzados Estudiar la multiplicación de matrices con Tensor Cores y las implementaciones de FlashAttention Comparar el rendimiento de kernels personalizados de GEMM o atención con cuBLAS o SDPA Proporcionar a un agente de programación ejemplos de referencia de CUDA mediante la skill incluida
¿Cómo se instala LeetCUDA?
Clona el repositorio e inicializa los submódulos: git clone https://github.com/xlite-dev/LeetCUDA.git && cd LeetCUDA Actualiza los submódulos y entra en el directorio interview kernels: git submodule update --init --recursive --force && cd kernels/interview Instala las versiones más recientes de cuBLAS y cuDNN para los benchmarks (sustituye las versiones antiguas como se indica en el README): apt install -y cublas-cuda-13 cudnn9-cuda-13 && apt install -y ccache Compila para GPU Blackwell y ejecuta el benchmark: ./build.sh --arch sm_120a && ./bin/leetcuda_bench_sm120a.bin --bench
¿Dónde consigo LeetCUDA?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/xlite-dev/LeetCUDA

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados