Intel Arc 140T + Triton(Windows)环境搭建全过程记录
机器:Dell/联想等搭载 Intel Core Ultra 9 285H 的笔记本(Arc 140T 核显 + AI Boost NPU)
系统:Windows 11(Build 26200,中文版)
日期:2026-08-06
最终结果:Triton 3.7.2 已在 Arc 140T 上跑通,torch.compile 正常;NPU 走 OpenVINO。
1. 结论先行
| 目标 | 结论 | 技术路线 |
|---|---|---|
| Arc 140T GPU 写 Triton kernel | ✅ 可行 | PyTorch 原生 XPU + triton-xpu |
| NPU(Intel AI Boost)写 Triton | ❌ 不可行 | NPU 只能走 OpenVINO / ONNX Runtime 推理 |
关键背景:
- Intel 已宣布
intel-extension-for-pytorch(IPEX)退役:2.8 之后停止季度发版,2026-03 起仅做安全维护,官方建议直接用 PyTorch 自带 XPU 支持。 torch 2.13.0+xpu会把 Intel 版 Triton(triton-xpu)作为依赖自动装好,不需要装 oneAPI 全家桶(SYCL/oneMKL/Level-Zero 运行时都以 pip wheel 形式提供)。- NPU 不是可编程通用 GPU,Triton 没有 NPU 后端。
2. 硬件 / 软件环境检查
powershell
# CPU
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores
# GPU
Get-CimInstance Win32_VideoController | Select-Object Name, DriverVersion
# NPU
Get-PnpDevice -PresentOnly | Where-Object { $_.FriendlyName -match 'NPU|AI Boost' }
# Python
python --version
本机结果:
| 项目 | 值 |
|---|---|
| CPU | Intel® Core™ Ultra 9 285H(16 核) |
| GPU | Intel® Arc™ 140T GPU (16GB),驱动 32.0.101.8132 |
| NPU | Intel® AI Boost,状态 OK |
| OS | Windows 11 家庭版中文版,10.0.26200 |
| Python | 3.12.13(来自 conda env py3.12,py 启动器未安装) |
| 编译器 | 无(gcc/cl/clang/icx 都没有,VS 未装,oneAPI 未装) |
注意:
Get-CimInstance Win32_VideoController列出的第一个 "OrayIddDriver Device" 是向日葵远程桌面的虚拟显示器,与 GPU 无关。
3. 版本调研(关键决策)
通过官方文档与 wheel 索引确认了 2026 年 8 月的最新可用版本:
- PyTorch XPU :
https://download.pytorch.org/whl/xpu提供torch 2.13.0+xpu,含win_amd64的 cp312 wheel。 - Triton XPU :包名是
triton-xpu(不是 NVIDIA 的triton),最新3.7.2。 - 检查
torch 2.13.0+xpu的 METADATA:Requires-Dist: triton-xpu==3.7.2,所以装 torch 就会自动带上正确的 triton,且不会再误装 NVIDIA 版。 - 该索引还托管了全部运行时依赖(
intel-sycl-rt、onemkl-sycl-*、dpcpp-cpp-rt、mkl、intel-openmp、tbb等),所以--index-url https://download.pytorch.org/whl/xpu一条命令即可装完。
4. 安装步骤
4.1 创建虚拟环境并安装 torch(XPU)
powershell
python -m venv D:\pyproject\venv-triton-xpu
D:\pyproject\venv-triton-xpu\Scripts\python.exe -m pip install --upgrade pip
D:\pyproject\venv-triton-xpu\Scripts\python.exe -m pip install torch --index-url https://download.pytorch.org/whl/xpu --progress-bar off
实测下载量约 1.6 GB(torch wheel 786 MB + triton_xpu 383 MB + 运行时),耗时约 5 分钟。
4.2 补装 numpy / openvino
powershell
D:\pyproject\venv-triton-xpu\Scripts\python.exe -m pip install numpy openvino
- numpy:torch 做
allclose等 CPU 转换时需要。 - openvino:NPU 路线用,装好后
ov.Core().available_devices可看到['CPU','GPU','NPU']。
4.3 确认核心版本
text
torch : 2.13.0+xpu
triton : 3.7.2
xpu : available, device = Intel(R) Arc(TM) 140T GPU (16GB), 16.44 GB
5. 踩坑记录(按出现顺序)
5.1 中文 Windows GBK 编码导致 Triton 崩溃
现象:运行 Triton kernel 时报 UnicodeDecodeError: 'gbk' codec can't decode byte ...,发生在 Triton 读取自己的 driver.c 源码时。
原因:中文 Windows 默认代码页 936(GBK),Python 的 Path.read_text() 用了系统默认编码去读 UTF-8 源码。
解决:设置 UTF-8 模式后运行:
powershell
$env:PYTHONUTF8 = '1'
$env:PYTHONIOENCODING = 'utf-8'
python your_script.py
5.2 缺少 C 编译器(第一个硬门槛)
现象:RuntimeError: Failed to find C compiler. Please specify via CC environment variable or set triton.knobs.build.impl.
原因:triton-xpu 的 Intel 后端首次运行要现场编译 C/C++ 助手模块(spirv_utils、arch_parser、extension_utils),本机没有任何 C/C++ 编译器。
排查:Get-Command gcc,g++,cl,clang,icx 全为空;C:\Program Files\Microsoft Visual Studio、C:\msys64、oneAPI 均不存在。
5.3 尝试 MinGW(w64devkit)失败 ------ C++ ABI 不兼容
先试了免安装的 MinGW 工具链(w64devkit 2.9.0,GCC 16.1),并用 Triton 官方预留的 triton.knobs.build.impl 写了一个自定义编译 shim,把 MSVC 风格参数翻译成 gcc 风格。
结果:编译通过,链接失败 ,大量 undefined reference to __imp__ZNK4sycl...。
原因:Intel 的 sycl.lib 是 MSVC ABI 导入库,导出的是 MSVC 风格 C++ 符号(?get_context@...);MinGW/g++ 生成的是 Itanium/GCC ABI 符号(_ZNK4sycl...),两者无法对接。结论:Windows 上必须用 MSVC 编译器,没有绕过的可能。
附带发现(供参考):这个坑也意味着
triton-xpu在 Windows 上对 MSVC 是硬依赖,这不是我们环境配置问题,而是上游设计如此。
5.4 安装 VS2022 Build Tools(需要 UAC 提权)
下载引导程序并提权安装 C++ 工作负载(会弹出 UAC,需要点"是"):
powershell
# 下载(普通权限即可)
Invoke-WebRequest -Uri '<vs_BuildTools.exe 下载地址>' -OutFile D:\pyproject\tools\vs_BuildTools.exe
# 提权安装(会弹 UAC)
Start-Process -FilePath 'D:\pyproject\tools\vs_BuildTools.exe' `
-ArgumentList @('--quiet','--wait','--norestart','--nocache','--add','Microsoft.VisualStudio.Workload.VCTools','--includeRecommended') `
-Verb RunAs -Wait
- 安装位置:
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools - 含 MSVC v143(cl 19.44)与 Windows 11 SDK 10.0.26100
- 首次尝试曾返回退出码 1(日志显示 Windows SDK 子进程安装较慢),确认
vcvars64.bat与cl.exe就位即可。
验证:
powershell
Test-Path 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat'
Get-ChildItem 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC' -Recurse -Filter cl.exe
5.5 补齐 Level Zero 头文件与 ze_loader 库
现象(MSVC 就位后):fatal error C1083: 无法打开包括文件: "level_zero/ze_api.h"。
原因:driver.c 需要 Level Zero SDK 头文件;triton-xpu 期望通过 LEVEL_ZERO_V1_SDK_PATH(默认 /usr/local)找到,而 pip 的 intel-sycl-rt 只带 SYCL 头文件,不带 Level Zero 头文件。
解决:
powershell
# 1) 下载 Level Zero 官方头文件(v1.32.0),放入 tools\level-zero\include\level_zero\
# (注意新版仓库头文件在 include/ 根下,需要放到 include/level_zero/ 子目录)
# 2) 用驱动自带的 ze_loader.dll 生成导入库(w64devkit 的 gendef+dlltool)
cd D:\pyproject\tools\ze_loader
D:\pyproject\tools\w64devkit\bin\gendef.exe ze_loader.dll
D:\pyproject\tools\w64devkit\bin\dlltool.exe -d ze_loader.def -D ze_loader.dll -l ze_loader.lib -k
# 3) 部署
Copy-Item ze_loader.lib -Destination D:\pyproject\venv-triton-xpu\Library\lib\ze_loader.lib
Copy-Item ze_loader.dll -Destination D:\pyproject\venv-triton-xpu\Library\bin\ze_loader.dll
ze_loader.dll来源:C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_*\ze_loader.dll(即当前 Arc 驱动的 Level Zero loader)。- 把 dll 放进 venv
Library\bin是因为 Triton 的find_sycl()会把该目录加入 DLL 搜索路径,保证运行期能加载。
5.6 设置 MSVC 环境并启动
Triton 的编译路径通过 CC/CXX 环境变量选择编译器,且要求路径字符串里含 cl.EXE 才走 MSVC 分支。因此写了启动脚本 triton_env.ps1:
powershell
# triton_env.ps1 核心逻辑
$vcvars = 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat'
cmd /c "`"$vcvars`" >nul 2>&1 && set" # 捕获 INCLUDE / LIB / PATH
$env:CC = '<...>\Hostx64\x64\cl.EXE' # 注意 .EXE 大写,触发 Triton 的 MSVC 分支
$env:CXX = $env:CC
$env:PYTHONUTF8 = '1'
$env:LEVEL_ZERO_V1_SDK_PATH = 'D:\pyproject\tools\level-zero'
$env:TRITON_SUPPRESS_GCC_HOST_CODE_DEPRECATION_WARNINGS = '0' # 见 5.7
5.7 关掉 Triton 追加的 GCC 风格编译参数
现象:编译命令里出现了 -Wno-deprecated-declarations(GCC 风格),MSVC 的 cl.exe 不认,会报 D8021。
原因:triton/runtime/build.py 在 is_xpu() 分支里默认追加该参数(由环境变量 TRITON_SUPPRESS_GCC_HOST_CODE_DEPRECATION_WARNINGS 控制,默认值为 1 即追加)。
解决:启动脚本里设 TRITON_SUPPRESS_GCC_HOST_CODE_DEPRECATION_WARNINGS=0,cl 只收到 -DSYCL_DISABLE_FSYCL_SYCLHPP_WARNING 等合法参数。
6. 最终验证(全部通过)
6.1 手写 Triton kernel(add / softmax)
powershell
& D:\pyproject\triton_env.ps1 D:\pyproject\test_triton.py
text
torch: 2.13.0+xpu
triton: 3.7.2
xpu available: True
xpu count: 1
device: Intel(R) Arc(TM) 140T GPU (16GB)
props: Intel(R) Arc(TM) 140T GPU (16GB) | mem: 16.44 GB
Triton add kernel on XPU: True
Triton softmax kernel on XPU: True
ALL PASS
6.2 torch.compile(inductor + Triton XPU)
powershell
& D:\pyproject\triton_env.ps1 D:\pyproject\test_compile.py
text
torch.compile(matmul+add) on XPU: True
XPU compiled matmul: 0.52 ms/iter, ~4.1 TFLOPS
COMPILE OK
6.3 NPU 可见性(OpenVINO)
powershell
D:\pyproject\venv-triton-xpu\Scripts\python.exe -c "import openvino as ov; c=ov.Core(); print(c.available_devices)"
text
OpenVINO 2026.3.0-...
devices: ['CPU', 'GPU', 'NPU']
7. 最终文件清单
text
D:\pyproject\
├─ venv-triton-xpu\ # 虚拟环境(torch 2.13.0+xpu / triton-xpu 3.7.2 / numpy / openvino)
├─ triton_env.ps1 # 启动脚本:vcvars64 + CC/CXX + UTF-8 + Level Zero 路径
├─ test_triton.py # 手写 Triton kernel 验证(add + softmax)
├─ test_compile.py # torch.compile 验证 + 简单性能
├─ README_triton_xpu.md # 使用说明(浓缩版)
├─ intel_gpu_triton.md # 本文档
└─ tools\
├─ level-zero\include\level_zero\ # Level Zero v1.32.0 头文件(ze_api.h 等)
├─ ze_loader\ # 由驱动 ze_loader.dll 生成的 .lib/.def
└─ w64devkit\ # 早期 MinGW 尝试的残留(约 1GB,可手动删除)
8. 日常使用方法
powershell
# 跑示例
& D:\pyproject\triton_env.ps1 D:\pyproject\test_triton.py
& D:\pyproject\triton_env.ps1 D:\pyproject\test_compile.py
# 跑自己的脚本(script 里 import torch / triton,张量 device="xpu")
& D:\pyproject\triton_env.ps1 your_script.py
9. 换机器重建(速查)
powershell
python -m venv venv-triton-xpu
venv-triton-xpu\Scripts\python -m pip install torch --index-url https://download.pytorch.org/whl/xpu
venv-triton-xpu\Scripts\python -m pip install numpy openvino
外加一次管理员安装:
powershell
vs_BuildTools.exe --quiet --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended
以及 Level Zero 头文件 + ze_loader.lib/dll(见 5.5),最后用 triton_env.ps1 这类启动脚本设置环境。
10. 备注
- 首次运行慢属正常:
spirv_utils编译与 Triton kernel JIT 都会缓存到~/.triton,之后秒级启动。 - 不要安装 NVIDIA 版
triton,会与triton-xpu冲突;本环境 torch 依赖已锁定triton-xpu==3.7.2。 - 若以后换 PyTorch 大版本,
triton-xpu会随之升级,~/.triton缓存建议删除以免新旧产物冲突(Remove-Item $env:USERPROFILE\.triton -Recurse)。