已合并
【feat】: add core limit to struct #4662
tang-haojie创建于 5 天前
【feat】: add core limit to struct #4662
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 tang-haojie 的贡献)5 天前 添加了label:enhancement
5 天前 创建了 pull request,commit 0497327c
atomgit-bot
5 天前 评论:
5 天前 评论:
变更摘要
本 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 节点。


atomgit-bot
5 天前 评论:
5 天前 评论:
5 天前 添加了label:stat/needs-squash
此处折叠了74条消息 查看更多
4 天前 添加了label:lgtm
yangyongqiang
4 天前 评论:
4 天前 评论:
/approve


4 天前 添加了label:approved
4 天前 合入了pull request
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 的说明。