使用 TLE-CPU#

本节介绍如何使用 TLE-CPU。TLE-CPU 在 trition_3.3.x 分支上可用。

TLE-CPU 提供统一的编程范式,覆盖多样化的边缘端 CPU 算力。将 TLE "在 @triton.jit 之上分层硬件深度优化"的理念扩展到 CPU。针对边缘 AI 碎片化的 CPU 生态(Arm64 / RISC-V / x86,多种 ISA 并存),使用相同的 Triton 编程模型和集成框架来支持不同的 ISA:编程模型和正确性跨 ISA 共享(普通 Triton 通过 LLVM 落到任意 ISA),而每个 ISA 的高性能实现(intrinsic / C 运行时)则分别贡献。模型代码通过算子库(FlagGems)的 vendor 分发路由到对应的 ISA 实现,无需感知具体 ISA。CPU 与 GPU 的差异决定了它需要一个独立的扩展面:

维度

GPU(参考)

CPU

并行单元

SIMT / Block

OMP 线程 + SIMD 向量(两级)

内存层级

显式共享内存

缓存隐式管理,通过分块 + 权重重排优化

主战场

大 batch 吞吐为主

batch=1 解码(边缘端),M=1 GEMV 是热点

性能关键

Occupancy / 内存合并

指令选择(i8mm/SVE2/BF16)+ 线程调度

架构概览#

@triton.jit  (Triton 编程模型;可混合使用 TLE 扩展操作和通用算子)
                                │
                    ┌───────────┴────────────┐
            TLE-CPU 扩展操作           Triton 通用算子
            (create_cpu_*)               (tl.load / tl.dot / …)
                    └───────────┬────────────┘
                                ▼
     FlagTree CPU 后端  (编译/分发层;tle_<arch> 插件注入 create_cpu_*)
                                ▼
     flagtree-cpu  (TritonCPU MLIR 方言 + 各 ISA C 运行时 / lowering)
                                ▼
                        LLVM  →  目标 ISA 指令
              (各 ISA lowering 路径参见相应子页面,如 Arm64)
  • 扩展操作以 builder 方法(create_cpu_*)的形式注入 Triton IR 构建器,在编译时 lowering 到 TritonCPU 方言,然后映射到各 ISA 对应的实现(LLVM codegen 或 C 运行时库调用)。各 ISA lowering 路径参见相应子页面

  • 算子库层由 FlagGems 处理,按 vendor(如 arm)选择 CPU 后端算子集。

  • 添加新 ISA = 增量贡献 C 运行时 + 注册扩展操作。

支持的 CPU 架构#

  • Arm64 是首个完整实现的 CPU 后端,可端到端运行 LLM 推理。

  • RISC-V (RVV) / x86 (AVX-512) 仍在规划中,将使用相同的 MLIR 和 TLE 路径。

Arm64 CPU 相关链接#

以下是 TLE-CPU 和 Arm64 的相关链接:

关于如何在 Arm64 上使用 TLE-CPU 的更多信息,请参见以下子页面: