已合并
refactor: clarify SIMT launch and internal option semantics #1774
refactor: clarify SIMT launch and internal option semantics #1774
已合并
yrz1027创建于 18 天前
yrz1027
yrz1027成员
18 天前

Pull Request

描述

  • 澄清 SIMT DCache 约束语义:计算每个 SIMT 子任务允许的最大 DCache,并取最小值作为 SuperKernel 的统一上限;使用 skMaxDcacheSizeuseSimtEntry 表达最终 launch 信息。
  • 将原有 SIMT 检查和动态 UBUF 配置开关合并为 SIMT_OP_SUPPORT,统一控制 SIMT 子任务分析、DCache 约束计算和 SIMT entry 配置;MIX_KERNEL_SPLIT 继续独立控制 MIX kernel 同步关系构造。
  • 内部架构能力统一使用 SkInnerOptionTypeIsInnerOptionEnabled() 管理,并通过 ApplyArchSpecificOptions()SkKernelArch 启用;DAV3510 启用 MIX kernel split 和 SIMT 支持,DAV2201 保持默认关闭。
  • 不再在 options JSON 中输出内部 option/capability,避免将不可由用户配置的内部状态暴露为对外选项;用户可配置 option 的输出保持不变。
  • SuperKernelKernelNode::Update()SuperKernelMemoryNode::Update() 使用局部 updateParams 构造并提交 Runtime 参数,更新成功后同步到成员 taskParams,保证后续 dump 和查询读取到最新任务状态。
  • SIMT launch cfg 改为调用期间的局部构造,并显式传入 SuperKernel entry function handle;Runtime 调用后恢复成员缓存使用的原 cfg,避免将局部 cfg 指针保存到 taskParams
  • 调整 SimtDcacheSizeResultisValidskMaxDcacheSize 等命名,并补充最终 useSimtEntryskMaxDcacheSize 日志,使变量和日志与实际计算语义一致。

变更类型

关联的Issue

无。

如何测试

  1. 执行 cmake --build build --target super_kernel_aot_utest -j 8,构建通过。
  2. 执行 build/super_kernel/tests/aot/ut/super_kernel_aot_utest --gtest_filter='SkNodeTest.*',93/93 用例通过。
  3. 提交阶段 pre-commit 检查通过,包括 clang-format、基础文件检查、codespell 和 OAT 增量扫描。

核对清单

其他信息

  • 本次不调整原始子算子 launch cfg 是否继承到 SuperKernel cfg 的策略。该问题涉及 launch 属性语义和持久化生命周期,已拆分为后续独立整改,避免扩大本次重构风险。
  • 本次未新增用户可配置 option,不影响 Autofuse、Python 接口和构建交付路径。
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 yrz1027 的贡献)
yrz1027yrz1027成员
18 天前 添加了label:enhancement
yrz1027yrz1027成员
18 天前 创建了 pull request,commit d1879b0f
atomgit-bot
atomgit-bot
18 天前 评论:

变更摘要

该 PR(分支名 fix/rename-simt-dcache-semantics)是一次语义澄清与重命名重构:将 Super Kernel 内部"选项(inner option)"体系重塑为"内部能力(capability)"体系,并将 SIMT 场景下"最小可用 UBUF 大小"的计算语义改为"所有 SIMT 子任务共同允许的最大 DCache 大小(skMaxDcacheSize)"。核心变化包括 SkInnerOptionType 更名为 SkInnerCapabilityGetOption(SkInnerOptionType) 接口被 IsInnerCapabilityEnabled(SkInnerCapability) 取代、SkLaunchInfo 字段 minAvailableUbufSize/hasMinAvailableUbufSize 更名为 skMaxDcacheSize/useSimtEntry,同时 ApplySoCSpecificOptions 改为直接依据 SkKernelArch::DAV_3510 判定能力开关,并同步更新了相关单测。

主要改动

  • 内部选项枚举与接口重构SkInnerOptionTypeENABLE_MIX_KERNEL_SPLIT/ENABLE_SIMT_OP_CHECK/ENABLE_SET_DYN_UBUF_SIZE)更名为 SkInnerCapabilityMIX_KERNEL_SPLIT/SIMT_OP_CHECK/DYN_UBUF_SIZE),删除 GetOption(SkInnerOptionType) 的 const/非 const 重载,新增统一的 IsInnerCapabilityEnabled(SkInnerCapability) 布尔判定接口,innerOptionMap 更名为 innerCapabilityMap
  • SIMT DCache 语义澄清与重命名:将 GetMinSimtAvailableUbufSize/SimtAvailableUbufInfo 重构为 CalculateSimtDcacheSize/SimtDcacheSizeResult(字段改为 hasSimtTask/skMaxDcacheSize),SetupLaunchKernelCfgWithDynUbuf(minAvailableUbufSize) 更名为 SetupLaunchKernelCfgWithMaxDcacheSize(skMaxDcacheSize)SkLaunchInfominAvailableUbufSize/hasMinAvailableUbufSize 更名为 skMaxDcacheSize/useSimtEntrysk_node.cppUpdatesk_optimizer.cpp 日志随之同步更新。
  • SoC 能力开关逻辑简化ApplySoCSpecificCapabilities 直接依据 GetCurrentSkKernelArch() == SkKernelArch::DAV_3510 批量启用三项能力,移除了原先基于 GetSocName() 的判定;DEFAULT_INNER_CAPABILITIES 表取代 DEFAULT_INNER_OPTION_FACTORIESFindDefaultInnerOptionFactory
  • ToJson 输出与单测同步调整inner_options 序列化改为遍历 DEFAULT_INNER_CAPABILITIES 并通过 IsInnerCapabilityEnabled 输出布尔值;test_sk_options_manager.cpp 由基于 socName 的死亡测试改为基于 GetCurrentSkKernelArch mock 的能力启停测试,test_sk_node.cpptest_sk_task_builder.cpp 相应改用 SetInnerCapability/SetSimtOpCheckCapability 辅助并断言新字段。
likedislike
atomgit-bot
atomgit-bot
18 天前 评论:

代码审查

✅ 未发现问题

likedislike
CANN-robotCANN-robot成员
18 天前 添加了label:stat/needs-squash
此处折叠了147条消息 查看更多
XuebinYang成员
14 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
14 天前 添加了label:lgtmapproved
CANN-robot
CANN-robot成员
14 天前 评论:

The MR can not be merged, because of CodeReview discussion not resolved

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
yrz1027yrz1027成员
14 天前 解决了最后一个问题
CANN-robotCANN-robot成员
14 天前 合入了pull request,合并节点 SHA:28039b691420e67207f0f0500e97ab5925fd825a