- 发布日期
是什么
Triton 是一门用于编写 GPU 内核(kernel)的开源编程语言,并带有配套的编译器。所谓内核,是指在图形处理器上并行执行的小段程序——矩阵乘法、归一化,以及神经网络里其他最耗时的运算,最终都要落成一个个内核。Triton 的语法接近 Python,OpenAI 在 2021 年 7 月发布了 1.0 版本,目标说得很直接:让没有 CUDA 编程经验的研究者也能写出高效的 GPU 代码,而且多数情况下能达到专家手写的水平[1]。
由来
Triton 并非在 OpenAI 内部从零写起。OpenAI 的说法是,他们扩展并改进了 Triton——一门较新的语言与编译器,其最初的作者现在在 OpenAI 工作[1]。项目以开源方式推进:triton-lang/triton 仓库采用 MIT 许可证,约有 2 万颗星,后来从 openai 组织迁移到了独立的 triton-lang 组织[2]。
主要特点
在 Triton 里,一个内核就是加了装饰器的普通 Python 函数,采用即时编译(JIT),而不是提前编译好再用[1]。真正的设计选择在于让程序员在哪一层表达并行。CUDA 程序员面对的是 SIMT(单指令多线程)执行模型,需要自己盯着每条线程做什么;Triton 则把处理单元内部的并行暴露为对「块」(block)的运算[1]。
剩下的记账工作交给编译器:它自动完成内存合并访问(memory coalescing)、共享内存管理,以及流式多处理器(SM)内部的调度,只把跨 SM 的调度留给开发者[1]。内存合并访问可以这样理解:相邻的线程如果读取相邻的地址,一次内存事务就能被充分利用,否则带宽会被白白浪费。这类细节过去常被当作 GPU 老手的标志,Triton 把它们收进了编译器。
OpenAI 给出了两个具体结果。其一,用 Triton 写 FP16 矩阵乘法内核,不到 25 行代码就能达到 cuBLAS 的性能——cuBLAS 是被广泛使用的 GPU 矩阵运算库,而很多 GPU 程序员手写也做不到这一点[1]。其二,OpenAI 的研究者此前已经用 Triton 生成过内核,效率最高可达等价 Torch 实现的 2 倍[1]。
在发展中的位置
Triton 站在两个极端之间:一边是手写 CUDA,控制力最强,但学习曲线很长;另一边是高层框架,用户根本看不到生成出来的内核。它的主张是,研究者仍然写看起来像 Python 的东西、以块为单位描述工作,却能拿到接近专家的速度。它划的那条界线是有意为之——处理器内部的调度自动化,处理器之间的调度仍归开发者——所以它是给愿意亲手塑造内核的人用的工具,而不是把硬件完全藏起来的系统。再加上 MIT 许可证,以及仓库后来迁出 OpenAI 自己的 GitHub 组织,这些让它更像一块别人可以继续搭建的基础设施,而不是锁在某一家公司技术栈里的功能[2]。
注释与来源
- Introducing Triton: Open-source GPU programming for neural networkshttps://openai.com/index/triton/
- triton-lang/triton repository metadatahttps://api.github.com/repos/triton-lang/triton
引用本页: Triton(OpenAI GPU 编程语言). TellWorld, https://www.tellworld.net/zh/products/triton. 更新于 2026-11-08