quant_per_token_cast_e5m6] feat: 新增 E5M6 逐 Token 正向量化算子(Op/Kernel/Test/Bench) 参与者与课题信息 课题名称:quant_per_token_cast_e5m6 —— E5M6 逐 Token 正向量化算子迁移 课题完整简介:将 MetaX-MACA/TileKernels-Metax 的 per_token_cast_to_e5m6_kernel 上游实现迁移到 TileOPs-Metax,完成 E5M6(1 符号 + 5 指数 + 6 尾数,共 12 bit)逐 Token 正向 encode 的 Op/Kernel/测试/Benchmark 全套产出。核心优化方向为「E5M6 位打包的位级并行与向量化编码」,预期在 C500 上达到接近 HBM 带宽上限的吞吐,并与参考实现逐字节一致。 PR 简要描述 算子名称:quant_per_token_cast_e5m6 算子认领 Issue:#151624(纯线上个人,并行认领);同上游文件历史认领 Issue #52、#141 均已关闭且无实现 PR;相关 Manifest PR #174(spec-only) 复用的 Manifest PR / 提交 SHA:#174 [Manifest] quant_per_token_cast_e5m6 (spec-only)(作者 xinxiong),本 PR 将对应条目 status 更新为 implemented,不重复提交 PR A 任务类型: 新算子开发 已有算子二次优化 现有基线 PR、原贡献者及冻结提交 SHA:不适用 参与方式:纯线上个人 小组 / 个人:线上个人 成员 / 姓名:Y2745 改动类型: feat:新增算子或功能 optimize:优化已有实现 本次 PR 优化方案 优化前的主要问题:目标分支 summer-camp-2026 无 quant 子包及对应 Op/Kernel;上游实现依赖 tile_kernels.quant.common 基础设施与 CUDA intrinsic __float2half_rz,直接迁移到 MACA 会产生舍入偏差。 采用的优化方案: 位级并行 E5M6 编码:每 8 值打包为 3 个 uint32(96 bit),支持码跨 uint32 边界,整数位操作完成符号/指数/尾数拆分与 round-to-nearest-even tie 处理。 精确 RZ 自实现:实测 MACA 3.7.1.5 的 __float2half_rz 行为为 RNE,改为纯位操作模拟 round-toward-zero,消除舍入偏差。 f32 精度 amax 归约:T.reduce_absmax 在 f32 精度下进行,避免 bf16 输入带来的精度损失。 关键代码或配置变更: tileops/kernels/quant/quant_per_token_cast_e5m6.py(+204):QuantPerTokenCastE5M6Kernel tileops/ops/quant/quant_per_token_cast_e5m6.py(+61):QuantPerTokenCastE5M6Op tests/ops/test_quant_per_token_cast_e5m6.py(+106) benchmarks/ops/bench_quant_per_token_cast_e5m6.py(+61) workloads/quant_per_token_cast_e5m6.py(+18) tileops/manifest/quantization.yaml(+85):QuantPerTokenCastE5M6Op -> implemented tileops/perf/formulas.py(+12):per_token_cast_e5m6_roofline 与已有认领任务的区别及独立技术增量:与 PR #199 quant_cast_back_e5m6(E5M6 反向 decode)方向正交,本 PR 补齐正向 encode;Issue #52 / #141 历史认领均已关闭且无实现 PR,本 PR 为当前唯一活跃实现。独立增量为 E5M6 位打包的位级并行编码与 RZ 位操作实现。 精度验证 对比基准实现:上游 per_token_cast_to_e5m6 语义的独立 PyTorch 位操作参考实现 测试命令: ython -m pytest tests/ops/test_quant_per_token_cast_e5m6.py -v code 测试 shape/dtype: [4096, 7168] bf16, round_sf=True [8192, 5120] bf16, round_sf=False [16384, 4096] bf16, round_sf=True [128, 1536] bf16, round_sf=False [1, 640] fp32, round_sf=False [1024, 4096] fp32, round_sf=True 误差范围(atol/rtol):packed 输出要求 torch.equal 逐字节完全相等;SF 对比 atol=1e-8, rtol=1e-5 验证结果:6/6 通过,packed 输出与参考逐字节一致,SF 完全一致。 性能数据【必填】 测试环境:MetaX C500;Kernel Mode Driver 3.8.30;MACA 3.7.1.5;PyTorch 2.8.0+metax3.7.1.3;TileLang 0.1.10 性能复现命令: code python -m pytest benchmarks/ops/bench_quant_per_token_cast_e5m6.py -v 任务基线:上游源实现 tile_kernels/quant/per_token_cast_to_e5m6_kernel.py @ 0266ab740980de7dc03a828b8259cd73d100c2eb(MetaX-MACA/TileKernels-Metax dev 分支) 优化后 TileOps: shape latency_ms bandwidth_tbs t4096-h7168-bf16-round 0.0967 1.0629 t8192-h5120-bf16 0.1363 1.0773 t16384-h4096-bf16-round 0.2141 1.0971 t128-h1536-bf16 0.0078 0.0879 t1-h640-fp32 0.0070 0.0005 t1024-h4096-fp32-round 0.0210 1.0986 Torch 参考基线: shape latency_ms t4096-h7168-bf16-round 13.0505 t8192-h5120-bf16 18.5327 t16384-h4096-bf16-round 29.5751 t128-h1536-bf16 0.2946 t1-h640-fp32 0.2378 t1024-h4096-fp32-round 2.0408 本次优化加速比(任务基线 / 优化后 TileOps):待补测。当前 C500 环境未保留上游 kernel,无法按同一 Benchmark 口径复测上游源实现;复现命令见上,关联认领 Issue #151624。 相对 Torch 加速比(Torch / 优化后 TileOps):34x ~ 138x(大 shape 135x138x,小 shape 34x38x,fp32 97x) 瓶颈分析:大 shape 带宽 1.06~1.10 TB/s,接近 HBM 上限,瓶颈为访存而非 ALU;小 shape(t128-h1536、t1-h640)受 kernel launch 与固定开销主导,有效带宽低属预期。mcProfiler duty 明细待补充。 提交自检清单 全部测试用例运行通过,精度达标 [x GPU 测试用例已按仓库要求使用 smoke / full 等分层标记 已删除临时调试打印、冗余测试代码 性能指标可本地复现,数据真实有效 二次优化已注明现有基线、原贡献人和本轮独立技术增量(新算子不适用) 已按参与方式完成提交前自查(纯线上 Issue #22) 多人并行认领时,已关联同算子已有 Issue / PR,并说明本轮独立技术增量及与已有任务的区别
quant_per_token_cast_e5m6] feat: 新增 E5M6 逐 Token 正向量化算子(Op/Kernel/Test/Bench)
参与者与课题信息 课题名称:quant_per_token_cast_e5m6 —— E5M6 逐 Token 正向量化算子迁移
课题完整简介:将 MetaX-MACA/TileKernels-Metax 的 per_token_cast_to_e5m6_kernel 上游实现迁移到 TileOPs-Metax,完成 E5M6(1 符号 + 5 指数 + 6 尾数,共 12 bit)逐 Token 正向 encode 的 Op/Kernel/测试/Benchmark 全套产出。核心优化方向为「E5M6 位打包的位级并行与向量化编码」,预期在 C500 上达到接近 HBM 带宽上限的吞吐,并与参考实现逐字节一致。
PR 简要描述 算子名称:quant_per_token_cast_e5m6
算子认领 Issue:#151624(纯线上个人,并行认领);同上游文件历史认领 Issue #52、#141 均已关闭且无实现 PR;相关 Manifest PR #174(spec-only)
复用的 Manifest PR / 提交 SHA:#174 [Manifest] quant_per_token_cast_e5m6 (spec-only)(作者 xinxiong),本 PR 将对应条目 status 更新为 implemented,不重复提交 PR A
任务类型:
新算子开发 已有算子二次优化 现有基线 PR、原贡献者及冻结提交 SHA:不适用
参与方式:纯线上个人
小组 / 个人:线上个人
成员 / 姓名:Y2745
改动类型:
feat:新增算子或功能 optimize:优化已有实现
采用的优化方案:
位级并行 E5M6 编码:每 8 值打包为 3 个 uint32(96 bit),支持码跨 uint32 边界,整数位操作完成符号/指数/尾数拆分与 round-to-nearest-even tie 处理。 精确 RZ 自实现:实测 MACA 3.7.1.5 的 __float2half_rz 行为为 RNE,改为纯位操作模拟 round-toward-zero,消除舍入偏差。 f32 精度 amax 归约:T.reduce_absmax 在 f32 精度下进行,避免 bf16 输入带来的精度损失。 关键代码或配置变更:
tileops/kernels/quant/quant_per_token_cast_e5m6.py(+204):QuantPerTokenCastE5M6Kernel tileops/ops/quant/quant_per_token_cast_e5m6.py(+61):QuantPerTokenCastE5M6Op tests/ops/test_quant_per_token_cast_e5m6.py(+106) benchmarks/ops/bench_quant_per_token_cast_e5m6.py(+61) workloads/quant_per_token_cast_e5m6.py(+18) tileops/manifest/quantization.yaml(+85):QuantPerTokenCastE5M6Op -> implemented tileops/perf/formulas.py(+12):per_token_cast_e5m6_roofline 与已有认领任务的区别及独立技术增量:与 PR #199 quant_cast_back_e5m6(E5M6 反向 decode)方向正交,本 PR 补齐正向 encode;Issue #52 / #141 历史认领均已关闭且无实现 PR,本 PR 为当前唯一活跃实现。独立增量为 E5M6 位打包的位级并行编码与 RZ 位操作实现。
测试命令: ython -m pytest tests/ops/test_quant_per_token_cast_e5m6.py -v
code
测试 shape/dtype:
[4096, 7168] bf16, round_sf=True [8192, 5120] bf16, round_sf=False [16384, 4096] bf16, round_sf=True [128, 1536] bf16, round_sf=False [1, 640] fp32, round_sf=False [1024, 4096] fp32, round_sf=True 误差范围(atol/rtol):packed 输出要求 torch.equal 逐字节完全相等;SF 对比 atol=1e-8, rtol=1e-5
验证结果:6/6 通过,packed 输出与参考逐字节一致,SF 完全一致。
性能数据【必填】 测试环境:MetaX C500;Kernel Mode Driver 3.8.30;MACA 3.7.1.5;PyTorch 2.8.0+metax3.7.1.3;TileLang 0.1.10 性能复现命令:
python -m pytest benchmarks/ops/bench_quant_per_token_cast_e5m6.py -v 任务基线:上游源实现 tile_kernels/quant/per_token_cast_to_e5m6_kernel.py @ 0266ab740980de7dc03a828b8259cd73d100c2eb(MetaX-MACA/TileKernels-Metax dev 分支)
优化后 TileOps:
shape latency_ms bandwidth_tbs t4096-h7168-bf16-round 0.0967 1.0629 t8192-h5120-bf16 0.1363 1.0773 t16384-h4096-bf16-round 0.2141 1.0971 t128-h1536-bf16 0.0078 0.0879 t1-h640-fp32 0.0070 0.0005 t1024-h4096-fp32-round 0.0210 1.0986 Torch 参考基线:
shape latency_ms t4096-h7168-bf16-round 13.0505 t8192-h5120-bf16 18.5327 t16384-h4096-bf16-round 29.5751 t128-h1536-bf16 0.2946 t1-h640-fp32 0.2378 t1024-h4096-fp32-round 2.0408 本次优化加速比(任务基线 / 优化后 TileOps):待补测。当前 C500 环境未保留上游 kernel,无法按同一 Benchmark 口径复测上游源实现;复现命令见上,关联认领 Issue #151624。
相对 Torch 加速比(Torch / 优化后 TileOps):34x ~ 138x(大 shape 135x138x,小 shape 34x38x,fp32 97x)
瓶颈分析:大 shape 带宽 1.06~1.10 TB/s,接近 HBM 上限,瓶颈为访存而非 ALU;小 shape(t128-h1536、t1-h640)受 kernel launch 与固定开销主导,有效带宽低属预期。mcProfiler duty 明细待补充。
提交自检清单 全部测试用例运行通过,精度达标 [x GPU 测试用例已按仓库要求使用 smoke / full 等分层标记 已删除临时调试打印、冗余测试代码 性能指标可本地复现,数据真实有效 二次优化已注明现有基线、原贡献人和本轮独立技术增量(新算子不适用) 已按参与方式完成提交前自查(纯线上 Issue #22) 多人并行认领时,已关联同算子已有 Issue / PR,并说明本轮独立技术增量及与已有任务的区别
面向大语言模型、由规范驱动的 GPU 算子库
简体中文 | English
项目状态:TileOPs-Metax 正在积极开发中,API 可能发生变化。
本仓库同时面向首届开源英才夏令营线下学员和纯线上参与者开放。两类参与者均按TileLang 算子性能分析与优化指南完成任务;开营前的线上课程与作业另行安排。
开营前线上课程与作业仍由原课程平台单独维护;下方三门课程为纯线上实践配套课程,二者相互独立。
线上参与者按TileLang 算子性能分析与优化指南完成任务,不受线下营期限制,也不参加线下分组和答辩;线上优秀项目按活动规则另行评选和奖励。线上选题优先使用候选算子清单;如清单内题目不足,也可申请开发 MetaX-MACA/TileKernels-Metax dev 分支中清单外、尚未在本仓库实现的算子,或基于本仓库已合入的现有实现开展二次性能优化。自主课题须先在认领 Issue 中说明任务价值、技术范围和基线,经管理员确认后方可开始。
MetaX-MACA/TileKernels-Metax
dev
为让更多高校师生和开发者参与国产 GPU 开源生态建设,相关课程已上线启悟学习社区等渠道,线下项目任务也已调整为线上通用版本。
每个 Issue 同时提供课程学习入口、作业要求和提交模板。完成课程后,请按要求在对应 Issue 下留言提交作业。
北航同学请先查看:北航同学课程与实践时间安排。
参与流程如下:
spec-only
feat
optimize
夏令营学员应使用 summer-camp-2026 分支,并遵循TileLang 算子性能分析与优化指南。
summer-camp-2026
学员以小组为单位,从候选算子清单中选择一个主算子。候选算子主要来自 MetaX-MACA/TileKernels-Metax 的 dev 分支,并已初步评估 MetaX C500 适配或性能优化空间。任务重点是按 TileOPs 规范完成算子泛化、MetaX C500 适配、测试和性能优化,而不是简单复制源实现:
完整时间安排、提交要求和验收标准见TileLang 算子性能分析与优化指南。
认领范围以候选算子清单为准,源仓库中的算子不会全部开放。每组应优先选择一个中等或较高难度的主算子;主算子完成并经助教确认后,可追加最多两个算子。每个算子须单独认领、分别提交 PR,不得提前占用尚未开始的算子。
按要求完成任务并参加成果答辩的学员,可获得本届开源英才夏令营结营证书。
答辩结束后,评委将结合小组答辩、PR、代码与测试质量、MetaX C500 验证证据、性能分析及开源复用价值,综合考虑算子难度、实际完成情况、优化效果和工程贡献,评出以下三个奖项:
原则上每组最多获得一个主奖。评奖不以绝对加速比作为唯一依据,评委将结合算子基础难度、工作量、完成质量和证据可信度综合判断。
TileOPs-Metax 是一个基于 TileLang、面向大语言模型训练和推理的 GPU 算子库。项目采用规范驱动的开发模式,帮助开发者和 AI Agent 构建、评估和优化高性能算子。
TileOPs 是一个基于 TileLang、面向大模型训练与推理的高性能 GPU 算子库。项目采用 Op 与 Kernel 分层架构,并通过算子 Manifest 描述工作负载和 Roofline 公式,支持对算子进行自动验证和硬件性能上限分析。 TileKernels-Metax 相当于是一个不错的算子清单,已包含 MoE Routing、Quantization、Transpose、Eng
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
TileOPs-Metax
面向大语言模型、由规范驱动的 GPU 算子库
简体中文 | English
开源英才夏令营与线上实践
本仓库同时面向首届开源英才夏令营线下学员和纯线上参与者开放。两类参与者均按TileLang 算子性能分析与优化指南完成任务;开营前的线上课程与作业另行安排。
国产 GPU 高性能算子线上实践
线上参与者按TileLang 算子性能分析与优化指南完成任务,不受线下营期限制,也不参加线下分组和答辩;线上优秀项目按活动规则另行评选和奖励。线上选题优先使用候选算子清单;如清单内题目不足,也可申请开发
MetaX-MACA/TileKernels-Metaxdev分支中清单外、尚未在本仓库实现的算子,或基于本仓库已合入的现有实现开展二次性能优化。自主课题须先在认领 Issue 中说明任务价值、技术范围和基线,经管理员确认后方可开始。活动报名与算力支持
为让更多高校师生和开发者参与国产 GPU 开源生态建设,相关课程已上线启悟学习社区等渠道,线下项目任务也已调整为线上通用版本。
课程与配套小作业
每个 Issue 同时提供课程学习入口、作业要求和提交模板。完成课程后,请按要求在对应 Issue 下留言提交作业。
课程大作业(按TileLang 算子性能分析与优化指南完成任务)
参与流程如下:
spec-onlyManifest PR;已有有效spec-onlyManifest 时直接复用,并在认领 Issue 和feat实现 PR 中记录其来源。已有算子二次优化复用现有 Manifest,仅在规范变化时先提交并合入 Manifest 更新 PR,随后提交optimize实现 PR;夏令营线下任务(8/3-8/7)
夏令营学员应使用
summer-camp-2026分支,并遵循TileLang 算子性能分析与优化指南。学员以小组为单位,从候选算子清单中选择一个主算子。候选算子主要来自
MetaX-MACA/TileKernels-Metax的dev分支,并已初步评估 MetaX C500 适配或性能优化空间。任务重点是按 TileOPs 规范完成算子泛化、MetaX C500 适配、测试和性能优化,而不是简单复制源实现:完整时间安排、提交要求和验收标准见TileLang 算子性能分析与优化指南。
认领范围以候选算子清单为准,源仓库中的算子不会全部开放。每组应优先选择一个中等或较高难度的主算子;主算子完成并经助教确认后,可追加最多两个算子。每个算子须单独认领、分别提交 PR,不得提前占用尚未开始的算子。
按要求完成任务并参加成果答辩的学员,可获得本届开源英才夏令营结营证书。
优秀项目评选(只针对线下任务)
答辩结束后,评委将结合小组答辩、PR、代码与测试质量、MetaX C500 验证证据、性能分析及开源复用价值,综合考虑算子难度、实际完成情况、优化效果和工程贡献,评出以下三个奖项:
原则上每组最多获得一个主奖。评奖不以绝对加速比作为唯一依据,评委将结合算子基础难度、工作量、完成质量和证据可信度综合判断。
项目简介
TileOPs-Metax 是一个基于 TileLang、面向大语言模型训练和推理的 GPU 算子库。项目采用规范驱动的开发模式,帮助开发者和 AI Agent 构建、评估和优化高性能算子。
主要特性
详细文档