Repolode
NVIDIA

NVIDIA/MatX

Biblioteca header-only em C++20 para expressões de tensor no estilo NumPy, executadas em GPUs NVIDIA ou CPUs multithread, com fusão opcional de kernels.

Alternativa open source a:NumPyCuPy

Estrelas
1,451
Forks
133
Issues abertas
22
Último commit
há 16 horas

O que é?

MatX é uma biblioteca de computação numérica em C++20 que permite escrever código para arrays em um estilo próximo ao NumPy, com broadcasting, slicing, reduções, álgebra linear, FFTs, solvers e geração de números aleatórios. As expressões são lazy e só são avaliadas quando executadas por um executor escolhido, como o executor CUDA para GPUs NVIDIA, um executor JIT ou um executor multithread para CPU.

Com o MathDx habilitado, o executor CUDA JIT pode fundir expressões compatíveis — incluindo operações suportadas de multiplicação de matrizes, FFT, solver e geração de números aleatórios — em um único kernel gerado. Isso elimina temporários intermediários e lançamentos extras de kernels. O projeto é header-only, exige uma toolchain C++20 e o CUDA Toolkit para builds com GPU, e oferece suporte a Linux e suporte alfa a Windows.

A execução na CPU pode encaminhar operações de FFT, BLAS e LAPACK para backends otimizados, como NVPL, FFTW, OpenBLAS e BLIS, quando essas opções são habilitadas no momento do build.

Recursos principais

  • 01Arrays no estilo NumPy com rank arbitrário, views, slicing e broadcasting.
  • 02Expressões elementwise lazy executadas por meio de executores intercambiáveis para GPU ou CPU.
  • 03Fusão de kernels JIT em operações compatíveis de FFT, BLAS, solver e geração de números aleatórios.
  • 04Uso otimizado de bibliotecas CUDA e backends para CPU, incluindo NVPL, FFTW, OpenBLAS e BLIS.
  • 05Integração header-only com empacotamento para CMake e Conan.

Casos de uso

  • Portar código numérico no estilo NumPy de Python para C++ sem abrir mão do desempenho da GPU.
  • Criar pipelines de processamento de sinais que combinam FFTs e operações matemáticas elementwise em GPUs NVIDIA.
  • Executar operações de álgebra linear em lote ou cálculos no estilo de precificação de opções em GPUs ou CPUs multithread.
  • Prototipar kernels numéricos sem escrever manualmente a infraestrutura CUDA.

Início rápido

  1. 1

    Adicione o repositório ao seu projeto CMake e vincule o target de interface

    add_subdirectory(path/to/MatX)
  2. 2

    Inclua a API no arquivo-fonte

    #include <matx.h>
  3. 3

    Compile localmente os exemplos e testes do MatX

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

    Compile o projeto e execute a suíte de testes

    cmake --build build -j

Antes de usar

  • O executor CUDA requer GPUs NVIDIA; a execução em CPU também é compatível.
  • A fusão de kernels JIT é experimental e requer a opção -DMATX_EN_MATHDX=ON com uma forma ou operação compatível.
  • Algumas reduções e transformações no host ainda são executadas em uma única thread.

Em coleções

Tópicos

Perguntas frequentes

O que é MatX?
Biblioteca header-only em C++20 para expressões de tensor no estilo NumPy, executadas em GPUs NVIDIA ou CPUs multithread, com fusão opcional de kernels. MatX é uma biblioteca de computação numérica em C++20 que permite escrever código para arrays em um estilo próximo ao NumPy, com broadcasting, slicing, reduções, álgebra linear, FFTs, solvers e geração de números aleatórios. As expressões são lazy e só são avaliadas quando executadas por um executor escolhido, como o executor CUDA para GPUs NVIDIA, um executor JIT ou um executor multithread para CPU.
MatX é gratuito? Qual é a licença?
MatX é open source sob a licença BSD-3-Clause. Confira os termos da licença antes de usá-lo em produtos comerciais.
MatX ainda é mantido?
Manutenção ativa. O último commit de MatX foi em 5 de nov. de 2026.
Para que posso usar MatX?
Portar código numérico no estilo NumPy de Python para C++ sem abrir mão do desempenho da GPU. Criar pipelines de processamento de sinais que combinam FFTs e operações matemáticas elementwise em GPUs NVIDIA. Executar operações de álgebra linear em lote ou cálculos no estilo de precificação de opções em GPUs ou CPUs multithread. Prototipar kernels numéricos sem escrever manualmente a infraestrutura CUDA.
Como instalar MatX?
Adicione o repositório ao seu projeto CMake e vincule o target de interface: add_subdirectory(path/to/MatX) Inclua a API no arquivo-fonte: #include <matx.h> Compile localmente os exemplos e testes do MatX: cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON Compile o projeto e execute a suíte de testes: cmake --build build -j
Onde consigo MatX?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/NVIDIA/MatX

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados

Livro open source e coleção de código com anotações sobre CUDA moderno e mais de 200 kernels, cobrindo HGEMM, GEMM em FP8/FP4 e Flash-Attention.

Recursos de aprendizado#cuda#gpu#tensor-cores
12,2 mil+16 esta semana1,3 milCudaGPL-3.0Atualizado há 21 horas