NineToothed 0.24.0 发布:AOT 更稳定,构建更高效,张量表达能力进一步增强
我们正式发布 NineToothed 0.24.0。此版本围绕 AOT 编译链路、构建能力、自动调优机制及张量元操作体验进行完善,在保持 DSL 抽象优势的同时,进一步强化 NineToothed 稳定性与工程能力。
本次更新重点
1. AOT 编译与启动机制全面增强
0.24.0 对 AOT kernel launching 机制进行了系统性重构与稳定化,重点包括:
- 优化 AOT kernel 的生成与启动流程
- 修复冗余 kernel launch function 生成问题
- 改进 launch 参数处理方式
- 支持多设备系统下的 AOT 编译与运行
- 支持更稳定的多上下文 kernel 管理
这意味着 NineToothed 在复杂 CUDA 环境、多设备场景与工程化部署中的可用性进一步提升。
2. 新增 ninetoothed.build
本版本新增了 ninetoothed.build,用于基于 premake 函数和配置集合批量构建 kernel。
借助这一能力,开发者可以更方便地:
- 为不同配置生成多组 kernel
- 自动组织参数与分发逻辑
- 降低手工管理多个 kernel 版本的复杂度
这为面向多配置、多候选实现的 kernel 构建工作流提供了更统一的入口。
3. ninetoothed.build 构建速度提升
在新增 build 的基础上,NineToothed 进一步通过 concurrent.futures 对构建流程进行了并行化优化。
对于需要批量编译多个配置的场景,这一改进能够显著提升构建效率,进一步增强 build 在实际工程中的可用性。
4. 新增 ninetoothed.auto_tuner.AutoTuner
0.24.0 引入了 AutoTuner,用于在多个候选实现之间进行自动 benchmark 与最优选择。
其主要特性包括:
- 支持多个候选函数的性能比较
- 根据输入参数自动选择更优实现
- 支持 benchmark 结果缓存与复用
- 降低手工调参与人工选择配置的成本
这为 NineToothed 后续在自动优化方向上的演进提供了重要基础。
5. 新增 Tensor.getitem
本版本为 Tensor 引入了 getitem 支持,使张量索引和切片表达更加自然。
当前已支持包括以下形式在内的常见访问方式:
- 整数索引
- slice
- None
- Ellipsis
- 多维组合索引
这让 NineToothed 的张量表达更贴近 Python / NumPy 风格,进一步提升了 DSL 的可读性与易用性。
6. 新增 Tensor.pad
0.24.0 同时新增了 Tensor.pad 元操作,并补充了相应测试与文档支持。
这为 padding 相关的张量变换场景提供了更直接的表达方式,尤其适用于卷积等涉及边界扩展的算子实现。
其他改进
除以上重点更新外,本版本还包含多项底层增强与稳定性改进,包括:
- 新增 stride 方法支持
- 支持直接索引 source tensors
- 改进 tensor intrinsic 的表达式解析
- 完善 constexpr tensor size 处理
- 优化符号分析与元数据一致性
- 增强 AST 处理过程的健壮性
- 补充和调整多项测试用例
同时,文档中也已加入:
- ninetoothed.build
- Tensor.pad
总结
总体来看,NineToothed 0.24.0 是一次围绕“工程能力”和“表达能力”同步推进的重要更新。
它不仅带来了更丰富的 API 和更自然的张量操作方式,也进一步增强了 AOT、多设备支持、批量构建与自动调优等关键能力。
欢迎大家升级体验 NineToothed 0.24.0,也欢迎继续向我们反馈使用中的建议与问题。
访问项目
欢迎访问 NineToothed 的 GitHub 主页了解更多详情:
🔗 https://github.com/InfiniTensor/ninetoothed
您也可以直接点击文末的 【阅读原文】 快速跳转。
