已合并
【feat】: add core limit to struct #4662
tang-haojie创建于 5 天前
【feat】: add core limit to struct #4662
已合并
tang-haojie创建于 5 天前
tang-haojie成员
5 天前

Pull Request

描述

本 PR 主要重构了 SuperKernelPass 的死锁校验(aclskScopeVerify)相关逻辑,旨在修复动态库加载与测试场景下的资源管理问题:将 libascendsk.so 的 mmDlopen/mmDlsym 结果从类成员变量改为由全局静态 AclskHandleHolder 持有(带析构时 mmDlclose 及 ResetForTest()),并提供 ResetAclskVerifyForTest() 供单测/系统测试重置;同时移除 ExtendInfoTmp 间接结构体,将 flag、coreLimit 等控核信息直接写入 aclskScopeVerifyNodeInfo,并新增 ExcludeNode、IsTopoIdInScope 辅助函数以简化拆分结果处理与日志输出。

主要改动

动态库句柄持有方式重构:新增全局静态 GetAclskHandleHolder() 与 AclskHandleHolder 结构体(含 handle、func 及析构 mmDlclose),InitAclskVerify 改为惰性加载并在 CallAclskVerify/DeadlockCheckAndSplit 中通过 holder 调用校验函数,删除原成员变量 aclsk_verify_func_,避免重复加载与句柄泄漏。
移除 ExtendInfoTmp 间接层:删除 ExtendInfoTmp 结构体及其在各函数签名(FillVerifyNodeInfo、BuildVerifyGraph、CallAclskVerify)中的 extend_infos 参数,将 flag、coreLimit[2] 直接写入 aclskScopeVerifyNodeInfo 的对应字段。
新增测试重置入口:在头文件声明 ResetAclskVerifyForTest()(注释标明仅用于 DT/单测),并在 tests/ge/st/testcase/test_graph_compiler.cc 的 SetUp/TearDown 及 super_kernel_pass_unittest.cc 中调用,保证用例间 dlopen 状态干净。
简化作用域判定与拆分处理:GetScopeIdByCtrlEdge 去掉首/末节点(IsFirstNodeInScope/IsLastNodeInScope)的过滤逻辑直接返回 scopeId;ProcessSplitResults 抽取出 ExcludeNode(区分 Send/Recv 节点与普通节点)和 IsTopoIdInScope(校验 topo_id 是否落在作用域范围内)两个辅助函数,并精简了日志文案。
单测用例同步调整:deadlock_check_extend_info_core_limit 用例更名为 deadlock_check_flag_and_core_limit,因结构体字段检查需待 libmetadef.so 更新结构体后启用,改为仅验证 op1 被识别为 COMPUTE 节点。

变更类型

请选择本次引入的变更类型:

关联的Issue

如何测试

描述测试此变更的步骤和前提条件:
1.
2.

核对清单

其他信息

在此添加任何其他关于本次 PR 的说明。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 tang-haojie 的贡献)
Ttang-haojie成员
5 天前 添加了label:enhancement
Ttang-haojie成员
5 天前 创建了 pull request,commit 0497327c
atomgit-bot
atomgit-bot
5 天前 评论:

变更摘要

本 PR 主要重构了 SuperKernelPass 的死锁校验(aclskScopeVerify)相关逻辑,旨在修复动态库加载与测试场景下的资源管理问题:将 libascendsk.sommDlopen/mmDlsym 结果从类成员变量改为由全局静态 AclskHandleHolder 持有(带析构时 mmDlcloseResetForTest()),并提供 ResetAclskVerifyForTest() 供单测/系统测试重置;同时移除 ExtendInfoTmp 间接结构体,将 flagcoreLimit 等控核信息直接写入 aclskScopeVerifyNodeInfo,并新增 ExcludeNodeIsTopoIdInScope 辅助函数以简化拆分结果处理与日志输出。

主要改动

  • 动态库句柄持有方式重构:新增全局静态 GetAclskHandleHolder()AclskHandleHolder 结构体(含 handlefunc 及析构 mmDlclose),InitAclskVerify 改为惰性加载并在 CallAclskVerify/DeadlockCheckAndSplit 中通过 holder 调用校验函数,删除原成员变量 aclsk_verify_func_,避免重复加载与句柄泄漏。
  • 移除 ExtendInfoTmp 间接层:删除 ExtendInfoTmp 结构体及其在各函数签名(FillVerifyNodeInfoBuildVerifyGraphCallAclskVerify)中的 extend_infos 参数,将 flagcoreLimit[2] 直接写入 aclskScopeVerifyNodeInfo 的对应字段。
  • 新增测试重置入口:在头文件声明 ResetAclskVerifyForTest()(注释标明仅用于 DT/单测),并在 tests/ge/st/testcase/test_graph_compiler.ccSetUp/TearDownsuper_kernel_pass_unittest.cc 中调用,保证用例间 dlopen 状态干净。
  • 简化作用域判定与拆分处理GetScopeIdByCtrlEdge 去掉首/末节点(IsFirstNodeInScope/IsLastNodeInScope)的过滤逻辑直接返回 scopeIdProcessSplitResults 抽取出 ExcludeNode(区分 Send/Recv 节点与普通节点)和 IsTopoIdInScope(校验 topo_id 是否落在作用域范围内)两个辅助函数,并精简了日志文案。
  • 单测用例同步调整deadlock_check_extend_info_core_limit 用例更名为 deadlock_check_flag_and_core_limit,因结构体字段检查需待 libmetadef.so 更新结构体后启用,改为仅验证 op1 被识别为 COMPUTE 节点。
likedislike
atomgit-bot
atomgit-bot
5 天前 评论:

代码审查

✅ 未发现问题

likedislike
CANN-robotCANN-robot成员
5 天前 添加了label:stat/needs-squash
此处折叠了74条消息 查看更多
yuht9成员
4 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
4 天前 添加了label:lgtm
yangyongqiang
yangyongqiang成员
4 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
4 天前 添加了label:approved
CANN-robotCANN-robot成员
4 天前 合入了pull request