news 2026/9/13 8:33:29

Triton 安装指南:从 pip 二进制包到源码编译与自定义 LLVM 构建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Triton 安装指南:从 pip 二进制包到源码编译与自定义 LLVM 构建

Triton 安装指南:从 pip 二进制包到源码编译与自定义 LLVM 构建

【免费下载链接】tritonDevelopment repository for the Triton language and compiler项目地址: https://gitcode.com/GitHub_Trending/tri/triton

本篇技术指南面向所有想在本地搭建 Triton 语言与编译器开发/运行环境的开发者,系统讲解三种安装路径:通过 pip 安装官方二进制 wheel、从源码编译 Python 包、以及基于自定义 LLVM 的深度构建,并附带安装后的测试验证方法。读完本文,你将能够根据自己是否具备 GPU、是否需要修改编译器源码、是否需要接入自定义 LLVM 等不同场景,选择并完成一套可复现、可排错的 Triton 安装方案。

安装前的兼容性评估

在动手安装之前,首先需要确认目标平台与硬件是否在 Triton 的支持范围内。Triton 官方维护一份 Compatibility 清单(位于项目 README 的 Compatibility 小节),覆盖操作系统(Linux、macOS、Windows 等)与硬件后端(NVIDIA GPU、AMD GPU 等)的组合支持情况,建议在安装前先核对。

从当前仓库源码可以进一步确认支持的软件范围:

  • Python 版本setup.py中定义MIN_PYTHON = (3, 10)MAX_PYTHON = (3, 14),即本仓库要求 Python 3.10~3.14(见 setup.py);
  • 构建工具python/requirements.txt要求cmake>=3.20,<4.0ninja>=1.11.1setup.py中的CMakeBuild.run()也会在构建前强制校验 CMake 版本不低于 3.20(见 setup.py);
  • 后端依赖:仓库默认打包 NVIDIA(third_party/nvidia)与 AMD(third_party/amd)两个树内后端,并可通过TRITON_PLUGIN_DIRS环境变量挂载外部插件后端(见 setup.py)。

方式一:通过 pip 安装官方二进制包(推荐快速上手)

如果只是想使用 Triton 编写和运行内核,而不需要修改编译器本身,最快捷的方式是安装发布在 PyPI 上的稳定版本:

pip install triton

官方二进制 wheel 覆盖CPython 3.10~3.14,开箱即用,无需本地编译,也无需自行准备 LLVM。安装完成后即可在 Python 中import triton开始编写内核。

方式二:从源码安装 Python 包

需要修改编译器源码、调试前端或后端、或者构建尚未发布到 PyPI 的新功能时,应从源码安装。官方文档给出的标准流程如下:

git clone https://gitcode.com/GitHub_Trending/tri/triton.git cd triton pip install -r python/requirements.txt # 安装构建期依赖 pip install -e . # 以可编辑模式安装

下面逐项拆解这条流程背后的细节。

构建期依赖说明

python/requirements.txt中声明的依赖各有分工(见 python/requirements.txt):

依赖版本要求作用
setuptools>=40.8.0Python 打包基础设施
wheel构建 wheel 所需
cmake>=3.20,<4.0驱动 C++/MLIR 部分的构建
ninja>=1.11.1比 make 更快的并行构建后端(setup.py中通过-G Ninja显式指定)
nanobind==2.10.2绑定 Python 与 C++ 扩展(setup.py通过nanobind.cmake_dir()注入 CMake 参数)
litLLVM 集成测试工具,用于运行 MLIR/LLVM 层的 lit 测试

此外,仓库还维护一份测试期依赖清单python/test-requirements.txt(numpy、pytest、pytest-xdist、scipy 等),供make dev-install等流程使用(见 python/test-requirements.txt)。

pip install -e .做了什么

setup.py是整个构建的编排入口,pip install -e .会依次触发:

  1. 后端准备:通过BackendInstaller初始化third_party/nvidiathird_party/amd子模块(若是 git 仓库),并把各后端的backendlanguagetools目录以包或符号链接的方式纳入安装(见 setup.py);
  2. CMake 配置与编译CMakeBuild以 Ninja 为生成器调用 CMake,编译triton/_C/下的 C++ 扩展(triton._C.libtriton),并传递TRITON_CODEGEN_BACKENDSTRITON_VERSION、缓存路径等一系列参数(见 setup.py);
  3. 依赖解析:解析 LLVM 与 nlohmann/json 两个第三方依赖,把结果写入 CMake 变量(对应python/build_helpers.pywrite_thirdparty_cmake_vars子命令);
  4. 可编辑安装:将python/目录作为包源码安装,方便修改 Python 代码后无需重装即可生效。

版本号方面,仓库当前TRITON_VERSION = "3.8.0",在 git 检出且非 release 分支时还会追加短提交哈希作为本地版本后缀(见 setup.py)。

LLVM 依赖的自动解析机制

Triton 依赖 LLVM 生成 GPU/CPU 代码。官方文档特别指出:如果系统上没有安装 LLVM,setup.py会自动下载官方预编译的 LLVM 静态库并链接。这套机制实现在python/build_helpers.py中:

  • 构建时会读取cmake/llvm-info.json,其中记录了当前 Triton 所对应的 LLVM 提交哈希(llvm_hash)、构建号(build_number)以及各平台预编译包的sha256sum校验值(见 cmake/llvm-info.json);
  • 依据平台自动选择对应的系统后缀(如ubuntu-x64almalinux-arm64macos-arm64windows-x64等)并拼接下载 URL(见 python/build_helpers.py);
  • 下载完成后会进行 SHA-256 校验,校验失败默认中止构建(可通过TRITON_UNSAFE_DISABLE_SHA_CHECK强制跳过,仅作警告)(见 python/build_helpers.py);
  • 解析结果通过LLVM_INCLUDE_DIRSLLVM_LIBRARY_DIRLLVM_SYSPATH等变量注入 CMake。

需要注意的是:LLVM 没有稳定的 API,因此 Triton 并不支持任意的 LLVM 版本,预编译包与llvm-info.json中记录的提交哈希是严格绑定的。

构建期自动下载的 NVIDIA 工具链

除了 LLVM,构建过程还会根据cmake/nvidia-toolchain-version.json自动下载 NVIDIA 工具链组件并放入third_party/nvidia/backend,包括:

  • ptxas(PTX 汇编器)与ptxas-blackwell(Blackwell 独立版本,因该版本存在 Hopper 相关缺陷而单独维护);
  • cuobjdumpnvdisasm(反汇编/对象转储工具);
  • CUDA 运行时头文件(cudartcudacrt)与 CUPTI(性能剖析库,含 Blackwell 变体)。

以上组件均可通过TRITON_PTXAS_PATHTRITON_CUDART_PATHTRITON_CUPTI_INCLUDE_PATH等环境变量覆盖为本地路径,跳过自动下载(见 python/build_helpers.py)。

方式三:使用自定义 LLVM 构建

当需要针对特定 LLVM 版本做适配、携带本地补丁或进行编译器底层开发时,可选择构建自定义 LLVM。官方文档推荐的一键方式:

make dev-install-llvm

该命令在仓库 Makefile 中定义为:先用LLVM_BUILD_PATH(默认指向仓库根目录下的.llvm-project/build)调用scripts/build-llvm-project.sh编译 LLVM,再以LLVM_INCLUDE_DIRSLLVM_LIBRARY_DIRLLVM_SYSPATH指向该构建产物并执行make dev-install,从而让 Triton 链接这套自编译 LLVM。

如果选择完全手动构建 LLVM,关键步骤是:

  1. 查看 cmake/llvm-info.json 中的llvm_hash字段,确认当前 Triton 代码所绑定的 LLVM 版本,并将 LLVM 源码 checkout 到该提交;
  2. 用 CMake 构建 LLVM(建议开启mlirllvmlldclang等项目,并包含NVPTXAMDGPU等目标后端);
  3. 回到 Triton 仓库,设置环境变量后重新执行可编辑安装:
export LLVM_BUILD_DIR=$HOME/llvm-project/build LLVM_INCLUDE_DIRS=$LLVM_BUILD_DIR/include \ LLVM_LIBRARY_DIR=$LLVM_BUILD_DIR/lib \ LLVM_SYSPATH=$LLVM_BUILD_DIR \ pip install -e .

提示:若系统已安装 LLVM,CMake 查找模块cmake/FindLLVM.cmake会按llvm-config-*的多种命名形式(含llvm-config-7.0llvm-config-17等带版本后缀的名字)及LLVM_ROOT_DIR指定的路径寻找llvm-config,并校验版本不低于LLVM_FIND_VERSION(见 cmake/FindLLVM.cmake)。版本过低时会给出明确报错并建议设置LLVM_ROOT_DIRLLVM_CONFIG

常用构建选项与环境变量

结合仓库 README.md 与 setup.py,以下环境变量可在pip install -e .时使用:

环境变量作用
TRITON_BUILD_WITH_CLANG_LLD=true使用 clang/clang++ 作为编译器、lld 作为链接器,可显著加快链接
TRITON_BUILD_WITH_CCACHE=true启用 ccache 加速增量编译
TRITON_HOME=/some/path改变.triton缓存目录(默认位于用户主目录),构建期下载与运行期缓存均存于此
MAX_JOBS=N限制并行编译任务数,构建内存不足时使用(setup.py默认取2 * CPU 核数,见 setup.py)
DEBUG=1/REL_WITH_DEB_INFO=1切换 CMake 构建类型为 Debug / RelWithDebInfo;默认类型为TritonRelBuildWithAsserts(见 setup.py)
TRITON_OFFLINE_BUILD=1离线构建模式,禁止任何网络下载;此时必须通过LLVM_SYSPATHJSON_SYSPATH等显式提供依赖(见 python/build_helpers.py)
TRITON_BUILD_PROTON=OFF关闭 Proton 性能剖析组件的构建(默认开启)
TRITON_APPEND_CMAKE_ARGS追加额外的 CMake 参数

另外两个值得注意的实践:

  • 若系统已装 torch,make dev-install中的dev-install-torch目标会卸载pytorch-triton,避免其覆盖本地安装的 Triton(见 Makefile);
  • --no-build-isolationpip install可以加快反复迭代构建:否则每次pip install都会使用不同的 cmake 符号链接,迫使 ninja 重建大部分.a文件(见 README.md)。

安装验证与测试

安装完成后即可验证。官方文档给出的测试流程(详见 Makefile):

# 一次性环境准备:安装构建依赖与测试依赖,并以可编辑模式重装 Triton make dev-install # 运行全部测试(需要 GPU) make test # 或者,在没有 GPU 的机器上运行测试 make test-nogpu

make test会串联test-lit(通过ninja check-triton-lit-tests运行 MLIR lit 测试)、test-cpp(C++ 单元测试,对应check-triton-unit-tests)与test-python(覆盖 unit、plugins、regression、interpreter、proton 等 Python 测试套件)。make test-nogpu则只执行 lit、C++ 测试以及不依赖 GPU 的 Python 前端测试,适合无 GPU 的开发机快速自检(见 Makefile)。

此外,若不需要 GPU 即可验证内核逻辑,可在运行测试时设置TRITON_INTERPRET=1使用 Triton 解释器执行内核,甚至可以在内核代码中插入 Python 断点调试。

常见问题与排错提示

  • 找不到 LLVM:构建报错提示未找到llvm-config时,说明既没有预编译包可用也没有本地 LLVM;请检查网络(预编译 LLVM 需要从远端下载),或按“自定义 LLVM”一节手动构建并设置LLVM_SYSPATH
  • 构建内存不足:降低MAX_JOBS,例如MAX_JOBS=4 pip install -e .
  • 反复安装导致全量重编:为pip install添加--no-build-isolation,并使用make dev-install保持一致的构建环境。
  • 需要为 IDE 提供代码补全:构建系统会在仓库根目录生成compile_commands.json(指向 CMake 构建目录中的真实文件),可配置 VSCode C/C++ 扩展或 clangd 使用它(见 README.md)。
  • 离线环境构建:设置TRITON_OFFLINE_BUILD=1,并提前通过LLVM_SYSPATHJSON_SYSPATH以及TRITON_PTXAS_PATHTRITON_CUPTI_LIB_PATH等变量指向本地已有的依赖(见 python/build_helpers.py)。

小结

无论你是想快速用上稳定版 Triton(pip install triton),还是需要从源码定制编译器(git clone+pip install -e .),或是接入自编译 LLVM 进行底层开发(make dev-install-llvm),本文梳理的安装路径、构建依赖与可调环境变量都能覆盖对应场景。安装完成后,建议至少运行一次make test-nogpumake test验证环境可用,再进入内核开发与测试阶段。

【免费下载链接】tritonDevelopment repository for the Triton language and compiler项目地址: https://gitcode.com/GitHub_Trending/tri/triton

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 8:32:58

STM32+FreeRTOS智能安防系统实战:从传感器采集到云平台报警链路设计

简介&#xff1a;基于STM32F103和FreeRTOS&#xff0c;集成OneNET云平台与ESP8266 Wi-Fi模块的嵌入式安防系统项目源码&#xff0c;适合嵌入式开发者、物联网学习者以及准备电子竞赛或课程设计的学生。项目覆盖从外设驱动到云平台通信的完整链路&#xff0c;包含ADC、定时器、L…

作者头像 李华
网站建设 2026/9/13 8:32:31

贝尔数 Bell Numbers:OI 中的集合划分计数与高效计算

贝尔数 Bell Numbers&#xff1a;OI 中的集合划分计数与高效计算 【免费下载链接】OI-wiki :star2: Wiki of OI / ICPC for everyone. &#xff08;某大型游戏线上攻略&#xff0c;内含炫酷算术魔法&#xff09; 项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki …

作者头像 李华