| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: improve log usability Co-authored-by: m0_50621083<hongyuecheng@huawei.com> # message auto-generated for no-merge-commit merge: !4556 merge CANN-log-evaluation-develop into develop fix: improve log usability Created-by: m0_50621083 Commit-by: m0_50621083 Merged-by: cann-robot Description: # Pull Request ## 描述 本次修改针对 GE 代码中的日志易用性问题进行整改,主要包括: - 修复日志中的英文拼写及语法问题; - 优化日志提示语义和表达; - 补充部分日志中的单位及上下文信息; - 统一部分日志及注释的英文表达; - 优化个别不规范的日志输出方式。 本次修改主要涉及日志和提示文本,不改变核心功能逻辑。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无关联Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 使用 git diff 对本次修改内容进行检查,确认修改范围均属于日志易用性整改。 2. 使用 git diff --check 检查代码格式,确认不存在 trailing whitespace 等格式问题。 3. 检查日志字符串修改前后的参数及格式化占位符,确认日志参数与原有逻辑保持一致。 4. 确认本次修改主要涉及日志、提示信息及相关文本,不影响原有核心功能逻辑。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次为日志易用性专项整改,修改范围涉及多个模块,主要针对现有日志中的拼写、语法、语义表达、单位信息以及日志输出规范进行优化。 相关修改不涉及对外接口变更,不改变现有业务流程及核心功能逻辑。 See merge request: cann/ge!4556 | 1 个月前 | |
【质量加固】补充成员函数 const 修饰以符合编码规范(#517) Co-authored-by: qoosong<qoosong.seu@qq.com> # message auto-generated for no-merge-commit merge: !4608 merge fix/quality-hardening-warnings into develop 【质量加固】补充成员函数 const 修饰以符合编码规范(#517) Created-by: qoosong Commit-by: qoosong Merged-by: cann-robot Description: ## 描述 响应 #517 "质量加固" 社区活动,修复 ge 仓中不符合规则1(成员函数 const 修饰)的代码问题。 不会修改成员变量的成员函数应使用 const 修饰。本次共修复 15 处成员函数缺少 const 修饰的问题,涉及 10 个文件,与既有 PR(#4597/#4594/#4497/#4572/#4496)无重复或冲突。 涉及文件及修复点: | 文件 | 修复的成员函数 | 说明 | |------|--------------|------| | inc/graph_metadef/register/graph_optimizer/buffer_fusion/buffer_fusion_pass_base.h | BufferFusionPassBase::GetName() | 返回 name_,不修改状态 | | inc/graph_metadef/register/ffts_node_converter_registry.h | SkipCtxRecord::GetCtxNum() | 仅读取 ctx_id_v->size() | | inc/framework/runtime/subscriber/global_profiler.h | GlobalProfilingWrapper::GetRecordCount() | 调用 const 的 GetCount() | | inc/framework/runtime/subscriber/global_profiler.h | GlobalProfilingWrapper::IsEnabled() | 仅读取 atomic load() | | inc/framework/runtime/subscriber/global_dumper.h | GlobalDumper::GetHandleSize() | 仅读取 size(),mutex 改为 mutable | | inc/graph_metadef/common/blocking_queue.h | BlockingQueue::GetRemainItems() / IsFull() / Size() | 仅读取,mutex 改为 mutable | | runtime/v1/graph/load/model_manager/data_inputer.h | DataInputer::Size() | 转调 const 的 queue_.Size() | | runtime/v1/graph/load/model_manager/davinci_model.h | DavinciModel::GetDataInputerSize() | 转调 const 的 data_inputer_.Size() | | compiler/analyzer/analyzer.h | Analyzer::IsEnableNetAnalyzeDebug() | 仅读取环境变量 | | compiler/engines/nn_engine/fusion/.../fusion_rule_parser_utils.h | FusionRuleParserUtils::GetEngineName() | 仅返回 engine_name_,mutex 改为 mutable | | compiler/engines/nn_engine/fusion/.../fusion_rule_json_pattern.h | FusionRuleJsonNode::GetName() / FusionRuleJsonAnchor::GetSrcNode() / FusionRuleJsonAnchor::GetName() | 仅返回成员变量 | 对于需要加锁的只读访问(GlobalDumper::GetHandleSize、BlockingQueue::IsFull/Size/GetRemainItems、FusionRuleParserUtils::GetEngineName),将互斥量声明为 mutable,以支持 const 成员函数内部的加锁,与既有 PR #4597 中 NodeDoneManager::Cond/DeployPlan 的处理方式一致。 ## 变更类型 - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #517 ## 如何测试 1. 本地执行 pre-commit 检查(clang-format/codespell/end-of-file-fixer 等)全部 Passed 2. 变更均为添加 const 修饰及 mutable 互斥量,不改变运行时行为,编译期即可验证 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 See merge request: cann/ge!4608 | 1 个月前 | |
fix: 打通计算型shape链值符号传播 Co-authored-by: xiebangrui<xiebangrui@huawei.com> # message auto-generated for no-merge-commit merge: !5057 merge master into develop fix: 打通计算型shape链值符号传播 Created-by: xiebangrui2025 Commit-by: xiebangrui Merged-by: cann-robot Description: ## 描述 打通计算型 shape 链的值符号传播,统一值依赖判断;并在合入过程中收敛值符号化的取值分支与准入,补齐头文件解耦后的 IWYU 依赖。 一、值依赖判断与前向触发 - 声明制仅识别直接消费者的值依赖声明, data->add->reshape.shape 等隔跳 shape 计算链无法点亮源头符号化,Reshape 拿不到 SymbolicValue 回退传统推导;IsValueDependentDataNode 新增前向触发:消费者注册值符号计算 kernel 且 data 满足准入(整型/静态 shape/元素数<=200)时点亮源头。 - kMaxSymbolizeValueElemNum 提升为公共常量,size 上限从符号化内部前移到触发处,控制 D2H 与 host 输入契约开销。 - 值依赖判断统一收口为纯谓词 IsInputValueDependent:点亮/推导取值/切图可供给三方共用唯一判断;ir map 为空或 instance->ir 映射失败时注册表机制不参与判定且不打挂,避免误杀整个符号推导。 二、JIT 快速路径与输入准备 - TryExecuteWithoutProcess 增加 FastPathInputsOnHost 校验,值依赖/cond 输入要求位于 host,device 输入回退完整路径由 BuildCompileInputs 统一 D2H;删除 guard_cache 重复扫描与 RunWithCallback 冗余 host 打标。 - BuildCompileInputs 拆出 PrepareGraphInputs 唯一收口 D2H 与 host 标记;判空由返回 SUCCESS/true 改为 GE_ASSERT_NOTNULL/返回 false。 三、值符号化取值重构 - SymbolizeInputValue 拆分为 SymbolizeValueFromData/SymbolizeValueFromHint,入参收敛为 ValueSymbolizeContext,仅保留“真实数据优先、hint 兜底”的选源逻辑。 - 两分支统一以 shape 元素数为符号数上界,超过则跳过,避免 guard 越界读 data[elem_idx];dtype 准入收敛为 IsSupportedSymbolizeValueDtype。 - dtype 分发 switch 收敛为 DispatchBySymbolizeValueDtype,SUM 的判定与建符号收口为 SymbolizeInputValueSum。 四、头文件解耦与 IWYU - symbolic_tensor.h/symbolic_shape.h 去掉对内部 ge_util.h 的传递包含,改用 std::unique_ptr + new(std::nothrow);symbol_compute_context.h 以显式判空替代 GE_ASSERT_NOTNULL 并精简冗余日志。 - 为直接使用 ComGraphMakeUnique/ComGraphMakeShared 的调用方补齐显式 include;fusion_strategy_solver.h 补 <cmath>/common/checker.h、symbolic_kernel_factory.cc 补 common/checker.h。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 编译并运行符号化相关 UT/ST。 2. 新增 UT:计算型 shape 链(add)、op_infer_depends 声明路径;配套 UT/ST test_unpack 用例改为守护降级契约(ir map 空时 Infer 成功且输出不写入符号 attr)。 3. 对受影响 include 闭包内的 TU 做语法编译验证;ST slow_test_limit 调整为 4000。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 仅包含“打通计算型shape链值符号传播”单个 commit(含值符号化取值重构、JIT 输入准备判空加固与头文件解耦后的 IWYU 修复);符号化 kernel 健壮性修复与 DeleteNodesWithoutParentNode 级联删除修复已拆分为独立 PR。 See merge request: cann/ge!5057 | 10 天前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 20 天前 | |
fix: Python自定义算子不再把框架库误打包进OM Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !5358 merge fix/framework-hosted-custom-op-so-in-om into develop fix: Python自定义算子不再把框架库误打包进OM Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 PR #5034 放宽自定义算子 so 打包条件后,非 PortableOp 算子改由 GetAnyCustomOpInstance + 实例虚表 dladdr 定位实现 so。**Python 接口实现的自定义算子因此被误打包,导致 OM 加载失败**: - Python 算子的实例是框架库 libcustom_op_runtime.so 中的 PythonCustomOpAdapter(creator 由 python_custom_op_bridge_loader.cc 注册),dladdr 解析到的是**框架库自身**,被当作算子 so 收进 custom_op_so_set_ 并打进 SO_BINS; - 加载期 CustomOpRegistryBuilder::AddCreatorsFromSoHandles 需要从每个 kCustomOp so 中 dlsym GetRegisteredCustomOpCreatorAbiVersion / GetRegisteredCustomOpCreatorNum / GetRegisteredCustomOpCreators。只有静态链接 custom_op_registry_static 的算子 so 才导出这三个符号,产品版 libgraph.so 以 CUSTOM_OP_PULL_REGISTRY_HIDDEN_EXPORT 隐藏(graph_metadef/graph/CMakeLists.txt:238),框架库自身也不导出,于是报 [CUSTOM OP] pull creator ABI symbols are incomplete. 并使整个 OM 加载失败; - 交叉编译路径同样被波及:has_custom_op 置位后会去 ASCEND_CUSTOM_OPP_PATH 收集 so,把只含算子原型、不导出 pull creator ABI 的 proto so 误打包进 OM(同类加载失败)。 Python 算子本就没有"算子实现 so"这种交付物:实现体是 ASCEND_CUSTOM_OPP_PATH 下的 .py 加 GE 安装目录下的 bridge 产物。其离线场景之所以能跑通(examples/custom_op/python_compilable_add_custom/run_offline.sh),是因为 compile 回调在编译期已把 kernel 固化进 OM,执行期不需要自定义算子实例。 **本次修改**:新增标记接口 FrameworkHostedOp(inc/graph_metadef/graph/custom_op/framework_hosted_op.h)标识"实现由框架内适配器承载、没有可交付算子实现 so"的算子,PythonCustomOpAdapter 继承该接口;GeRootModel::CollectCustomOpSo() 识别后跳过 so 收集,且**不置 has_custom_op**,因此交叉编译下也不会因其触发 custom opp 路径收集。#5034 引入的"非 PortableOp 的 C++ 算子 so 同样打包"能力完整保留。 选用标记接口而非新增能力位/路径黑名单的原因:与 CustomOpCast 同一 dynamic_cast 机制(跨 so 已被现网验证);不污染半公开的 CustomOpCapability 掩码(避免 HasCapability 与 capabilities_ 不一致,以及 PythonCustomOpAdapter::IsValid() 的 impl_capabilities 判定被误伤);不依赖构建形态(开源构建的 libgraph.so 反而导出 pull 符号,基于符号可见性或路径的启发式在 dev 与产品上行为会不一致)。 同步更新 docs/zh|en/design/features/so_in_om.md 的 kCustomOp 触发条件与 3.2.4 节。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无(修复 PR #5034 引入的回归) ## 如何测试 1. 新增 UT(tests/ge/ut/ge/graph/load/model_helper_unittest.cc): - CheckAndSetNeedSoInOMFrameworkHostedOpShouldSkipSoCollect:同架构下框架承载算子不收集 so、不置 kCustomOp 标志位; - CheckAndSetNeedSoInOMCrossModeFrameworkHostedOpShouldSkipCustomOppCollect:交叉编译下不因该算子去 ASCEND_CUSTOM_OPP_PATH 收集 so(ASCEND_CUSTOM_OPP_PATH 为空时不再报错)。 2. 编译并执行 ut_libge_distinct_load_utest(分支基于 upstream/develop):CheckAndSetNeedSoInOM* / SaveCustomOpsPartition* / CollectCustomOpSo* / CheckSoArch* / LoadCustomOp* 共 **33 项全部通过**;custom op 相关全量 64 项中 62 项通过,剩余为 Om2PackageHelperUt 的 suite 级失败——本地 toolkit overlay 缺 exe_graph/runtime/resource_usage_context.h 导致 OM2 codegen 编译生成代码失败,属环境问题,与本改动无关。 3. pre-commit run --files(clang-format / codespell / OAT / end-of-file-fixer 等)全部 Passed。 4. 真机闭环建议:examples/custom_op/python_compilable_add_custom/run_offline.sh(AIR → ATC → OM → 脱离 Python 插件执行),预期恢复 PY_COMPILE_OFFLINE_OM=PASS;本 PR 未在真机执行。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 **已知限制(本 PR 不改变,仅记录)**:Python 的 eager_execute / host_cpu_execute / declare_launch_args 类算子在离线 OM 场景无法自包含——执行期需要 PythonCustomOpAdapter 实例回调 Python,而模型级 CustomOpRegistry 只从 SO_BINS/CUSTOM_OPS 构建且不回退全局 CustomOpFactory,故加载可通过但执行期会报 Failed to find custom op func for op type X。该行为在 #5034 之前即如此,是否收敛为编译期显式报错需产品侧确认。另:动态 shape + Python compile 类算子 + 离线的组合(RT2 在加载期 lowering 可能需要 FindCustomOp/InferShape)未做验证,如有真实使用场景建议单独确认。 See merge request: cann/ge!5358 | 5 天前 | |
【feat】: 支持子字节dtype(DT_INT4)的ND/FRACTAL_NZ格式转换与常量折叠防护 Co-authored-by: kantao1<kantao1@huawei.com> # message auto-generated for no-merge-commit merge: !5199 merge support_onnx_int4 into develop 【feat】: 支持子字节dtype(DT_INT4)的ND/FRACTAL_NZ格式转换与常量折叠防护 Created-by: kantao1 Commit-by: kantao1 Merged-by: cann-robot Description: # Pull Request ## 描述 GE 侧适配子字节 dtype(如 DT_INT4 weight),打通 ND ↔ FRACTAL_NZ 显式 C0 变体的主机侧格式转换,并补齐各处将位宽编码值( GetSizeByDataType = kDataTypeSizeBitOffset + bits)误当字节数使用的防护: 1. **子字节位级格式转换**(format_transfer_fractal_nz.cc):新增 packed 位级搬移实现(GetBitsValue/SetBitsValue、CopyPackedSegment 对齐快路径+逐元素回退、ND→NZ/NZ→ND 两个方向的 SubByte 转换);新增 GetEffectiveC0 统一 C0 解析(组合位域→primary 枚举变体);注册 ND ↔ FORMAT_FRACTAL_NZ_C0_16/C0_32 转换路由 2. **入口防护**:位宽限定 1/2/4 bit(拒绝 FLOAT6 等无法按整字节打包的类型);CheckShapeForSubByteTrans 校验 NZ 形状不变量(末 4 维、w0>0、块内轴字节对齐、前缀乘积与块容量),防除零与越界访问 3. **TransDataFormat 门禁**(formats.cc):子字节仅放行 ND ↔ 显式 C0 的 NZ 族互转,裸 FRACTAL_NZ 及其他组合直接拒绝,错误信息携带格式与放行条件 4. **常量折叠防护**(constant_folding_pass.cc):IsSubByteFoldingBlocked 覆盖 top/bottom 自定义算子与 legacy HostCpuOp 全路径,白名单(QuantBiasOptimization,已实现 INT4 packed 解包)放行输入检查,拦截后回落 GE 内置 kernel 5. **位宽编码修复**(fe_utils/fusion_turbo/eager_op_execution_context/kernel_utils):GetDataTypeBits 判断条件修正;内存大小改用 GetSizeInBytes CeilDiv 计算,防高估导致越界写 6. **其他路径防护与口径统一**:transpose 转换拒绝子字节;Pack kernel 跳过子字节折叠;GetNdToNzAlignedShape 改用 TransferShapeUtils::GetC0Value,与数据搬移侧 C0 口径一致 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 前置条件:CANN 环境(cann-9.3.0),ge 仓 build_ut 构建目录 2. make ge_common_base graph -j16(覆盖 formats.cc / format_transfer_fractal_nz.cc / transfer_shape_utils.cc)编译链接通过 3. constant_folding_pass.cc 以 ge_compiler 同参数(-std=c++17)语法检查通过 4. INT4 权重场景验证:ND(DT_INT4) → FRACTAL_NZ_C0_16/C0_32 转换及反向,W 非 C0 整数倍的尾部场景 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 See merge request: cann/ge!5199 | 5 天前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 3 个月前 |