1---2name: external-cannbot-ops-lab-tilelang-skills-tilelang-api-best-p3description: TileLang Ascend API 使用最佳实践。提供内存分配、数据搬运、矩阵计算、归约、元素级运算、同步、调度原语等 API 的正确用法和最佳实践。触发:使用 TileLang API 编写 Ascend NPU kernel 时或遇到 API 相关问题时。4license: UNKNOWN5---67# TileLang Ascend API 最佳实践89## API 文档索引101112| 文档 | 涵盖内容 | 典型场景 |13| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |14| [api-kernel-memory.md](references/api-kernel-memory.md) | Kernel 定义(T.prim_func, T.Kernel, @jit)、内存分配(Developer: T.alloc_shared/fragment/var, Expert: T.alloc_ub/L1/L0x)、数据搬运(T.copy) | Kernel 编写、片上存储管理、数据搬运 |15| [api-compute.md](references/api-compute.md) | 矩阵计算(T.gemm_v0, T.mma)、归约(T.reduce_sum/max/min)、Element-wise(T.Parallel + 符号 API)、Tile 扩展原语(T.tile.xxx) | GEMM、Softmax、逐元素计算、排序 |16| [api-schedule-sync.md](references/api-schedule-sync.md) | 循环(T.serial, T.unroll)、流水线(T.Pipelined)、持久化调度(T.Persistent)、同步(T.set_flag/wait_flag, T.barrier_all, T.set_cross_flag)、调试(T.printf, T.dump_tensor) | 流水线优化、多核均衡、同步、调试 |171819---2021## 场景索引222324| 使用场景 | 相关文档 | 关键技巧 |25| --------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------- |26| **GEMM 矩阵乘** | [api-compute](references/api-compute.md), [api-kernel-memory](references/api-kernel-memory.md) | shared→fragment 层级搬运、init 参数、T.barrier_all |27| **Softmax/LayerNorm** | [api-compute](references/api-compute.md) | T.reduce_max/sum、T.tile.exp/sub/div |28| **逐元素计算** | [api-compute](references/api-compute.md) | T.Parallel + 符号 API 或 T.tile.xxx 两种范式 |29| **流水线优化** | [api-schedule-sync](references/api-schedule-sync.md) | T.Pipelined num_stages、核间/核内流水线 |30| **多核负载均衡** | [api-schedule-sync](references/api-schedule-sync.md) | T.Persistent 缓存友好调度 |31| **排序** | [api-compute](references/api-compute.md) | T.tile.sort → T.tile.merge_sort → T.tile.topk |32| **Kernel 调试** | [api-schedule-sync](references/api-schedule-sync.md) | T.printf、T.dump_tensor、get_kernel_source() |333435---3637## API 速查表3839### Kernel 定义404142| API | 说明 |43| ------------------------------------------------ | ------------ |44| `@T.prim_func` | 定义 kernel 函数 |45| `T.Tensor((M, N), dtype)` | 声明张量参数 |46| `T.Kernel(block_num, is_npu=True) as (cid, vid)` | Kernel 启动上下文 |47| `@jit(out_idx=[-1], pass_configs={...})` | JIT 编译装饰器 |48| `T.dyn['K']` / `T.dynamic('K', 'int32')` | 动态 shape |495051### 内存分配525354| API | 说明 | 模式 |55| ----------------------------------------------- | ---------------------------- | --------- |56| `T.alloc_shared(shape, dtype)` | shared 层级(编译器自动判断 L1/UB) | Developer |57| `T.alloc_fragment(shape, dtype)` | fragment 层级(编译器自动判断 L0A/B/C) | Developer |58| `T.alloc_var(dtype, init=...)` | 标量变量 | Developer |59| `T.alloc_ub / T.alloc_L1 / T.alloc_L0A/L0B/L0C` | 显式指定存储层级 | Expert |606162### 数据搬运与计算636465| API | 说明 |66| ---------------------------------------------------- | ------------------ |67| `T.copy(src, dst)` | GM/L1/UB/L0 之间搬运数据 |68| `T.gemm_v0(A, B, C, transpose_A, transpose_B, init)` | 标准 GEMM |69| `T.mma(A, B, C, init)` | NPU MMA 指令 |70| `T.reduce_sum/max/min(buffer, out, dim)` | 按维度归约 |717273### 循环与调度747576| API | 说明 |77| ---------------------------------------- | ----------- |78| `T.serial(N)` / `T.unroll(N)` | 普通循环 / 循环展开 |79| `T.Parallel(ext0, ext1, ...)` | 元素级并行循环 |80| `T.Pipelined(range, num_stages=N)` | 流水线并行 |81| `T.Persistent(domain, wave_size, index)` | 持久化调度 |828384### 同步与调试858687| API | 说明 |88| ----------------------------------------------- | --------- |89| `T.set_flag / T.wait_flag` | 核内流水线同步 |90| `T.barrier_all() / T.pipe_barrier(pipe)` | 管线屏障 |91| `T.set_cross_flag / T.wait_cross_flag` | 核间同步 |92| `T.sync_all()` | 全局同步 |93| `T.printf(fmt, *args)` | 设备端格式化打印 |94| `T.dump_tensor(tensor, desc, size, shape_info)` | Tensor 转储 |959697### 常用 pass_configs9899100| 配置项 | 说明 |101| -------------------------------------- | --------------- |102| `TL_ASCEND_AUTO_SYNC: True` | 自动同步插入 |103| `TL_ASCEND_MEMORY_PLANNING: True` | 自动内存规划 |104| `TL_ASCEND_AUTO_CV_COMBINE: True` | 自动 CV 分离(核间流水线) |105| `tl.ascend_auto_cross_core_sync: True` | 自动核间同步(核间流水线) |106107