Repolode
NVIDIA

NVIDIA/MatX

基于 C++20 的头文件库,以 NumPy 风格的张量表达式在 NVIDIA GPU 或多线程 CPU 上进行数值计算,支持可选的内核融合。

可替代:NumPyCuPy

Star
1,451
Fork
131
未关闭 Issue
22
最近提交
昨天

这是什么?

MatX 是一个 C++20 数值计算库,让开发者可以用接近 NumPy 的写法处理数组,支持广播、切片、归约、线性代数、FFT、求解器和随机数生成等操作。表达式采用惰性求值,只有在使用某个执行器(如用于 NVIDIA GPU 的 CUDA 执行器、JIT 执行器或多线程 CPU 执行器)运行时才会计算。

启用 MathDx 后,CUDA JIT 执行器可以把兼容的表达式(包括部分矩阵乘法、FFT、求解器和随机数运算)融合为一个运行时生成的内核,从而减少中间临时张量和额外的内核启动。该项目为纯头文件库,GPU 构建需要支持 C++20 的编译器和 CUDA Toolkit,目前完整支持 Linux,Windows 为 alpha 支持。

在 CPU 上运行时,若构建时开启相应选项,FFT、BLAS 和 LAPACK 操作可以调用 NVPL、FFTW、OpenBLAS 或 BLIS 等优化后端。

核心功能

  • 01类 NumPy 的任意维张量,支持视图、切片和广播。
  • 02惰性求值的逐元素表达式,可在 GPU 或 CPU 执行器之间切换。
  • 03对受支持的 FFT、BLAS、求解器和随机数运算进行 JIT 内核融合。
  • 04调用优化的 CUDA 库,并支持 NVPL、FFTW、OpenBLAS、BLIS 等 CPU 后端。
  • 05纯头文件集成,提供 CMake 和 Conan 打包方式。

适用场景

  • 把 NumPy 风格的数值代码移植到 C++,同时保留 GPU 性能。
  • 在 NVIDIA GPU 上构建结合 FFT 与逐元素运算的信号处理流水线。
  • 在 GPU 或多线程 CPU 上运行批量线性代数或期权定价类计算。
  • 无需手写 CUDA 底层代码即可快速验证数值计算内核。

快速上手

  1. 1

    将仓库添加到你的 CMake 项目并链接其接口目标

    add_subdirectory(path/to/MatX)
  2. 2

    在源文件中包含 API 头文件

    #include <matx.h>
  3. 3

    在本地构建 MatX 示例和测试

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

    编译构建并运行测试套件

    cmake --build build -j

使用前须知

  • CUDA 执行器需要 NVIDIA GPU;也支持 CPU 执行。
  • JIT 内核融合处于实验阶段,需要开启 -DMATX_EN_MATHDX=ON 并使用受支持的形状或操作。
  • 部分主机端归约和变换仍为单线程。

收录于专题

标签

常见问题

MatX 是什么?
基于 C++20 的头文件库,以 NumPy 风格的张量表达式在 NVIDIA GPU 或多线程 CPU 上进行数值计算,支持可选的内核融合。 MatX 是一个 C++20 数值计算库,让开发者可以用接近 NumPy 的写法处理数组,支持广播、切片、归约、线性代数、FFT、求解器和随机数生成等操作。表达式采用惰性求值,只有在使用某个执行器(如用于 NVIDIA GPU 的 CUDA 执行器、JIT 执行器或多线程 CPU 执行器)运行时才会计算。
MatX 可以免费使用吗?用的什么许可证?
MatX 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
MatX 还在维护吗?
活跃维护中。MatX 最近一次提交是在 2026年11月6日。
MatX 适合用来做什么?
把 NumPy 风格的数值代码移植到 C++,同时保留 GPU 性能。 在 NVIDIA GPU 上构建结合 FFT 与逐元素运算的信号处理流水线。 在 GPU 或多线程 CPU 上运行批量线性代数或期权定价类计算。 无需手写 CUDA 底层代码即可快速验证数值计算内核。
MatX 怎么安装和运行?
将仓库添加到你的 CMake 项目并链接其接口目标: add_subdirectory(path/to/MatX) 在源文件中包含 API 头文件: #include <matx.h> 在本地构建 MatX 示例和测试: cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON 编译构建并运行测试套件: cmake --build build -j
在哪里获取 MatX?
源代码和安装说明在 GitHub 上:https://github.com/NVIDIA/MatX

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目

开源 CUDA 学习笔记与代码合集,包含 200 多个内核,涵盖 HGEMM、FP8/FP4 GEMM 与 Flash-Attention。

学习资源#cuda#gpu#tensor-cores
1.2万+17 本周1275CudaGPL-3.0更新于 前天