Repolode
NVIDIA

NVIDIA/MatX

Una biblioteca header-only de C++20 para expresiones de tensores al estilo NumPy que se ejecutan en GPU NVIDIA o en CPU multinúcleo, con fusión de kernels opcional.

Alternativa open source a:NumPyCuPy

Estrellas
1,451
Forks
133
Issues abiertos
22
Último commit
hace 19 horas

¿Qué es?

MatX es una biblioteca de computación numérica en C++20 que permite escribir código para arreglos con un estilo similar al de NumPy. Incluye broadcasting, slicing, reducciones, álgebra lineal, FFT, solvers y generación de números aleatorios. Las expresiones son lazy y solo se evalúan al ejecutarlas con un executor elegido, como el executor CUDA para GPU NVIDIA, un executor JIT o un executor multinúcleo para CPU.

Con MathDx habilitado, el executor CUDA JIT puede fusionar expresiones compatibles —incluidas operaciones compatibles de multiplicación de matrices, FFT, solver y generación de números aleatorios— en un solo kernel generado. Esto elimina temporales intermedios y lanzamientos de kernels adicionales. El proyecto es header-only, requiere una toolchain de C++20 y CUDA Toolkit para las compilaciones para GPU, y es compatible con Linux, además de ofrecer compatibilidad alfa con Windows.

La ejecución en CPU puede delegar las operaciones de FFT, BLAS y LAPACK a backends optimizados para CPU, como NVPL, FFTW, OpenBLAS y BLIS, cuando esas opciones se habilitan durante la compilación.

Funciones clave

  • 01Arreglos similares a los de NumPy, con rango arbitrario, vistas, slicing y broadcasting.
  • 02Expresiones lazy elemento a elemento que se ejecutan mediante executors intercambiables para GPU o CPU.
  • 03Fusión de kernels JIT para operaciones compatibles de FFT, BLAS, solver y generación de números aleatorios.
  • 04Uso optimizado de bibliotecas CUDA y backends para CPU, como NVPL, FFTW, OpenBLAS y BLIS.
  • 05Integración header-only con CMake y empaquetado para Conan.

Casos de uso

  • Portar código numérico al estilo NumPy de Python a C++ sin renunciar al rendimiento de la GPU.
  • Crear pipelines de procesamiento de señales que combinen FFT con operaciones matemáticas elemento a elemento en GPU NVIDIA.
  • Ejecutar operaciones de álgebra lineal por lotes o cálculos similares a la valoración de opciones en GPU o en CPU multinúcleo.
  • Crear prototipos de kernels numéricos sin escribir manualmente el código de infraestructura de CUDA.

Inicio rápido

  1. 1

    Añade el repositorio a tu proyecto de CMake y enlaza su destino de interfaz

    add_subdirectory(path/to/MatX)
  2. 2

    Incluye la API en tu archivo de código fuente

    #include <matx.h>
  3. 3

    Compila localmente los ejemplos y las pruebas de MatX

    cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON
  4. 4

    Compila el proyecto y ejecuta el conjunto de pruebas

    cmake --build build -j

Antes de usarlo

  • El ejecutor de CUDA requiere GPU NVIDIA; también se admite la ejecución en CPU.
  • La fusión de kernels JIT es experimental y requiere la opción -DMATX_EN_MATHDX=ON junto con una forma o una operación compatible.
  • Algunas reducciones y transformaciones en el host siguen ejecutándose en un solo hilo.

En colecciones

Temas

Preguntas frecuentes

¿Qué es MatX?
Una biblioteca header-only de C++20 para expresiones de tensores al estilo NumPy que se ejecutan en GPU NVIDIA o en CPU multinúcleo, con fusión de kernels opcional. MatX es una biblioteca de computación numérica en C++20 que permite escribir código para arreglos con un estilo similar al de NumPy. Incluye broadcasting, slicing, reducciones, álgebra lineal, FFT, solvers y generación de números aleatorios. Las expresiones son lazy y solo se evalúan al ejecutarlas con un executor elegido, como el executor CUDA para GPU NVIDIA, un executor JIT o un executor multinúcleo para CPU.
¿MatX es gratuito? ¿Qué licencia tiene?
MatX es open source bajo la licencia BSD-3-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿MatX sigue mantenido?
Mantenimiento activo. El último commit de MatX fue el 5 nov 2026.
¿Para qué puedo usar MatX?
Portar código numérico al estilo NumPy de Python a C++ sin renunciar al rendimiento de la GPU. Crear pipelines de procesamiento de señales que combinen FFT con operaciones matemáticas elemento a elemento en GPU NVIDIA. Ejecutar operaciones de álgebra lineal por lotes o cálculos similares a la valoración de opciones en GPU o en CPU multinúcleo. Crear prototipos de kernels numéricos sin escribir manualmente el código de infraestructura de CUDA.
¿Cómo se instala MatX?
Añade el repositorio a tu proyecto de CMake y enlaza su destino de interfaz: add_subdirectory(path/to/MatX) Incluye la API en tu archivo de código fuente: #include <matx.h> Compila localmente los ejemplos y las pruebas de MatX: cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON Compila el proyecto y ejecuta el conjunto de pruebas: cmake --build build -j
¿Dónde consigo MatX?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/NVIDIA/MatX

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

Proyectos relacionados

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.

Recursos de aprendizaje#cuda#gpu#tensor-cores
12,2 mil+16 esta semana1,3 milCudaGPL-3.0Actualizado ayer