triton-lang / triton
triton-lang/triton
Triton语言与编译器的开发仓库
项目概览
项目概述
Triton 是一个用于编写高效自定义深度学习原语的语言和编译器。其目标是提供一个开源环境,以比 CUDA 更高的生产力编写快速代码,同时比现有 DSL 具有更高的灵活性。该项目基于 MAPL2019 论文《Triton: An Intermediate Language and Compiler for Tiled Neural Network Computations》。
核心功能
- 提供类似 Python 的 DSL,用于编写 GPU 内核。
- 基于 MLIR 的编译器,支持 NVIDIA、AMD GPU,CPU 后端正在开发中。
- 支持自动调优(autotuning)、Warp Specialization、软件流水线等高级优化。
- 提供解释器模式,无需 GPU 即可调试内核。
- 支持插件系统,允许扩展自定义 passes、dialects 和后端。
适用与不适用场景
适用场景:
- 编写高性能的自定义深度学习算子(如 FlashAttention、GEMM)。
- 需要比 CUDA 更高生产力的 GPU 编程。
- 跨平台(NVIDIA、AMD)的 GPU 内核开发。
不适用场景:
- 需要完全控制硬件底层细节(如寄存器分配、指令调度)的场景,可考虑 Gluon 或 CUDA。
- 非 GPU 平台(CPU 后端尚不成熟)。
- 需要稳定 API 的生产环境(Triton 仍处于快速迭代中)。
技术架构与依赖
- 语言:MLIR(仓库语言标记),但主要使用 Python 和 C++。
- 依赖:LLVM、MLIR、PyTorch(部分测试)、CMake、Ninja。
- 架构:前端(Python DSL)→ Triton IR → MLIR 方言 → LLVM IR → PTX/AMDGPU。
- 支持插件机制,允许第三方后端(如 Intel、CPU)通过插件集成。
安装与快速开始
从 pip 安装稳定版:
pip install triton
从源码安装:
git clone https://github.com/triton-lang/triton.git
cd triton
pip install -r python/requirements.txt
pip install -e .
使用自定义 LLVM 构建:
make dev-install-llvm
典型使用方法
以下是一个简单的 Triton 内核示例(来自官方文档):
import triton
import triton.language as tl
@triton.jit
def add_kernel(x_ptr, y_ptr, output_ptr, n_elements, BLOCK_SIZE: tl.constexpr):
pid = tl.program_id(axis=0)
block_start = pid * BLOCK_SIZE
offsets = block_start + tl.arange(0, BLOCK_SIZE)
mask = offsets < n_elements
x = tl.load(x_ptr + offsets, mask=mask)
y = tl.load(y_ptr + offsets, mask=mask)
output = x + y
tl.store(output_ptr + offsets, output, mask=mask)
配置与部署要点
- 环境变量:
TRITON_INTERPRET=1启用解释器,MLIR_ENABLE_DUMP=1转储 IR,TRITON_ALWAYS_COMPILE=1强制编译。 - 构建选项:
TRITON_BUILD_WITH_CLANG_LLD=true使用 clang/lld,TRITON_BUILD_WITH_CCACHE=true使用 ccache。 - 缓存目录:
TRITON_HOME可更改.triton缓存位置。 - 支持平台:Linux,NVIDIA GPU(Compute Capability 8.0+),AMD GPU(ROCm 6.2+)。
限制、风险与许可证
- 许可证:MIT(仓库资料提供)。
- 限制:CPU 后端仍在开发中;Windows 支持不完善;API 可能变动。
- 风险:依赖 LLVM 的特定版本,构建复杂;社区维护,但核心维护者来自 OpenAI 等。
官方链接
- 仓库:https://github.com/triton-lang/triton
- 文档:https://triton-lang.org
- 最新发布:v3.7.1(2026-06-18)
信息来源和分析时间
- 信息来源:GitHub 仓库 README、CONTRIBUTING.md、docs/meetups 下的会议记录、最新发布信息。
- 分析时间:2026年6月18日(基于最新发布)。