Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 系统与高性能 / Systems & Performance

计算系统 / Computing Systems

1. 计算系统:计算机如何执行与加速程序

2. 从 C++ 源码到 CPU 执行

3. CPU 流水线、乱序执行与分支预测

4. Cache、一致性、伪共享与 NUMA

5. GPU、SM、Warp 与显存

6. 计算执行模型:程序怎样映射到机器

7. SIMD 与编译器向量化

8. C++ 多线程与 OpenMP

9. CUDA 平台与编程模型

10. CUDA Kernel、内存与性能

11. CPU-GPU 异构流水线

12. MPI 与分布式并行

13. 并行算法模式

14. 性能模型与工具

15. 递进学习项目:从单线程到集群

历史完整正文 / Original Deep Dives

1. 历史完整正文:统一前文章逐篇保留

原体系结构与硬件 / Original Architecture

1. 硬件编程与高性能计算:一张可走通的学习地图 / A Practical Learning Map for Hardware Programming and HPC

2. 计算机体系结构:CPU、内存与 GPU / Computer Architecture: CPUs, Memory, and GPUs

3. 计算机架构基础——为什么 GPU 比 CPU 更快 / Computer Architecture Fundamentals: Why GPUs Outperform CPUs

4. 并行计算理论——30 天训练能优化到多快? / Parallel Computing Theory and the Limits of Training Acceleration

5. GPU 架构深入——上万个核心如何分工协作 / GPU Architecture and Massive Parallel Execution

6. CUDA 编程模型——把矩阵乘法映射到 GPU / The CUDA Programming Model for Mapping Matrix Multiplication to GPUs

7. CUDA 内存管理——百亿参数如何装进显存 / CUDA Memory Management for Large Models

8. CUDA 性能优化——从 30 天缩短到 10 天 / CUDA Performance Optimization

9. CPU 并行编程——OpenMP 与 SIMD 向量化 / CPU Parallel Programming with OpenMP and SIMD

10. HPC 集群与 MPI——多节点分布式训练 / HPC Clusters and MPI for Distributed Training

11. 异构计算——CPU 与 GPU 如何协同工作 / Heterogeneous Computing with CPUs and GPUs

12. 深度学习训练优化实战——从 30 天到 3 天 / Deep Learning Training Optimization from Thirty Days to Three

13. 性能分析工具——找到真正的瓶颈 / Performance Analysis Tools for Finding Real Bottlenecks

14. NPU 全景——昇腾/寒武纪/TPU/苹果生态 / The NPU Landscape: Ascend, Cambricon, TPU, and Apple

15. 未来趋势——2030 年的计算机会是什么形态 / Future Computing Trends Toward 2030

16. 硬件与高性能计算:从“程序为什么慢”开始 / Hardware and HPC Starting from Why Programs Are Slow

原并行计算 / Original Parallel Computing

1. 并行计算:从 SIMD 到 MPI / Parallel Computing from SIMD to MPI

2. 并行计算全景:从晶体管、CPU、GPU 到计算集群 / Parallel Computing from Transistors, CPUs, and GPUs to Clusters

3. 并行计算基础:任务分解、加速比与可扩展性 / Parallel Computing Fundamentals: Decomposition, Speedup, and Scalability

4. 处理器体系结构:从指令流水线到多核芯片 / Processor Architecture from Instruction Pipelines to Multicore Chips

5. CPU 并行:多线程、SIMD、Cache 一致性与 NUMA / CPU Parallelism with Threads, SIMD, Cache Coherence, and NUMA

6. 内存层次:Cache、带宽、局部性与一致性 / Memory Hierarchies, Bandwidth, Locality, and Coherence

7. GPU 体系结构:SIMT、Warp、SM 与吞吐优先设计 / GPU Architecture with SIMT, Warps, and Streaming Multiprocessors

8. CUDA 编程模型:Thread、Block、Grid 与内存协作 / CUDA Threads, Blocks, Grids, and Cooperative Memory Access

9. 并行算法模式:Map、Reduce、Scan、Stencil 与任务图 / Parallel Patterns: Map, Reduce, Scan, Stencil, and Task Graphs

10. 异构计算:CPU、GPU、NPU 如何协同工作 / Heterogeneous Computing with CPUs, GPUs, and NPUs

11. 分布式并行:MPI、集合通信、RDMA 与多机多卡 / Distributed Parallelism with MPI, Collective Communication, and RDMA

12. 性能工程:测量、Roofline、瓶颈定位与优化闭环 / Performance Engineering with Measurement, Roofline, and Bottleneck Analysis

13. 并行计算实战:AI、CAE、图像与科学计算 / Parallel Computing for AI, CAE, Imaging, and Scientific Computing

14. 并行计算实践路线:从单核优化到多机多卡 / A Parallel Computing Project Path from Single-Core to Multi-Node GPUs

本页目录

NPU 全景——昇腾/寒武纪/TPU/苹果生态 / The NPU Landscape: Ascend, Cambricon, TPU, and Apple ​

📅 创建时间:2026-06-02 🏷️ 标签:#NPU #昇腾 #寒武纪 #TPU #CoreML #边缘AI 📚 前置知识:[[03-gpu-architecture]](GPU 架构) [[04-cuda-programming-model]](CUDA 编程) 📚 相关知识:[[13-future-trends]](未来趋势)


先抓住直觉 ​

NPU、TPU、GPU 都是在计算、存储和数据通路之间做不同取舍。学习这一章不应背厂商参数,而应比较:擅长哪些算子、数据如何流动、软件栈是否成熟、迁移成本有多高。

  • 必须理解:专用化为何能提高效率;硬件能力与软件生态缺一不可。
  • 用到再查:芯片型号、峰值算力、SDK 名称和版本差异。
  • 读完能回答:选型时为什么不能只比较 TOPS/TFLOPS?

场景:除了 NVIDIA,还有哪些 AI 芯片? ​

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  你在写简历,技能栏写的是:                                │
│  "熟悉 CUDA 编程"                                        │
│                                                             │
│  面试官问:                                               │
│  "你们公司用昇腾 NPU 吗?"                              │
│  "对苹果的 ANE 了解多少?"                              │
│  "TPU 和 GPU 训练有什么区别?"                            │
│                                                             │
│  你一脸茫然。                                            │
│  这章让你对这些 NPU 有一个全局认识,                      │
│  至少被问到时能说出个所以然。                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

第1节:为什么需要 NPU? ​

┌─────────────────────────────────────────────────────────────┐
│                    AI 芯片市场格局                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  NVIDIA GPU:                                           │
│  - 霸主地位,80%+ 市场份额                              │
│  - CUDA 生态完善                                        │
│  - 训练推理通吃                                        │
│  - 价格贵,供货不稳定                                   │
│                                                             │
│  原因导致市场需要替代品:                               │
│  1. 美国出口管制 → 中国公司需要国产替代                 │
│  2. 移动端/边缘端 GPU 太贵太耗电 → 专用 NPU         │
│  3. 成本控制 → 不同场景用不同芯片                      │
│                                                             │
│  主要玩家:                                              │
│  - 昇腾 NPU(华为)                                    │
│  - 寒武纪 MLU(国内)                                  │
│  - Google TPU(云端)                                   │
│  - 苹果 ANE(移动端)                                   │
│  - 高通/联发科 NPU(移动端)                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

第2节:昇腾 NPU(华为) ​

基本信息 ​

┌─────────────────────────────────────────────────────────────┐
│                    昇腾 NPU 系列                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  昇腾 910(训练):                                      │
│  - 16×16 NPU Core(达芬奇架构)                        │
│  - FP16 算力:256 TFLOPS                               │
│  - 32 GB HBM                                           │
│  - 对标 A100                                            │
│                                                             │
│  昇腾 310(推理):                                     │
│  - 8×8 NPU Core                                        │
│  - INT8 算力:64 TOPS                                   │
│  - 功耗:8W(移动端)                                  │
│  - 用于手机、汽车、IoT                                  │
│                                                             │
│  生态:                                                 │
│  - CANN(Compute Architecture for Neural Networks)     │
│  - Ascend CL(类 CUDA C++ 编程)                       │
│  - MindSpore(华为自研框架)                            │
│  - 支持 PyTorch、TensorFlow(通过 ACL)                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

编程模型(Ascend C) ​

cpp
// Ascend C:昇腾的类 CUDA 编程语言
// 类比 CUDA,但语法和 API 不同

#include "acl/acl.h"

// 数据类型
aclFloat16* d_a;  // 类比 float*

// 内存分配
aclrtMalloc(&d_a, size, ACL_MEM_MALLOC_HUGE_FIRST, ACL_MEMTYPE_UNIFIED);

// 内存拷贝
aclrtMemcpy(d_a, size, h_a, size, ACL_MEMCPY_HOST_TO_DEVICE);

// Kernel 类比 __global__
class MatMulKernel : public KernelBuild {
    public:
        bool Compute(KernelContext& ctx) {
            // 类似 CUDA kernel
            int32_t pos = GetBlockDim() * GetBlockIdx() + GetThreadIdx();
            // 矩阵乘法计算...
            return true;
        }
};

// 启动
MatMulKernel kernel;
kernel.SetBlockDim(8);
kernel.Execute(inputs, outputs);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

生态对比 ​

┌─────────────────────────────────────────────────────────────┐
│                    CUDA vs CANN 对比                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  维度           │  CUDA(NVIDIA)     │  CANN(昇腾)      │
│  ──────────────┼────────────────────┼─────────────────── │
│  编程语言       │  CUDA C++ (.cu)    │  Ascend C / Python│
│  编译器         │  nvcc              │  ACCA / ACL        │
│  调试工具       │  cuda-gdb          │  msRuntime         │
│  性能分析       │  Nsight            │  Ascend Profiler   │
│  深度学习框架   │  PyTorch/TF        │  MindSpore/PyTorch │
│  生态成熟度     │  ★★★★★           │  ★★★☆☆         │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14

第3节:寒武纪 MLU ​

┌─────────────────────────────────────────────────────────────┐
│                    寒武纪 MLU 系列                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  MLU290(训练):                                         │
│  - 架构:Cambricon MLUv02                               │
│  - FP16 算力:256 TFLOPS                                 │
│  - 内存:64 GB HBM                                       │
│                                                             │
│  MLU370(推理):                                         │
│  - INT8 算力:256 TOPS                                  │
│  - 功耗:150W                                            │
│                                                             │
│  编程生态:                                              │
│  - NeuWare SDK                                           │
│  - 支持 PyTorch、TensorFlow                                │
│  - 类 CUDA 编程风格                                       │
│                                                             │
│  国内市场:主要在智算中心、政府项目                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

第4节:Google TPU ​

┌─────────────────────────────────────────────────────────────┐
│                    Google TPU 系列                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  TPU v4(当前主力):                                    │
│  - 架构:专用矩阵乘法器(Systolic Array)               │
│  - BF16 算力:275 TFLOPS/chip                          │
│  - 互联:ICL(Inter-Core Interconnect)                 │
│  - 用途:Google 内部训练,主要给 Google Cloud 用户用    │
│                                                             │
│  TPU 特点:                                               │
│  - 不支持任意 CUDA 代码(专用)                           │
│  - 只运行 TensorFlow / JAX / PyTorch(via XLA)         │
│  - 通过 XLA(Accelerated Linear Algebra)编译优化         │
│  - 训练和推理效率极高                                    │
│                                                             │
│  使用方式:                                                │
│  - Google Cloud TPU 虚拟机                               │
│  - JAX 或 PyTorch + XLA                                │
│  - 没法本地跑,只能云端用                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

TPU vs GPU 架构差异 ​

┌─────────────────────────────────────────────────────────────┐
│                    Systolic Array vs GPU                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  GPU(SIMD):                                           │
│  - 通用并行计算                                          │
│  - 灵活,支持任意算法                                    │
│  - CUDA 生态完善                                         │
│                                                             │
│  TPU(Systolic Array):                                 │
│  - 专用矩阵乘法                                          │
│  - 矩阵乘效率极高(省去寄存器访问)                       │
│  - 但灵活性差                                            │
│                                                             │
│  比喻:                                                   │
│  GPU = 瑞士军刀(什么都能干,但不是每个都最快)          │
│  TPU = 专用冲床(只能冲孔,但冲孔极快)                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

第5节:苹果 Apple Silicon ANE ​

┌─────────────────────────────────────────────────────────────┐
│                    苹果 ANE(Neural Engine)               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Apple Silicon 系列(M1/M2/M3 芯片):                   │
│  - ANE:16 核神经网络引擎                                │
│  - INT8 算力:38 TOPS(M2 Ultra)                      │
│  - 功耗:极低(手机/PC 级别)                          │
│  - 主要用于:图像处理、语音识别、AR                    │
│                                                             │
│  编程方式:                                              │
│  - Core ML(Apple 的机器学习框架)                        │
│  - 开发者通过 Core ML 部署模型                          │
│  - 不需要手写 kernel,框架自动调度 ANE                  │
│                                                             │
│  #include <CoreML/CoreML.h>                           │
│  MLModel* model = [[MLModel alloc] initWithContentsOfURL:url];│
│  MLFeatureProvider* input = ...;                          │
│  MLFeatureProvider* output = [model predictionFromFeatures:input];│
│                                                             │
│  特点:                                                   │
│  - 完全不需要理解硬件                                      │
│  - 苹果屏蔽了所有底层细节                                │
│  - 开发者体验好,但控制力弱                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

第6节:各 NPU 生态对比 ​

┌─────────────────────────────────────────────────────────────────────────┐
│                        AI 芯片生态全景对比                                       │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  芯片        │ 公司      │ 算力(FP16)  │ 生态成熟度  │ 编程方式        │
│  ────────────┼───────────┼──────────────┼─────────────┼─────────────────│
│  A100/H100   │ NVIDIA    │ 312/989 TFLOPS│ ★★★★★     │ CUDA C++       │
│  昇腾 910    │ 华为      │ 256 TFLOPS    │ ★★★☆☆     │ Ascend C/CANN  │
│  MLU290      │ 寒武纪    │ 256 TFLOPS    │ ★★☆☆☆     │ NeuWare        │
│  TPU v4      │ Google    │ 275 TFLOPS    │ ★★★★☆     │ XLA/JAX/TF     │
│  ANE         │ 苹果      │ N/A (INT8)   │ ★★★★★     │ Core ML        │
│  Hexagon     │ 高通      │ ~60 TOPS(INT8)│ ★★★☆☆     │ SNPE/QNN       │
│                                                                         │
│  选择建议:                                                             │
│  - 深度学习训练/研究:→ NVIDIA GPU(CUDA 生态)                 │
│  - 国产化/昇腾项目:→ 昇腾 NPU + CANN                         │
│  - 云端大模型训练:→ Google TPU 或 NVIDIA H100                 │
│  - 移动端/边缘推理:→ 苹果 ANE / 高通 Hexagon                 │
│  - 成本敏感项目:→ 国产 NPU(昇腾/寒武纪)                    │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

升华:理解 NPU 生态的价值 ​

┌─────────────────────────────────────────────────────────────┐
│                    为什么工程狮要了解 NPU?                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 面试加分                                             │
│  能说出昇腾 vs GPU 的生态差异,比只会 CUDA 更全面         │
│                                                             │
│  2. 国产化趋势                                           │
│ 越来越多的政府和国企项目要求使用国产芯片                  │
│                                                             │
│  3. 场景适配                                             │
│ 移动端用 ANE,服务器用 GPU,智算中心用昇腾              │
│ 不同场景选不同芯片是工程能力                              │
│                                                             │
│  4. 理解计算本质                                         │
│  所有 NPU/GPU 都是矩阵乘法的加速器                       │
│  理解了本质,换平台只是 API 不同                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

"AI 可查 vs 必须理解"清单 ​

AI 可查:
✅ 昇腾/寒武纪/TPU 的具体 SDK API
✅ Core ML 的具体使用方法
✅ 各芯片的具体算力参数

必须理解:
🔴 NVIDIA CUDA 是生态最完善的,其他都是类比
🔴 昇腾用 CANN + Ascend C,类 CUDA 但生态不如 CUDA
🔴 TPU = Systolic Array,专为矩阵乘法设计,效率高但灵活性差
🔴 苹果 ANE = Core ML 屏蔽底层,开发者体验好但控制力弱
🔴 选型原则:训练用 GPU/TPU,移动端用 NPU,国产化用昇腾/寒武纪
1
2
3
4
5
6
7
8
9
10
11

学习状态:🟡 开始学习

历史选型说明 ​

本页保留早期 NPU 生态比较,厂商工具、算子覆盖和性能参数可能已变化。

引用结论前应在目标版本重新确认:

  • 模型与算子;
  • 精度和量化;
  • 编译器;
  • 内存;
  • 动态形状;
  • 部署工具;
  • 调试能力;
  • 延迟、吞吐和能耗;
  • 供应与维护周期。

当前选型不能只依赖历史峰值和笼统生态评价。

怎样使用历史比较 ​

历史文章中的产品名称、工具链和参数反映当时可观察状态,适合帮助读者理解不同加速器的设计方向,不适合直接充当今天的采购清单。引用某个“更适合训练”或“更适合端侧”的结论时,应找到当时对应的模型、精度、功耗和软件版本,并在当前候选环境重新运行同一类工作负载。缺少这些条件时,保留原结论的历史语境,不把它改写成普遍规律。

峰值指标的限制 ​

TOPS、FLOPS 和内存带宽描述不同硬件上限,通常基于特定数据类型与理想工作负载。真实模型还受到算子覆盖、形状、融合、内存规划和 Host 回退影响。历史峰值可以解释厂商设计重点,但无法代替端到端延迟、吞吐和能效测量。跨厂商比较前必须统一精度、Batch、输入和统计口径。

软件栈变化 ​

NPU 的可用能力很大程度由编译器、运行时和框架适配决定。新版本可能增加算子,也可能改变量化、布局和部署格式。复现历史示例时要记录 SDK、驱动、编译器、模型转换器和运行时版本。无法获得原版本时,当前运行结果属于迁移实验,不能声称完全复现历史数据。

算子回退 ​

模型转换成功不代表整图在 NPU 上运行。检查编译报告和运行 Trace,确认不支持算子是否回退到 CPU,以及回退前后是否发生设备同步和张量转换。少量位于关键路径的回退就可能破坏加速收益。历史文章没有记录回退时,应把对应性能数字标为证据不足。

精度边界 ​

旧版文章中对低精度的描述需要结合当前模型重新验证。校准数据、量化粒度、累加精度和后处理都会影响结果。通用分类准确率不是所有领域的正确性标准,工业或科学场景还要检查阈值行为、误差分布和领域不变量。性能数字与正确性证据必须成对保存。

复现报告 ​

复现历史 NPU 内容时,报告应包含原文来源提交、当前硬件、软件栈、模型、输入、编译诊断、设备与 Host 时间、内存、功耗和结果差异。对于无法验证的厂商内部架构,只描述公开接口和测量现象,不从相似 API 推断实现。这样归档既保留历史,也不会误导当前工程决策。

与当前文章的关系 ​

当前权威文章负责更新选型方法与共同指标,历史页面负责保留原始分类和早期生态观察。发现旧内容仍有独特案例时,应核验后迁移到当前文章;发现旧命令失效时,可以增加迁移注释,但不应无记录覆盖原文。读者需要最新结论时先看当前文章,需要追溯变化时再回到本页。

最后更新于:

Pager
上一篇13. 性能分析工具——找到真正的瓶颈 / Performance Analysis Tools for Finding Real Bottlenecks
下一篇15. 未来趋势——2030 年的计算机会是什么形态 / Future Computing Trends Toward 2030

持续记录,持续成长

Copyright © Tidenflow