跳到主要内容
TileLang 系统教程

tilelang-tutorial.huandu.me

第 14 章 算子实战 II:GEMM 全家族

/code/14-operators-gemm/

README.md1992 字节
# 第 14 章 代码

本章是算子实战章,代码分三类:

1. **纯标准库模型**(`01-gemm-ledger/`、`06-bench-methodology/`)——不需要 GPU /
   NPU,也不依赖 TileLang 与 PyTorch。它们在写作机上**实际运行过**,输出见各
   自的 README。
2. **TileLang kernel**(`02-tilelang-ladder/`、`03-gemm-variants/`、
   `04-low-precision/`、`05-ascend-gemm/`)——需要真实加速器才能编译运行。
   本章对这些示例只做到**仅静态核对**:用 `python3 -m py_compile` 过语法、
   逐个在 `_vendor/` 里比对 API 名与签名。**没有在硬件上运行过任何一条。**

## 目录

```
code/
├─ README.md                          本文件
├─ 01-gemm-ledger/                    纯标准库;GEMM 性能账本与 tile 占用估算
├─ 02-tilelang-ladder/                TileLang;五级阶梯中的 ①–⑤
├─ 03-gemm-variants/                  TileLang;split-K / stream-K / grouped
├─ 04-low-precision/                  TileLang;fp8 / int4 / block-scaled
├─ 05-ascend-gemm/                    昇腾;基础 GEMM 与 batched GEMM
└─ 06-bench-methodology/              纯标准库;预热/重复次数换算与对比模板
```

每个子目录都能独立复制出去运行,不依赖其他章节或其他示例的文件。

## 验证级别总表

| 示例 | 运行前提 | 作者实际做到的验证级别 |
| --- | --- | --- |
| `01-gemm-ledger/gemm_ledger.py` | Python 3.9+,仅标准库 | **CPU 逻辑验证**:在 macOS (Apple Silicon)、Python 3.11 上实际运行过 |
| `02-tilelang-ladder/gemm_ladder.py` | NVIDIA GPU + CUDA + PyTorch(CUDA) + TileLang v0.1.15 | **仅静态核对**(`py_compile` + API 比对);未运行 |
| `02-tilelang-ladder/gemm_intrinsic.py` | 同上 | **仅静态核对**;未运行 |
| `03-gemm-variants/gemm_variants.py` | NVIDIA GPU + CUDA + PyTorch(CUDA) + TileLang v0.1.15 | **仅静态核对**;未运行 |
| `04-low-precision/low_precision_gemm.py` | NVIDIA GPU(fp8 需要 sm89+,block-scaled 参考示例用 sm100) | **仅静态核对**;未运行 |
| `05-ascend-gemm/ascend_gemm.py` | 昇腾 NPU + CANN + torch_npu + TileLang(`_vendor/tilelang-ascend-v0.1.2.000`) | **仅静态核对**;未在 NPU 上运行 |
| `06-bench-methodology/bench_methodology.py` | Python 3.9+,仅标准库 | **CPU 逻辑验证**:实际运行过 |

## 统一说明

* 写作环境(见 `../../VERSIONS.md`):macOS (Apple Silicon)、Python 3.11,
  **没有 NVIDIA GPU,也没有昇腾 NPU**。
* 因此任何需要加速器才能得到的数字(延迟、吞吐、算力利用率)在 `code/` 里
  都不存在;模型里出现的数字全是公式推导,性能对比的口径与来源见
  `../references.md`。
* 版本一律为 TileLang `v0.1.15` 与 TileLang-Ascend
  `v0.1.2.000-release`;本章不使用「最新版」这类表述。

← 浏览本章全部代码