用 Nim 编写的高性能 N 维张量库,支持 CPU、CUDA 和 OpenCL,面向数值计算与深度学习。
- 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
将仓库添加到你的 CMake 项目并链接其接口目标
add_subdirectory(path/to/MatX) - 2
在源文件中包含 API 头文件
#include <matx.h> - 3
在本地构建 MatX 示例和测试
cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON - 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 数据每日更新。
相关项目
面向 NVIDIA GPU 的 CUDA C++ 模板库与 Python DSL,用于编写高性能矩阵乘法等线性代数内核。
NCCL 是英伟达的 GPU 集合通信库,提供 all-reduce、all-gather 等优化原语,用于单机和多机训练。
基于 Vulkan 的通用 GPU 计算框架,提供 C++ 与 Python 接口,可在 AMD、高通、NVIDIA 等多厂商显卡上运行。
开源 CUDA 学习笔记与代码合集,包含 200 多个内核,涵盖 HGEMM、FP8/FP4 GEMM 与 Flash-Attention。