国产芯片是否有类似 NVIDIA TMA 的能力:华为、摩尔线程、沐曦对比
0. 总结结论
严格说:
国产芯片一般不叫 TMA; NVIDIA Hopper 的 TMA 是一个特定硬件/编程模型; 国产芯片更多是用自己的名字和体系实现类似“异步搬运 + 片上缓存 + 计算流水”的能力。更准确地说:
华为昇腾: 有类似目的的 DMA / MTE / DataCopy 能力,但不是 NVIDIA TMA 的一比一等价物。 摩尔线程: 公开资料里有较明确的 TMA-like 能力,叫 TME / Tensor Memory Extension。 沐曦: 公开资料里没有看到明确的 TMA / TME 等价物; 但有 CUDA-like 编程模型、shared memory、stream、async memcpy、graph 等能力。一句话:
华为有 MTE/DataCopy,摩尔线程有 TME,沐曦目前公开资料里没看到明确的 TMA-like 专用 tensor memory engine。
1. 先定义:NVIDIA Hopper TMA 是什么?
TMA 全称是:
Tensor Memory Accelerator它是 NVIDIA Hopper 架构中的专用张量搬运硬件。
它的核心作用是:
把 global memory / HBM 中的大块 tensor tile 高效、异步地搬到 shared memory以前在 A100/A800 这种 Ampere 上,global memory 到 shared memory 的搬运主要靠:
cp.async也就是很多 CUDA 线程自己参与地址计算和数据搬运。
Hopper TMA 更像一个专用 DMA:
以前: 很多线程自己算地址、自己搬 tile TMA: 一个线程提交 tensor copy descriptor 硬件负责多维 tensor 地址计算和搬运 其他线程继续计算它解决的问题是:
Tensor Core 很快,但数据喂不上去。所以 TMA 的核心价值是:
让数据搬运和矩阵计算更好地重叠。
在 FlashAttention-3 里,TMA 很关键,因为 attention 要不断搬:
Q tile K tile V tile如果 Tensor Core 在等 K/V 从 HBM 进入 shared memory,算力就浪费了。TMA 就是为了减少这种等待。
2. 华为昇腾有没有类似 TMA 的能力?
结论:
有类似目的的能力,但不叫 TMA。 华为昇腾走的是 MTE / DMA / DataCopy / Local Memory / Cube 的路线。最准确的类比是:
NVIDIA Hopper: HBM → TMA → Shared Memory → WGMMA / Tensor Core 华为昇腾: Global Memory → MTE2 / DataCopy → Local Memory / UB / L0 → Cube / Vector 计算后: Local Memory / UB → MTE3 / DataCopy → Global Memory华为昇腾 AI Core 中通常包含:
Cube 单元 :矩阵计算 Vector 单元 :向量计算 Scalar 单元 :标量控制与调度 Local Memory :片上存储 DMA / MTE 单元 :数据搬运其中:
MTE2:负责数据搬入 MTE3:负责数据搬出 DataCopy:Ascend C 中常用的数据搬运接口所以从功能定位上看:
| 能力 | NVIDIA Hopper | 华为昇腾 |
|---|---|---|
| 数据搬运硬件 | TMA | DMA / MTE2 / MTE3 |
| 片上缓存 | Shared Memory | Local Memory / UB / L0 |
| 编程接口 | CUDA / PTX / CuTe / CUTLASS | Ascend C / DataCopy |
| 搬运和计算重叠 | TMA + async barrier + WGMMA | MTE + Cube / Vector + Queue / Pipe / Double Buffer |
| 是否等价 | Hopper 特定机制 | 不是一比一等价,但思想类似 |
昇腾的优化思想和 NVIDIA 很像:
1. 把大矩阵 / tensor 切成 tile 2. 从 Global Memory 搬到 Local Memory 3. 在 Cube / Vector 上计算 4. 同时搬下一块数据 5. 用 double buffer / pipeline 隐藏搬运延迟但它的硬件抽象和 CUDA 完全不同。
华为昇腾和 NVIDIA TMA 的关键差异
1. NVIDIA TMA 是 Hopper GPU 暴露出来的特定硬件/编程模型; 2. 昇腾是 NPU / DSA 架构,叫 MTE / DMA,不叫 TMA; 3. NVIDIA TMA 和 WGMMA 是 CUDA 生态里强绑定的异步流水; 4. 昇腾是 DataCopy + Pipe / Queue + Cube / Vector / MTE 的流水; 5. 两者优化思想类似,但 kernel 写法、内存层级、调度模型完全不同。所以如果你问:
华为有没有 Hopper TMA + WGMMA + FlashAttention-3 那种路径?答案是:
没有一比一对应。但如果你问:
华为有没有类似“专门搬 tensor tile,并和计算流水重叠”的能力?答案是:
有。只是名字和编程方式不同。
对推理引擎/算子优化来说,应该这样理解:
在 NVIDIA H100 上: 围绕 TMA / WGMMA 写 tile pipeline。 在华为昇腾上: 围绕 DataCopy / MTE / Cube / Vector / Local Memory 写 tile pipeline。本质思想一样:
分块 搬运 计算 double buffer 搬运和计算重叠硬件抽象不同。
3. 摩尔线程有没有类似 TMA 的能力?
结论:
有,公开资料里叫 TME / Tensor Memory Extension。摩尔线程的公开资料中,TileLang-MUSA 对底层能力的描述比较接近 NVIDIA Hopper 的编程范式。
可以理解成:
NVIDIA Hopper: TMA + WGMMA + async barrier 摩尔线程 Pinghu: TME + SQMMA / TCE + async barrier其中:
TME = Tensor Memory Extension TCE = Tensor Core Engine SQMMA = 类似矩阵乘加速指令路径在 TileLang-MUSA 的抽象中:
T.copy → TME 或 global ↔ shared 专用搬运指令 T.gemm → TCE / SQMMA mbarrier → async barrier这说明摩尔线程至少在公开 DSL / 编译器层面,已经暴露了类似 Hopper TMA 的抽象:
global memory → shared memory 的专用搬运 异步流水 barrier 同步 tensor core GEMM所以摩尔线程可以说:
有 TMA-like 的 TME。
但要保守一点:
TME 不等于 NVIDIA TMA 的一比一复制。可能差别包括:
1. 是否支持 NVIDIA TMA 那种 1D–5D tensor descriptor; 2. 是否支持 cluster multicast; 3. 是否支持 shared memory swizzle descriptor; 4. 是否有 CUTLASS / CuTe 那样成熟的调度生态; 5. profiler / compiler / autotune 是否足够成熟; 6. FlashAttention / MoE / GEMM 生态是否完善。所以对摩尔线程更准确的评价是:
摩尔线程公开暴露了 TME,方向上最接近 NVIDIA TMA; 它已经进入“高性能 tile pipeline + 异步搬运 + tensor core”的路线。这对做推理引擎很重要。
因为它意味着摩尔线程不只是简单 CUDA API 兼容,而是开始暴露更底层的高性能 kernel 编程能力:
TileLang-MUSA ↓ T.copy → TME / global↔shared 专用搬运 T.gemm → SQMMA / TCE mbarrier → ASYNC barrier ↓ GEMM / FlashAttention / MoE kernel这和 Hopper 的优化范式很接近:
分块 tile global → shared 异步搬运 shared → tensor core 计算 计算和搬运 overlap4. 沐曦有没有类似 TMA 的能力?
结论:
目前公开资料里没有看到明确的 TMA / TME 等价物。沐曦的 MXMACA / MetaX 路线更像:
CUDA-like 编程模型 SIMT shared memory / Workgroup Shared Memory stream async memcpy graph PyTorch 适配 算子库这些能力说明沐曦可以做 GPU kernel 编程,也可以做 shared memory tiling。
例如它有:
线程 / wave / workgroup 全局内存 共享存储 / WSM 寄存器 stream 并发 异步 memcpy graph 降低 launch 开销但这些更多是:
CUDA-like runtime async copy stream overlap graph launch reduction workgroup shared memory还不能直接等同于:
global memory ↔ shared memory 的专用 TMA/TME 指令 单线程发起大块 tensor copy descriptor-based tensor copy async barrier + tensor memory engine所以对沐曦我会保守判断:
有 shared memory; 有异步运行时拷贝; 有 stream / graph; 有 CUDA-like 编程模型; 但公开资料里暂时没看到类似 NVIDIA TMA / 摩尔线程 TME 的明确暴露。当然,这不代表沐曦硬件内部完全没有类似机制。
更准确地说:
可能内部有类似的数据搬运优化机制, 但公开编程模型里没有像 NVIDIA TMA 或摩尔线程 TME 那样清楚暴露出来。对做推理引擎的人来说,这意味着:
沐曦更适合先按 CUDA-like 迁移路线做; 摩尔线程更适合研究更底层的 tile pipeline / TME / tensor core kernel。5. 横向对比
| 平台 | 是否叫 TMA | 是否有类似能力 | 公开程度 | 判断 |
|---|---|---|---|---|
| NVIDIA H100 / H800 | 是,TMA | 有 | 最完整 | 标准参照 |
| NVIDIA A100 / A800 | 否 | 有 cp.async,但无 TMA | 明确 | Ampere 路线 |
| 华为昇腾 | 否 | 有 MTE / DataCopy / DMA | 较明确 | NPU 路线,思想类似 |
| 摩尔线程 Pinghu | 否,叫 TME | 有 TMA-like 能力 | 较明确 | 国产 GPGPU 中最像 |
| 沐曦 MetaX / MACA | 未看到 | 有 shared memory / async runtime,但 TMA-like 不明确 | 中等 | 不能确认 |
6. 对推理引擎开发的意义
如果你的目标是做国产芯片推理引擎/算子优化,可以这样分路线。
6.1 NVIDIA H100 / H800
核心范式:
TMA + WGMMA + FP8适合:
FlashAttention-3 FP8 GEMM 高性能 MoE 大模型训练/推理优化关键词:
CuTe CUTLASS 3 TMA descriptor WGMMA async pipeline warpgroup6.2 NVIDIA A800 / A100
核心范式:
cp.async + mma.sync + shared memory tiling适合:
FlashAttention-2 BF16 / FP16 GEMM cuBLASLt CUTLASS Ampere kernel decode 优化 MoE grouped GEMM优化关键词:
large GEMM W1/W3 concat CUDA Graph persistent kernel fused dequant GEMV grouped GEMM all_reduce overlap6.3 华为昇腾
核心范式:
DataCopy / MTE + Cube / Vector + Local Memory + double buffer适合:
Ascend C 自定义算子 CANN 算子开发 矩阵乘 / attention / norm / activation 优化 国产化机器人/工业部署优化关键词:
Global Memory Local Memory UB / L0 MTE2 / MTE3 DataCopy Cube Vector Pipe Queue Double Buffer它不是 TMA 路线,但思想一致:
把数据提前搬到片上; 计算当前 tile; 同时搬下一 tile; 用 pipeline 隐藏访存。6.4 摩尔线程
核心范式:
TME + TCE / SQMMA + async barrier适合:
国产 GPGPU 推理引擎 GEMM FlashAttention MoE TileLang-MUSA kernel优化关键词:
TileLang-MUSA T.copy T.gemm TME TCE SQMMA mbarrier async pipeline摩尔线程对你这种做推理引擎的人比较有价值,因为它暴露出接近 Hopper 的底层 tile pipeline 抽象。
6.5 沐曦
核心范式:
CUDA-like / SIMT / shared memory / stream / graph适合:
CUDA 代码迁移 PyTorch 适配 算子库适配 普通 GPU kernel 优化优化关键词:
MXMACA mcPytorch stream async memcpy graph shared memory / WSM SIMT wave目前不能确认它有公开的 TMA-like 指令抽象。
所以沐曦路线更像:
先迁移 CUDA-like 代码; 再看底层编译器 / ISA / kernel 文档是否暴露更强的数据搬运机制。7. 最终判断
如果只问:
国内芯片有没有 TMA?严格答案:
没有 NVIDIA Hopper TMA 这个同名能力。如果问:
国内芯片有没有类似 TMA 的思想和能力?答案:
有。具体是:
华为昇腾: MTE / DMA / DataCopy,NPU 路线,思想类似。 摩尔线程: TME / Tensor Memory Extension,公开上最接近 NVIDIA TMA。 沐曦: 有 CUDA-like shared memory 和异步 runtime 能力, 但暂时没看到公开的 TMA / TME 等价能力。最简洁结论:
华为有类似搬运单元,但叫 MTE/DataCopy;摩尔线程有公开的 TME,最像国产版 TMA;沐曦目前公开资料里没有看到明确的 TMA-like 能力。