跳到主要内容
TileLang 系统教程

tilelang-tutorial.huandu.me

第 06 章 芯片导论:NV GPU 与昇腾 NPU 的抽象对照

/code/06-hardware-intro-nv-vs-ascend/

README.md1809 字节
# 第 06 章 代码

本章是硬件导论,代码的使命不是「跑出一个算子」,而是把本章的两个核心直觉变成
**可以在 CPU 上复算的东西**:

1. **片上容量是要算的账**——`01-onchip-footprint/` 把 tile 形状 × dtype × 多缓冲
   版本数换算成字节,并和厂商公开的容量对上。
2. **多缓冲为什么能把计算填满**——`02-pipeline-timeline/` 用一个离散事件模型画出
   搬运/计算/回写的时间线,对比 1 份 / 2 份 / 3 份缓冲。
3. **同一件事在两台上怎么表达**——`03-target-sketch/` 给出一段 NV 侧和一段昇腾侧的
   tile 程序骨架,逐行标注它对应本章哪条硬件路径。这两份**只做静态核对**。

三个示例互相独立,可以单独复制出去运行,都不依赖其他章节的文件。

## 目录

```text
code/
├─ README.md                       本文件
├─ 01-onchip-footprint/
│  ├─ README.md
│  └─ onchip_footprint.py          纯标准库;可在任意机器离线运行
├─ 02-pipeline-timeline/
│  ├─ README.md
│  └─ pipeline_timeline.py         纯标准库;可在任意机器离线运行
└─ 03-target-sketch/
   ├─ README.md
   ├─ nv_hopper_sketch.py          需要 NVIDIA GPU + TileLang 才能运行
   └─ ascend_950_sketch.py         需要昇腾 NPU + CANN + TileLang 才能运行
```

## 验证级别总表

| 示例 | 运行前提 | 作者实际做到的验证级别 |
| --- | --- | --- |
| `01-onchip-footprint/onchip_footprint.py` | Python 3.9+(只用标准库) | **CPU 逻辑验证**:在 macOS(Apple Silicon)、Python 3.11 上实际运行过,输出见该目录 README |
| `02-pipeline-timeline/pipeline_timeline.py` | Python 3.9+(只用标准库) | **CPU 逻辑验证**:实际运行过,输出见该目录 README |
| `03-target-sketch/nv_hopper_sketch.py` | NVIDIA GPU + CUDA + PyTorch(CUDA) + TileLang v0.1.15 | **仅静态核对**:`python3 -m py_compile` 通过,API 逐个在 `_vendor/tilelang-v0.1.15/` 中核对;**未在硬件上运行** |
| `03-target-sketch/ascend_950_sketch.py` | 昇腾 NPU + CANN + torch_npu + TileLang v0.1.15 | **仅静态核对**:`python3 -m py_compile` 通过,API 逐个在 `_vendor/tilelang-v0.1.15/` 中核对;**未在硬件上运行** |

## 统一说明

* 本章写作环境(见 `../../VERSIONS.md`):macOS (Apple Silicon)、Python 3.11(miniconda),
  **没有 NVIDIA GPU,也没有昇腾 NPU**。
* 因此本章没有任何本机实测的性能数字。所有容量、带宽、延迟数字都来自
  `../references.md` 里的厂商文档或社区一手文章,并标注了条件。
* `01-` 和 `02-` 两个示例是**模型**,不是硬件测量;它们的价值在于「把公式和假设写清楚,
  可以被别人复算和质疑」。请把它们当草稿纸,不要当基线。
* 版本一律为 TileLang `v0.1.15`;本书不使用「最新版」这类表述。

← 浏览本章全部代码