跳到主要内容
TileLang 系统教程

tilelang-tutorial.huandu.me

第 09 章 核心原语详解

/code/09-core-primitives/

01-primitive-ir-map/README.md1689 字节
# 01 · 原语 → IR → 指令 映射表(可自检)

## 目的

把正文 §2.2 的映射表变成一段可执行的代码,并顺手回答两个问题:

1. 表里引用的每一个源码文件与行号,在锁定版本的 `_vendor/` 工作树上是否真的存在、
   行号是否落在文件范围内?
2. 「`T.tile.*` 不在 v0.1.15 里」这条结论,能不能被机器复现?

脚本是纯标准库、纯文本检查,不 import TileLang、不编译任何 kernel。
它覆盖正文里最关键的 42 条源码引用(映射表的 36 条 + §5.3 的 6 条)。

## 运行前提

Python 3.9+。只用标准库(`argparse`、`dataclasses`、`pathlib`)。
**不需要 GPU / NPU / TileLang**。

自检部分需要锁定版本的源码在默认位置
(`<本书根>/_vendor/tilelang-v0.1.15` 与 `_vendor/tilelang-ascend-v0.1.2.000`);
也可以用 `--vendor` / `--adapter` 指定别处。找不到时脚本会打印
`skipped`,仍然输出映射表并以 0 退出。

## 运行命令

```bash
cd 01-primitive-ir-map
python3 primitive_ir_map.py                 # 打印映射表 + 自检
python3 primitive_ir_map.py --no-check      # 只打印映射表
python3 primitive_ir_map.py --vendor /path/to/tilelang-v0.1.15
```

## 预期输出(摘要)

在 macOS(Apple Silicon)、Python 3.11 上实际运行:

```text
primitive            | IR                         | NV target                      | Ascend target
---------------------+----------------------------+--------------------------------+------------------------------
T.copy               | tl.tileop.copy             | SIMT / cp.async / TMA / LDSM   | DataCopy / ND2NZ / LoadData / Fixpipe
T.async_copy         | tl.tileop.async_copy       | cp.async (no wait)             | -
...
checked 30 source citations -> all in range (or file missing -> skipped)
claim "T.tile is absent from v0.1.15": confirmed (no `as tile` import under tilelang/ascend/language)
```

(实际输出以本机为准;上面只摘了表头与结论行。)

## 重要边界

* 自检只能证明「文件存在、行号在范围内」,**不能**证明行号里的内容与正文描述一致。
  内容一致性是作者人工逐行读过一遍的,这仍然**不是运行验证**。
* 映射表的「NV target / Ascend target」两列是**指令类别**,不是实测生成代码。

## 作者验证级别

**CPU 逻辑验证**:在 macOS(Apple Silicon)、Python 3.11 上运行过。
**未在加速器上运行,也未与任何真实编译产物对照。**

← 浏览本章全部代码