| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fallback 迁移 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8131 merge ziliao into master fallback 迁移 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 变更摘要 此 PR 为三个量化相关算子新增了 fallback 执行实现,均以 IMPL_OP 宏注册到 fallback 命名空间中。当硬件原生不支持这些算子时,框架将通过 fallback 路径调用对应的 aclnn API 在 Host 侧完成计算,从而提供兜底能力。 ### 主要改动 * 新增 QuantBatchMatmulInplaceAdd fallback 实现: 在 quant_batch_matmul_inplace_add_fallback.cpp 中,通过 QuantBatchMatmulInplaceAddExecuteFunc 获取输入张量 x1、x2、x2Scale、可选 x1Scale 及 yRef,解析 transposeX1、transposeX2、groupSize 属性后调用 aclnnQuantBatchMatmulInplaceAdd API 执行计算。 * 新增 QuantBatchMatmulV3 fallback 实现: 在 quant_batch_matmul_v3_fallback.cpp 中,QuantBatchMatmulV3ExecuteFunc 根据输入数据类型(是否属于 v5InputDtypes 或满足 isA8W8GB 条件)分发到 aclnnQuantMatmulV5 或 aclnnQuantMatmulV4 API,支持 float8/fp4 等新数据类型及 INT8 分组量化场景。 * 新增 TransQuantParamV2 fallback 实现: 在 trans_quant_param_v2_fallback.cpp 中,TransQuantParamV2ExecuteFunc 获取 scale、可选 offset 及输出张量,解析 roundMode 属性后调用 aclnnTransQuantParamV3 API 完成量化参数的转换。 ## 关联的Issue [#4535](https://gitcode.com/cann/ops-nn/issues/4535) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8131 | 2 个月前 | |
[CANNBot]新增NPUAllocFloatStatus算子 Co-authored-by: qq_52056150<24171214023@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !8782 merge add_npu_alloc_float_status into master [CANNBot]新增NPUAllocFloatStatus算子 Created-by: wkkk0528 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 描述 NPUAllocFloatStatus算子支持Ascend950 ### 算子功能 NPUAllocFloatStatus 用于分配并初始化浮点异常状态张量。算子接收一个可选的输入张量(仅用于形状推导),输出一个固定长度为8的float32张量,所有元素初始化为零值。该算子是 NPUFloatStatus 类算子的基础组件,通常与 NPUClearFloatStatus 配合使用,用于管理 NPU 浮点运算的异常状态。 ### 实现方式 - **架构**: Ascend950 (arch35) SIMT kernel - **Kernel 实现**: 单核 Scalar 模式,使用 SetValue 逐元素将零值写入 GM(绕过 UB,规避 DYN/BIN 首字节污染),完成后执行 DataCacheCleanAndInvalid 保证 GM 数据一致性 - **Tiling**: arch35 专用 Tiling,固定输出 8 个 float32 元素,单核无切分 - **Shape/Dtype 推导**: 输出 shape 固定为 [8],dtype 为 float32 - **REG_OP**: NPUAllocFloatStatus 原型注册,支持图模式调用 ## 关联的issue https://gitcode.com/cann/ops-math/issues/2677 ## 测试 ### TTK 测试结果 - 测试轮次: 第1轮 - 测试环境: Ascend950PR_957c (8 devices), CANN 9.2.0, TTK 3.0.0 - 第1轮结果: 编译错误(TQuePosition 标识符问题),已修复为 SetValue 直写 GM 方案 - 当前代码版本已通过本地 CI 编译验证 ### 本地 CI 预检结果 | 阶段 | 结果 | 说明 | |------|------|------| | Code Review | PASS | CR01-CR07 全部通过,2项WARN已修复(魔鬼数字提取为常量) | | Compile (single) | PASS | 单算子编译成功 | | Compile (A5) | PASS | A5 包编译成功 | | Package Verify | PASS | 2个.run包验证通过 | | CodeCheck pre-commit | PASS | clang-format/ruff/codespell/OAT 全部通过 | | UT ophost | PASS | op_host 单元测试通过 | | Example/Smoke | SKIPPED | 依赖 UT 全通过 | ### 交付件清单 - op_host: def.cpp, infershape.cpp, tiling_arch35.cpp, simplified_key.ini - op_kernel: arch35 kernel (npu_alloc_float_status.h, tiling_data.h, tiling_key.h, apt.cpp) - op_graph: proto.h, graph_infer.cpp - tests: golden.py, UT (op_api/op_host) - examples: aclnn + geir 示例 - docs: README.md ## 文档更新 - 新增 docs/zh/op_list.md 中 NPUAllocFloatStatus 条目 - 新增算子 README.md 和 aclnn API 文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent 生成声明 代码来源: - [ ] 纯人工手写 - [ ] AI 辅助编写 - [x] AI 完全生成 人工审查:已完成 测试验证:已通过 合规检查:已完成 See merge request: cann/ops-nn!8782 | 1 个月前 | |
fix: 整改责任田算子日志质量(修复日志规范问题) 依据 CANN 日志规范检查规则,对责任田算子的日志进行整改: - 修复 GE IR 示例(test_geir_*.cpp)中失败信息误标 INFO 的级别错配问题,统一改为 ERROR - 修复拼写错误:Precison->Precision 等 - 修复语法错误:is fail 中式结构、fail to get 缺时态、is failed 结构等 - 修复变量越限日志缺正确范围的问题(ubFactor 等,补充 must be greater than 0) - 内部缩写 [XIR] 替换为算子专属标记,printf/std::cout 统一走 LOG_PRINT 宏 - 删除 UT 测试中冗余的 std::cout 状态输出 涉及算子:glu/reverse_sequence/sleep/quant_max/concat_offset/foreach_asin | 1 个月前 | |
init | 1 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 年前 |