已开启
update workloads of GELU #93
update workloads of GELU #93
已开启
帧徳仕霓鸭创建于 8月3日
帧徳仕霓鸭
8月3日

update workloads of GELU。The cases of last version have too much samples with small shapes, which is unreasonable. By adjusting the cases we achieve better spedup.
屏幕截图 2026-08-03 105027.png

likedislike
合并受阻
atomgit-bot
atomgit-bot
8月3日 评论:

变更摘要

本次 PR 对 npu-kernelbench/data/kernel_generator/level1/GELU/workload.jsonl 中的 50 条 GELU 算子 workload 进行了全面更新,主要涉及 JSON 格式规范化以及测试用例的 shape、dtype 和 approximate 参数的重新设计。新 workload 更聚焦于大尺寸矩阵场景,移除了原有的大量小规模、类图像形状的用例。

主要改动

  • JSON 格式规范化:所有行的 JSON 从紧凑格式(无空格)统一改为带空格分隔的 pretty-print 格式,提升了可读性。
  • Shape 配置全面重设计:移除了原有 1D 小向量(如 [256]、[512])、类图像 4D(如 [1,3,224,224]、[1,64,56,56])及其他小规模张量 shape,全部替换为以大规模 2D 矩阵为主的 shape(如 [16384, 12288]、[32768, 8192]、[24576, 4096] 等),更贴近大模型实际推理场景。
  • dtype 分布调整:各 workload 的输入数据类型在 float32、float16、bfloat16 之间重新分配,GELU-001 保持 float32,其余用例的 dtype 与新的 shape 对应关系均发生变化。
  • approximate 参数重映射:每个 workload 的 approximate("none" / "tanh")取值随 shape 一同重新编排,不再与旧编号保持对应。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月3日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
ascend-robotascend-robot成员
8月3日 添加了label:ascend-cla/no
ascend-robot
ascend-robot成员
8月3日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here


PR Approval Progress

⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)

Module Approval Details

module lgtm status approve status
repo-Ascend/ascendc-kernelgen-data ❌ (0/2)(You can also ask: 张涛, 刘莹莹, 吕坤, 戴慧娜, 赵林林) ❌ (0/1)(You can also ask: 张涛, 陈小刚, 柴光, 占杰, 戴慧娜)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

2301_81796901, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
帧徳仕霓鸭帧徳仕霓鸭
8月3日 修改了pull request 的描述
帧徳仕霓鸭
帧徳仕霓鸭
8月4日 评论:

/check-cla

likedislike
帧徳仕霓鸭
帧徳仕霓鸭
8月4日 评论:

/cla-check

likedislike
帧徳仕霓鸭
帧徳仕霓鸭
8月4日 评论:

/check-cla

likedislike
ascend-robot
ascend-robot成员
8月4日 评论:

CLA检查未通过,详情可参考这里

likedislike
帧徳仕霓鸭
帧徳仕霓鸭
8月4日 评论:

/check-cla

likedislike
ascend-robot
ascend-robot成员
8月4日 评论:

CLA检查未通过,详情可参考这里

likedislike
帧徳仕霓鸭帧徳仕霓鸭
8月4日 强制推送  1 个提交:9729c45e-Update workloads of GELU
ascend-robotascend-robot成员
8月4日 删除了label:ascend-cla/no
ascend-robotascend-robot成员
8月4日 添加了label:ascend-cla/yes
帧徳仕霓鸭
帧徳仕霓鸭
8月4日 评论:

/ai review

likedislike
atomgit-bot
atomgit-bot
8月4日 评论:

代码审查

我已经完成了对该文件的全面审查,包括:

  1. 逐行验证 JSON 语法 — 全部 50 行均为合法 JSON,括号、引号、逗号均正确闭合。
  2. 对照 Pydantic 模型 (Workload, RandomInput, ScalarInput) 检查字段类型和取值范围 — uuid 均为唯一非空字符串;axes: null 合法;shape 为正整数列表;dtype 值 (float32/float16/bfloat16) 均为标准类型;approximate.value 的 "none"/"tanh" 均为合法字符串标量。
  3. 检查 JSON 格式变化(紧凑格式 → 带空格格式)— load_jsonl_file 使用 Pydantic 的 model_validate_json,实际调用 Python 标准 json.loads(),两者完全兼容,不会导致解析失败。
  4. 检查 workload 与 definition.json 的一致性 — definition 中 axes: {} 表示无符号轴,所有 workload 均通过显式 shape 提供具体维度,axes: null 也与之匹配,符合设计。
  5. 检查重复 workload — 无完全重复项(虽然部分 shape 相同,但 dtype 或 approximate 值不同)。
  6. 检查 shape 维度值 — 全部为正整数,无 0 或负值。

审查结论

已审文件:npu-kernelbench/data/kernel_generator/level1/GELU/workload.jsonl — 无问题

优先级 数量
P0 0
P1 0
P2 0
P3 0

总体风险判断:低风险。 此次变更为纯数据更新:将所有 50 条 GELU workload 的 shape 替换为更大的尺寸,以更好地测量 kernel 加速比(与 PR 描述一致)。JSON 格式变化(紧凑→带空格)不影响解析;所有字段值均在合法范围内;无重复、无缺失、无越界。该变更不会引入任何正确性、安全性、可靠性或兼容性问题。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

likedislike
不准确?
atomgit-bot
atomgit-bot8月4日进行代码检视1
npu-kernelbench/data/kernel_generator/level1/GELU/workload.jsonl
@@ -51,0 +47,4 @@
47+{"uuid": "GELU-047", "axes": null, "inputs": {"x": {"type": "random", "shape": [16384, 12288], "dtype": "bfloat16"}, "approximate": {"type": "scalar", "value": "tanh"}}}
48+{"uuid": "GELU-048", "axes": null, "inputs": {"x": {"type": "random", "shape": [32768, 8192], "dtype": "bfloat16"}, "approximate": {"type": "scalar", "value": "none"}}}
49+{"uuid": "GELU-049", "axes": null, "inputs": {"x": {"type": "random", "shape": [4096, 4096, 16], "dtype": "float16"}, "approximate": {"type": "scalar", "value": "tanh"}}}
50+{"uuid": "GELU-050", "axes": null, "inputs": {"x": {"type": "random", "shape": [8, 2048, 2048, 8], "dtype": "float32"}, "approximate": {"type": "scalar", "value": "none"}}}
atomgit-bot
atomgit-bot8月4日评论:

🟡 Medium Priority

changed line → affected behavior/contract → failure mode → suggested fix

变更内容:该 diff 将所有 50 条 GELU workload 的 shape、dtype、approximate 参数全部替换为全新值,但 UUID(GELU-001 ~ GELU-050)保持不变。

影响的契约:Workload 模型中 uuid 字段文档明确标注为 "Unique identifier for this workload configuration"。UUID 是实现 workload 身份稳定性的核心契约。

失效模式:--resume 恢复逻辑(cli/main.py 第 259-263 行 _filter_workloads)使用 (definition_name, solution_name, uuid) 三元组作为已完成 workload 的身份键。当用户先运行一次 benchmark 后,再更新 workload.jsonl 并使用 --resume 重新运行时,系统会将旧 benchmark 结果(基于旧 shape/dtype/approximate)错误地匹配到新 workload 上,导致:

  1. 新 workload 被跳过不执行;
  2. 报告中展示的是旧 workload 的性能数据(错误的 latency/speedup);
  3. profile 目录 {uuid}_ref / {uuid}_sol 可能被旧数据覆盖或混淆。

触发条件:用户在同一 session 中或输出文件保留时,先运行旧 workload、更新 workload.jsonl、再 --resume 运行。

建议:将所有 UUID 更新为与旧序列不重叠的新编号(如 GELU-051 ~ GELU-100),或在 PR 中明确标注为 breaking change 并要求用户清理 --resume 输出。如果 workload 参数发生任何变化,UUID 必须同步变化以维护其作为唯一标识符的契约。

likedislike
不准确?