Uma biblioteca rápida e ergonômica de tensores N-dimensional em Nim, com backends para CPU, CUDA e OpenCL, voltada à computação numérica e ao deep learning.
- 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
Adicione o repositório ao seu projeto CMake e vincule o target de interface
add_subdirectory(path/to/MatX) - 2
Inclua a API no arquivo-fonte
#include <matx.h> - 3
Compile localmente os exemplos e testes do MatX
cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON - 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
Biblioteca de templates CUDA C++ e DSL em Python para criar kernels GEMM e de álgebra linear relacionados, de alto desempenho, em GPUs NVIDIA.
NCCL é a biblioteca da NVIDIA com primitivas otimizadas de comunicação entre GPUs, como all-reduce e all-gather, para treinamento em um ou vários nós.
Framework de computação em GPU em C++ e Python, baseado em Vulkan, para executar cargas de trabalho de uso geral em GPUs AMD, Qualcomm, NVIDIA e de outros fabricantes.
Agente de kernels GPU com autoevolução que otimiza kernels CUDA e CuTe DSL, promovendo cada kernel aceito a nova referência.
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.