NVIDIA 用智能体工作流把 cuTile Python 内核翻译成 Rust
NVIDIA 开发者博客介绍 TileGym 仓库中的 AI 智能体技能,将 cuTile Python 与 Triton-TileIR 内核翻译为 cuTile Rust,已移植 24 个公开算子,平均达到 cuTile Python 性能的 99.5%。
用途与变化
据 NVIDIA 开发者博客(2026 年 9 月 16 日)介绍,TileGym 仓库新增一个名为 tilegym-converting-python-to-rust 的智能体技能,用于把 CUDA Tile Python(cuTile Python)和 Triton-TileIR 内核翻译成 cuTile Rust(cutile-rs)。cuTile Rust 将 Rust 所有权模型扩展到基于 tile 的 GPU 内核:把可变输出拆成互不相交的分片,并在内核启动之间保留宿主侧所有权约定,同时允许局部退回到更底层的 Tile IR 操作。
三种前端(cuTile Python、Triton-TileIR、cuTile Rust)都汇入同一套 CUDA Tile IR,再由同一个 tileiras 编译器优化并生成 GPU 二进制。因此移植不是重新优化,而是用更安全的宿主语言重新表达同一个 tile 程序,并且可以通过对比参考内核与翻译内核的 Tile IR 做结构化校验,而不只依赖功能测试。
智能体流水线如何组织
博客说明该技能的核心设计是:读取 SKILL.md 的顶层智能体只做路由编排,实际工作由按阶段划分的子智能体完成,每个子智能体只加载本阶段需要的参考资料。流水线覆盖分析、设备内核、宿主与 FFI 代码、基准测试,阶段之间仅通过固定 schema 的产物文件通信,每阶段以机器可校验的判决(VERDICT 行与校验脚本退出码)决定是否推进;出现失败时由 IR 差异分析和残余性能排查两个诊断角色介入,且不直接改代码。运行设有硬性重试上限,避免反复空转。
翻译中的关键差异
博客指出主要难点在于:cuTile Python 在调用时由 JIT 隐式特化,而 Rust 要求在 kernel 签名中显式声明特化。例如未被采用的 ct.Constant 分支在 Python 中编译前即被丢弃,Rust 中则两个分支都必须通过类型检查,一个 Python 内核可能对应多个结构性 Rust 入口;dtype 组合在 Python 中按需编译,在 Rust 中需要显式扩展 ABI 支持。文章以 softmax 为例逐行对比,说明 ct.load 的 NEG_INF 填充在 Rust 中拆分为构造 partition view 再 load 两步,keepdims 归约变为 reduce 后显式 reshape 与 broadcast,常量参数变为 const 泛型。
性能与验证
据博客,24 个公开 TileGym 算子(合计约 40 个 GPU 内核,覆盖逐元素操作到 flash-attention decode、MLA、MoE)全部完成移植;在 NVIDIA DGX B200 上的 CI 基准(CUPTI 设备时间,347 组配对配置,每个配置取四次 CI 运行中的最佳值)显示总体几何平均为 0.995,所有算子均超过 0.95 的阈值。Token 成本据称平均下降约一半。
限制与待核实
- 性能数据来自 NVIDIA 自身的 CI 基准环境,未提供第三方复现结果。
- 博客提到目前并非所有已发布内核都使用完全安全的 API 风格,仍有一部分正在迁移到安全接口。
- 关于智能体工作流的具体提示词、校验脚本细节以及 49 条编码规则,本文未展开,需查阅来源资料与 TileGym 仓库确认。
- 资料中的日期为原博客发布时间,不代表当前时间。
来源与核对说明
- NVIDIA 开发者官方博客 ↗https://developer.nvidia.com/blog/translating-cuda-tile-operations-from-python-to-rust-using-agentic-ai/
本文经 AI 整理及独立自动校对,未做运行验证;自动校对仍可能遗漏问题,请以原始资料为准。
这篇内容对你有帮助吗?
点赞与收藏保存在当前浏览器。
继续阅读
smolagents 项目说明:以代码为动作的轻量智能体库 →