news 2026/9/13 5:05:22

2026 年 5 月 Triton 社区例会纪要:TileLens 可视化分析、Windows 插件扩展与 Block Pointer 去留之争

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026 年 5 月 Triton 社区例会纪要:TileLens 可视化分析、Windows 插件扩展与 Block Pointer 去留之争

2026 年 5 月 Triton 社区例会纪要:TileLens 可视化分析、Windows 插件扩展与 Block Pointer 去留之争

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

本次例会纪要覆盖 Triton 社区在 2026 年 5 月的三场核心讨论:乔治梅森大学的 TileLens 项目(面向 tile 编程模型的通用可视化程序分析工具)、Intel 工程师在 Windows 平台移植 Triton 插件扩展的调研结论,以及社区围绕 block pointer 弃用、TMA 命名与 Triton 发布节奏的公开问答。读者可以借此了解 Triton 生态在可观测性工具链、跨平台 ABI 与语言演进三个方向的最新动态。

议程概览

本次例会(会议记录原文)包含三个环节:

主题主讲人机构
TileLens:tile 编程模型的程序可视化分析Taihua He乔治梅森大学
Triton 在 Windows 上的扩展调研Quinn PhamIntel
社区问答(block pointer 弃用、TMA 命名、发布节奏)Whitney TsangIntel

另有延期议题:AMD Felix Lee 的 fly DSL 演讲推迟至 2026 年 7 月例会,Andrew Brown 团队的 Triton 扩展工作同样计划在 7 月汇报。

TileLens:面向 tile 编程模型的通用可视化分析工具

背景与动机:内核可观测性正在成为刚需

随着 mega kernels、异步执行和确定性(determinism)需求的增长,内核(kernel)的可观测性越来越重要。但当前的工具生态是碎片化的:

  • 硬件侧:Nvidia、AMD 各自维护独立的分析工具;
  • 软件侧:Triton、Tilelang、CuTile、Amazon NKI 等众多 tile 式 DSL 并存,甚至同一项目内会混用多个 DSL(例如 Mamba3 在同一个项目中同时使用了 CuTeDSL、Triton 和 Tilelang)。

TileLens 的目标正是成为面向 tile 式 DSL 的通用分析器:把不同 DSL 的公共操作统一映射到公共 IR 上,再交由统一的客户端消费。

设计:公共 IR + 可插拔客户端

TileLens 的整体架构分三层:

  1. 前端层:Triton、NKI 等 DSL 的公共操作(如tl.loadnki.load)被降低到一套公共 IR;
  2. 追踪层:通过函数装饰器(decorator)包装内核并追踪执行,输出一系列 IR 记录(IR records);
  3. 客户端层:IR 记录被 tracer(追踪器)、profiler(分析器)、sanitizer(检查器)、visualizer(可视化器)等客户端消费。

使用方式非常轻量:import triton_viz,装饰内核,然后通过修改一个配置值即可切换客户端(tracer / sanitizer / profiler)。

实现原理

实现上有三个关键点:

  • 装饰器包装:用 Triton 风格的[grid]语法包裹内核,生成内核接口和一个 SPMD 运行函数;
  • DSL 解释器替换:对 DSL 打补丁(patch),让其走解释器执行——Triton 本身已有解释器(见 python/src/interpreter.cc),NKI 则自定义实现了一个;
  • 双重打补丁:对操作做双重 patch,注入插桩钩子,将 DSL 操作映射到 TileLens 公共操作。

新增一个 DSL 前端(以 NKI 为例)

接入一个新的 DSL 前端需要五个步骤:

  1. 用 NumPy 实现该 DSL 的全部函数(如nki.ndarraynki.matmul);
  2. 把 DSL 命名空间 patch 到这些实现上,并提供unpatch恢复原状;
  3. 提供解释器,在 CPU 上的 SPMD 网格上运行内核;
  4. 对语义存在差异的 DSL 操作新增自定义 IR 操作(例如 NKI 的dma_copy/tensor_copy被映射到新增的transfer操作);
  5. 提供适配函数与操作名映射表,注册为前端。

新增一个客户端

实现客户端抽象类并覆写钩子即可:包括 pre/post run、参数回调(arg callback)、register_op_callback等。register_op_callback允许客户端定义按操作的行为,例如 tracer 在tl.dottl.loadtl.store之后记录输出。

值得关注的两个特性

  • eager 与符号执行(用于 sanitizer / profiler):构建地址计算的依赖图,只求值分析所需的部分(如边界检查),比完整 eager 执行快得多;
  • 并发网格启动:通过多线程运行 PID 来模拟 GPU 上的并发 SM 执行,使原子操作竞争行为贴近真实 GPU;并发度由triton_viz.config.num_sms配置。

现场演示与当前局限

演示环节展示了三个客户端的效果:可视化器呈现 matmul 内核的输入数组、掩码、每个 PID 的加载区域、数值热力图、dot/load/store 记录与转置;sanitizer 对正确的 matmul 干净通过,但对注入的越界访问(如+ 1)会标出违规行与地址计算追踪链;profiler 展示加载/存储效率、掩码指标与潜在问题。

当前的局限与后续计划包括:sanitizer 的数据竞争检查器仍在开发中;tracer 基于 Python 较慢且内存占用高(保存了全部中间激活),激活检查点(activation checkpointing)可能缓解;暂未精细建模内存分配与并发;需要支持更多 DSL,CuTile 已列入路线图。

问答环节中,针对与 CUTracer / tritonparse / tl.parse 的对比,作者回应 TileLens 更上层——把任意高层 DSL 收敛到公共接口,聚焦语义正确性与中间激活分析,而非追求峰值性能提取。对 Simon 提出的共享内存分配可视化、寄存器/占用率 roofline、生命周期分析等问题,作者表示在没有编译器内部信息的情况下实现困难(如 NKI 场景),当前不在范围内,但这是用户扩展自定义硬件专属客户端的绝佳扩展点。

Triton 扩展在 Windows 上的调研(Intel)

背景:Triton extensions 框架

2026 年 1 月例会(Corbin、Puyan、Thomas、Simon)引入了 Triton extensions 框架:无需修改 Triton 核心即可新增 pass / dialect / op,其基础是 Triton 的插件(plugin)基础设施。Triton 的插件接口在 include/triton/Tools/PluginUtils.h 中定义:插件通过TRITON_PLUGIN_API宏导出tritonGetPluginInfo()入口点,返回PluginInfo(包含apiVersion、pass 列表、dialect 列表、自定义 op 列表与 Triton 版本),并通过TRITON_PLUGIN_PATHS环境变量加载(冒号分隔的共享库路径)。核心 Triton 编译流程、pass 管道都定义在 python/triton/compiler/compiler.py 中,而插件示例(含 pass 定义与加载逻辑)可参考 examples/plugins/README.md、examples/plugins/TritonPlugin.cpp 与 examples/plugins/Passes.td。

Intel 的实践:3 个上游化候选 pass

Intel 的调研方向是:用 pass 扩展把跨后端通用的 target-independent pass 上游化。他们实现了 3 个扩展 pass:hoist layout conversions(提升布局转换)、fuse reshape(融合 reshape)、remove boundary checks(移除边界检查)。其中 hoist layout conversions 同时被 Intel 和 AMD 使用,是很好的上游候选。

经验总结:接入成本极低——只需挂接到 pass 基础设施;在 Linux 上运行良好。

Windows 上的核心问题:符号导出与 65K 限制

扩展本质上是运行时动态加载的共享库,需要 LLVM/MLIR/Triton 符号的单一来源定义以保证类型身份一致(例如动态 cast)。问题出在符号导出策略:

  • Linux 上:禁用-fvisibility=hidden,把libtriton.so的所有符号全部导出,即可正常工作;
  • Windows 上:等效的WINDOWS_EXPORT_ALL_SYMBOLS会撞上每个 DLL 65,000 个符号的上限。虽然存在一份解除该限制的 MSVC 链接器 RFC,但已搁置评审超过一年。

前进路径

  • LLVM/MLIR 符号:当前 Windows 上没有任何受支持的 LLVM/MLIR 共享库分发方式。BUILD_SHARED_LIBS仅供开发;官方推荐的分发选项LLVM_BUILD_DYLIB在 Windows 上不受支持。上游正在推进用LLVM_ABI宏标注 LLVM 公共接口,使 DyLib 构建保持在 65K 限制之内。
  • Triton 符号:Triton 可以做同样的事——标注公共接口并只导出这些符号。这不仅可行,即便在 Linux 上也能带来更干净的 ABI 控制。

问答环节透露:LLVM_BUILD_DYLIB的 Windows 支持工作量很大(注解 CI 已被禁用,许多子任务连 issue 都还没有);库拆分是必然方向——扩展将分别链接libLLVMlibMLIR以及一个(或多个)Triton 库。

社区问答:block pointer 弃用、TMA 命名与发布节奏

Block pointer 弃用:指向 tensor pointer 还是 tensor descriptor?

近期 OpenAI 的改动在前端弃用 block pointer,将其降低为 tensor pointer。Intel 认为 block pointer 携带的结构化信息对其至关重要(Intel 有下游改动将其降低为 tensor descriptor),因此追问:为什么选择 tensor pointer?降低为 tensor descriptor 是否会被上游接受?

Intel 的 Ettore 认为:逻辑上,替换一个已弃用的语言特性应当保留语义信息——tensor descriptor 携带的信息与 block pointer 接近,而 tensor pointer 会丢失这些信息。OpenAI 的 Thomas Raoux(中途加入)回应:目标是彻底移除 block pointer;映射到 pointer 可以通过语言包装器直接实现,而映射到 tensor descriptor 工作量大且无法 1:1 转换;但愿意接受一个干净的、标准库风格的包装器,在目标支持的地方用 tensor descriptor 模拟 block pointer。目前各后端本就存在差异(部分 Nvidia 版本回退到 tensor pointer,另一些使用 TMA)。Whitney 将提交 PR 供评审。

从当前仓库代码可印证这一演进方向:在 python/triton/language/core.py 中,tl.make_block_ptrtl.advance均已改为抛出NotImplementedError("Block pointers have been removed in favor of the tensor descriptor API"),而tl.make_tensor_descriptor(python/triton/language/core.py)成为推荐替代,其类型tensor_descriptor_base_type与值tensor_descriptor_base亦定义于同一文件。仓库代码中还保留了大量与 tensor descriptor 相关的 lowering 测试(见 test/Conversion/tritongpu_update_tensor_descriptor.mlir、test/Conversion/relayout_tritongpu.mlir 等),说明 descriptor 路径已是编译后端的主力实现。

use_tma命名问题

有 issue(pytorch/pytorch#163536)提议重命名 inductor 中use_tma参数,因为没有任何机制强制 tensor descriptor 必须走 TMA。Bill 回应暂无进展,将线下跟进。

Triton 发布节奏与 PyTorch 对齐

PyTorch 的发布频率在提高,这会如何影响 Triton?Andrey 回应:计划继续保持Triton 发布紧随 PyTorch 发布——理想情况下每次 PyTorch 发布都对应一次 Triton 发布,实际上可能是隔次发布。关键闸门是 PyTorch CI 中 Triton pin 的迁移能否保持绿色;若成功,就切出一次 Triton 发布。同时,围绕引入新架构或重要特性的发布,会投入更多精力。

小结

本次例会呈现了 Triton 生态的三条主线:TileLens 展示了"用统一 IR 收敛碎片化 DSL 工具链"的愿景,其 sanitizer 的符号执行、多线程并发网格模拟对内核开发者是立即可用的能力;Intel 的 Windows 调研将插件扩展的 ABI 问题摆上台面,LLVM_ABI标注与 Triton 公共接口导出是明确的可行路径;block pointer 的移除已在本仓库代码中落地(tl.make_block_ptr抛错、tl.make_tensor_descriptor上位),后续围绕"用 tensor descriptor 模拟 block pointer 的标准库包装器"的讨论值得持续关注。

完整会议录像见会议记录末尾的 Recording 链接(会议记录原文)。

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

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

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

桌面Agent容器化:重构智能办公的运行范式

1. 项目概述:为什么“桌面 Agent”需要容器化?——从 Crayfish 与 WorkBuddy 容器版的命名逻辑说起你有没有遇到过这样的情况:装好一个号称“智能办公助手”的桌面 Agent,结果一启动就卡在加载界面,等三分钟才弹出主窗…

作者头像 李华
网站建设 2026/9/13 5:00:24

大语言模型自我激励搜索机制解析与应用

1. 项目概述:当大语言模型学会自我激励式搜索在2025年NIPS会议上引起轰动的这项研究,本质上是在解决一个困扰AI领域多年的根本性问题——如何让大语言模型(LLM)从被动响应者进化为具有持续进化能力的主动探索者。传统LLM就像个知识渊博但缺乏主动性的图书…

作者头像 李华
网站建设 2026/9/13 4:57:58

在线办公协同效率提升实战指南:场景适配方法论

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 4:55:45

DataHub Docker 部署:3 条命令跑起来,踩坑全在这

DataHub Docker 部署:3 条命令跑起来,踩坑全在这 【免费下载链接】datahub The Context Platform for your Data and AI Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub 上周有人装 DataHub 卡住了:clone 仓库花了 …

作者头像 李华