用途:为 ascend-kernel 中的 AscendC 算子建立可复用的 profiler 性能用例,并形成「自定义算子 vs 标杆」的 Markdown 性能对比报告。
主要能力与流程:
- 用例设计前强制读取 csrc/ops/<op>/design.md,提取支持 dtype、参数约束、典型 shape、执行模式(如 transpose/非 transpose、input_split)与性能关键点;用例须覆盖所有执行模式与全部支持 dtype,含小/中/大规模 shape,参数值须在约束范围内。
- 用例来源:若存在 csrc/ops/<op>/test/<op>-test-cases.md,须先读取并提取 SUPPORTED_DTYPES、TEST_SHAPES、GENERAL_SHAPES 与算子标杆;用例总数 ≥ 8。若不存在,回退为按 design.md 自行设计,并在报告中注明。
- 标杆路径决策:有标杆等价 API(如 torch.nn.functional.*)时直接用;无等价接口时必须实现小算子拼接标杆路径,以张量操作组合为主,避免 Python 标量循环,否则 profiler 采集的是 CPU 逻辑。
- 采集固定使用 torch_npu.profiler,warmup=5、active=5 不得改写,每步调用 prof.step(),循环总步数 = repeat * (wait + warmup + active)。CSV 路径为 <导出目录>/*_ascend_pt/ASCEND_PROFILER_OUTPUT/op_statistic.csv,按算子行 Total Time(us) 求和后除以 active×repeat 或 active 得到 per-step 指标。
产物落点统一在 csrc/ops/<op>/test/:用例仅 JSONL(<op>_perf_cases.jsonl,一行一个 JSON 对象,禁止 .json 数组文件);报告为 <op>_torch_npu_profiler_report.md;trace 根目录为 test/profiler_trace/。
报告结构:统一对比表(Case | Shape | DType | 自定义算子(us) | 标杆(us) | 加速比)、全量汇总(用例数、平均加速比、更优条数)、按数据类型汇总、≥3 条简短分析;并在对话中直接展示主要表格与结论,不得只给报告路径。
限制与注意:profiler 导出目录以 _ascend_pt 结尾;repeat>1 时可能产生多份导出需说明 CSV 选取语义;CSV 表头可能有 BOM;需先加载自定义算子库再进行双路径对比。官方仓库内参考实现为 examples/layer_norm_profiler_reference/,可整体拷贝后替换算子名与调用。