已合并
perf(inductor): finalize planned NPU fast launch submission #45508
Erwinnn创建于 6 天前
perf(inductor): finalize planned NPU fast launch submission #45508
已合并
Erwinnn创建于 6 天前
Erwinnn
6 天前

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)

【修改方案】

  1. Fast Launch 在进入 SubmitLaunch() 时已经准备好:
  • kernel handle;
  • packed arguments;
  • Block Num;
  • stream;
  • SIMT Dynamic UBUF 配置。
    因此将通用opcommand入口改为OpCommand::RunOpApiV2(plan.kernelName, launchCall);复用仓库已有的 callable 入队接口,避免为每次 planned hit 构造通用 OpCommand、导出 ExecuteParas 和创建 COMPILE_AND_EXECUTE payload。
  1. plan promotion 成功后,将 generated wrapper 的 call slot 从:
    BoundFastLaunch
    替换为:
    FinalizedFastLaunch
    稳态调用不再重复经过:
BoundFastLaunch.__call__
_call_direct
_canonical_args
_build_runtime_launch_args

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”

【接口变更】

请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”

【功能验证】

free time实测收益如下:
base:13.974 ms
fastlaunch:11.574 ms (收益:2.4 ms)
fastlaunch优化后:19.814 ms (收益:3.16ms 增量0.76 ms)

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

【issues】

https://gitcode.com/Ascend/pytorch/issues/4345

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Erwinnn 的贡献)
EErwinnn
6 天前 创建了 pull request,commit 7620b09a
EErwinnn
6 天前 关联了issue:[Bug]: add lightweight NPU fast launch queue task
atomgit-bot
atomgit-bot
6 天前 评论:

变更摘要

本 PR 主要聚焦 NPU Fast Launch 计划化提交的最终定型优化:在 plan promotion 成功后,将生成 wrapper 的调用槽位从 BoundFastLaunch 替换为新的 FinalizedFastLaunch,使稳态调用不再重复经过 BoundFastLaunch.__call___canonical_args 等参数规范化路径;同时 C++ 侧在 MakeFastLaunchPlan 阶段将固定参数(fixed args)与静态 grid 预写入 packedArgsTemplate,并让 SubmitLaunch 复用 at_npu::native::OpCommand::RunOpApiV2 的 callable 入队接口,避免为每次 planned hit 构造通用 OpCommand、导出 ExecuteParas 和创建 COMPILE_AND_EXECUTE payload。PR 描述中的实测收益为 fast launch 相比 base 约 2.4 ms,优化后进一步增量约 0.76 ms。

主要改动

  • SubmitLaunch 复用 RunOpApiV2 入队接口: csrc/bindings.cpp 中将提交入口从构造通用零 IO 的 OpCommand 改为 at_npu::native::OpCommand::RunOpApiV2(plan.kernelName, launchCall),kernel handle、packed args、Block Num、stream 等均已在进入 SubmitLaunch() 前准备完毕,避免重复构造 payload。
  • 新增 FinalizedFastLaunch 稳态调用入口: bind.py 中新增该类并安装到生成的 call slot,稳态调用直接执行 self.direct(args, stream=stream);在 benchmark_run、profiler 开启、best launcher 变更或存在 launch hooks 时回退到 BoundFastLaunch,出错时按 backend_submitted/stable 走负向安装或 _fallback
  • C++ plan 预打包固定参数与静态 grid: FastLaunchPlan 新增 runtimeArgCountpackedArgsTemplatestaticBlockNumhasStaticGrid 字段;MakeFastLaunchPlan 增加 runtime_arg_count/fixed_args/static_grid 入参,将固定参数与 FFTS 地址预写入模板(固定 tensor 参数被拒绝),并新增 _npu_inductor_fast_launch_static_with_plan 绑定与 PackStaticLaunch,静态 grid 场景跳过 grid 解析直接使用预计算的 staticBlockNum
  • PlannedFastLaunch 拆分运行期与固定参数: backend.pyPlannedFastLaunch 新增 runtime_arg_countfixed_argsstatic_griduntimed_static_launch 字段,__call__runtime_arg_count 校验参数数量,动态 grid 时把 fixed_args 一并传给 get_grid_constant_grid 通过 ast.literal_eval 解析 launcher 的 _npu_fast_launch_grid_exprs 识别静态 grid。
  • 导出 FinalizedFastLaunch: __init__.py__getattr____all__ 中补充导出 FinalizedFastLaunch,并同步更新 bind.py__all__
likedislike
atomgit-bot
atomgit-bot
6 天前 评论:

代码审查

✅ 未发现问题

likedislike
ascend-robotascend-robot成员
6 天前 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
6 天前 评论:

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.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
torch_npu/_inductor TonyYA, crazyDannyBoy (2/2) crazyDannyBoy (1/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
ascend-robot
ascend-robot成员
6 天前 评论:

当前仓库存在以下 保护分支

Protected Branch Version Release
master
v2.9.0
v2.10.0
v2.11.0
v2.12.0
v2.7.1
v2.7.1-26.1.0
v2.9.0-26.1.0
v2.12.0-26.1.0
v2.11.0-26.1.0
v2.10.0-26.1.0
ci-test

评论 /sync <branch1> <branch2> ... 可将当前 PR 修改同步到其它分支(创建同步 PR):
a) 如果当前 PR 是 Open 状态,同步操作将延迟到 PR 被合并时执行
b) 如果当前 PR 已经 Merged,将立即执行同步操作

注意:

  1. /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
  2. 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭
likedislike
AtlasAccountAtlasAccount成员
6 天前 添加了label:ci-pipeline-running
ascend-robot
ascend-robot成员
6 天前 评论:

ascend docs pipeline is running...

likedislike
ascend-robotascend-robot成员
6 天前 添加了label:docs-ci-pipeline-running
ascend-robot
ascend-robot成员
6 天前 评论:

✅ 跳过 docs ci 检查,没有需要检查的文档文件

likedislike
ascend-robotascend-robot成员
6 天前 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
6 天前 添加了label:docs-ci-pipeline-success
AtlasAccountAtlasAccount成员
6 天前 删除了label:ci-pipeline-running
AtlasAccountAtlasAccount成员
6 天前 添加了label:ci-pipeline-passed
AtlasAccount
AtlasAccount成员
6 天前 评论:
流水线 PR-pipeline_pytorch#64681 [ commitID:58e9732f ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
阶段 任务名 状态 详情
编译构建 Build_X86 >>>
Build_ARM >>>
Build_X86_torchair 🛑 >>>
Build_ARM_torchair 🛑 >>>
patch_test 🛑 >>>
Build_X86_213 >>>
Build_ARM_213 >>>
恶意代码检查 Antipoison >>>
编码安全与规范检查 codecheck_pre-commit >>>
check_error >>>
lintrunner >>>
开源片段检查 SCA >>>
开发者测试 UT_ARM_A3_Part_01 🛑 >>>
UT_ARM_A3_Part_02 🛑 >>>
UT_ARM_A2_Part_01 >>>
UT_ARM_A2_Part_02 >>>
UT_ARM_A2_Part_03 >>>
UT_inductor_Part_01 🛑 >>>
UT_inductor_Part_02 🛑 >>>
UT_inductor_Part_03 🛑 >>>
UT_inductor_Part_04 🛑 >>>
UT_DIST_ARM_Part_01 🛑 >>>
UT_DIST_ARM_Part_02 🛑 >>>
UT_DIST_ARM_Part_03 🛑 >>>
UT_DIST_ARM_Part_04 🛑 >>>
UT_ARM_A2_Select_Part_01 >>>
UT_ARM_A2_Select_Part_02 >>>
UT_ARM_A2_Part_213 >>>
UT_inductor_Part_213 🛑 >>>
UT_DIST_ARM_Part_213 🛑 >>>
UT_ARM_A2_Select_Part_213 >>>
流水线 PR-pipeline_pytorch >>>
此流水线已支持下列评论快捷指令,仅PR创建者和白名单成员[wujinyuan1, huangjingwei, liangsongwei, yashi999, culechan, Dring, wuyouqi1, L1919_snow, qq_52711437, WhiteNight12, nomiz, xiu_21, ffmh, wanglijun55, hss-shuai, husichao, smallsilly, lanshaozuishuai, jimmyisme1, lzy0920232, alpha-junh, Sunshine_Youngster, wei_zhuoyi, zhangyihuiben, zyw-hw, zzzkeke, rmch, yangch0324, LucciC, AACAES, renyujin, wjlflyer, senzhen-town, pengjingyou, qsc97, limuan, yule100, xiaoqi-zhou, kuhn7, chenxingying, hanye02, zichun_ye, anyrenwei, kkjocker, wangzili121, Lu_G, yvjc, puddingfjz, HandsoemLemon, bigprestigee1, huawuyi, zhenyu10, dairenjie, du-jin-hang, zou-jieyu, adelaideliu, TrHan, wanlinan, Windwindzzz, pengqihw, kisnwang, yuheng_wang, honghao_wang, jizewei, zhangguoguang, sunyu-xuan, chenrayray, hbhu_bin, liujunzhu, c_34, LiNuoh, maoyuanpeng1, zzhongmin, zhaoyu65, bellatan, jiabaolin, zhuofanshen, wencaiwen, lu_zhuge, caoshuyang, molly12, lyx324521, LQ1206, gitcode-chenjiao, cai-weiwei1989, CHDong, ogqin, yuanlipingGit, xuqinglin1, lqz2, zouwei1, chaoluoa, paradox325, jackzhang1116, yaoyao, akh, yujiacheng, dengjie0116, Hubert11111, Shine_Ws, wslhj555, longqiand, OYtao666, JiaqingQiang, luyyyy, Kingbelial, zhanghaiyu0101, wenxp1018, yanliu-luoluo, ksun_sekiro, liyong328, wgzheng, tangky, vivi_is_coding, aoiaoisola, weixin_44494597, wangmengmengwang65667, hid57809721, qq_35468730, comeonup, C547032, gcw_m5OQChA4, yao_yao_ling_xian, cnnbwcy, szqfes_12, cora_19, cann_lilin, can, shawnylee233, fanglanyue0916, hhz0, LiNuohang, taohuoquan, Jesse, WSs_321, SCh_zx]评论有效
  • compile、compile_inductor、compile_torchair : 运行流水线
  • retry : 重试流水线所有失败子任务
  • retry <任务名> : 仅重试指定失败子任务
  • stop : 停止流水线
likedislike
pangjiayi
pangjiayi
6 天前 评论:

/lgtm

likedislike
dezheng889成员
6 天前 评论:

/lgtm
/approve

likedislike
ascend-robotascend-robot成员
6 天前 添加了label:approvedlgtm
ascend-robotascend-robot成员
6 天前 合入了pull request
AtlasAccount
AtlasAccount成员
6 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14722 [ commitID:58e9732f ] 已完成
likedislike