| Files | Last commit | Last update |
|---|---|---|
[bugfix]: 补齐合并算子原型头的增量构建依赖 Co-authored-by: zmuxuny<xiahoumuxuan@gmail.com> # message auto-generated for no-merge-commit merge: !12044 merge fix/merged-proto-dependencies into master [bugfix]: 补齐合并算子原型头的增量构建依赖 Created-by: z__y Commit-by: zmuxuny Merged-by: cann-robot Description: ## 描述 merge_graph_headers() 生成 ops_proto_nn.h 的 add_custom_command 没有声明输入原型头或 merge_proto.py 依赖。第一次构建后更新正常算子 proto、补充 proto 或合并脚本,再次构建目标仍成功退出且保留旧头文件;依赖该头复制出的 ops_proto_nn.cpp 也未刷新。开发者增量修改原型时会使用旧的合并定义。 为已有生成命令声明全部 proto_headers 及 merge_proto.py 为 DEPENDS,增加真实 Unix Makefiles 增量构建回归。 ## 关联的Issue Fixes #6719 https://gitcode.com/cann/ops-nn/issues/6719 ## 测试 - 源码基线:master / e03cebe43e8e134b5bde943edb77f70676109d40。 - 位置:[cmake/gen_ops_info.cmake](https://gitcode.com/cann/ops-nn/blob/e03cebe43e8e134b5bde943edb77f70676109d40/cmake/gen_ops_info.cmake)。 - 回归命令(测试随修复提交):python -m pytest tests/host/test_merge_graph_headers_incremental.py -q。 - 相同回归在原版:**3 failed in 6.37s**;修复后:**3 passed in 6.36s**。 - 本地 Python 3.10;修改文件的 pre-commit(含 Ruff/OAT)通过。 1. 使用临时 LANGUAGES NONE CMake 工程 include 仓内真实 gen_ops_info.cmake,建立真实 *_proto_headers interface target 并调用 merge_graph_headers。 2. 首次构建成功;无修改再次构建时产物时间不变。 3. 分别更新普通 proto 中的属性值、op_nn_proto_extend.h 中的属性值、真实合并器输出标记,再构建相同目标。 4. 原版三种情况均仍是旧输出;修复后 .h 和 .cpp 均包含最新内容。 临时工程调用仓内真实函数和合并器,不编译生成的 C++;没有执行 CANN 工程或 NPU 测试。 ## 文档更新 无公开参数变化。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12044 | 24 days ago | |
fix: hash trailing bytes after processed blocks Co-authored-by: yr923096443<923096443@qq.com> # message auto-generated for no-merge-commit merge: !11393 merge fix/murmur-hash-tail into master fix: hash trailing bytes after processed blocks Created-by: yr923096443 Commit-by: yr923096443 Merged-by: cann-robot Description: ## 描述 合入背景:源码审查发现,输入长度为 4n+1/2/3(n>=1)时,三份主机侧哈希函数会忽略实际尾部,导致仅尾部不同的输入产生系统性碰撞;CommonHash 还会把上一完整块的旧值混入尾部。此修复恢复尾部参与哈希的语义,并补齐仓库内回归测试。相关函数用于 Tiling 缓存及运行时知识库索引,实际影响取决于调用方的 key 长度。Issue 中提供了函数级复现与修复前后实测结果。 修复两份 MurmurHash 实现(common/src/op_host/bank_mgr/hash.cpp、matmul/common/op_host/op_tiling/hash.cpp)和 RuntimeKb::CommonHash 的尾部读取起点:处理完整的 4 字节块后,从已推进的 key / ky 读取剩余字节。 CommonHash 使用自己的 HashCombine 逻辑,仅在 (len & 3U) != 0U 时清零 tmp_ky,再组装实际尾部字节;最后一次 HashCombine(tmp_ky, hash_ky) 保留在条件之外。这样修复部分块携带前一完整块旧值的问题,同时保留长度为 4 字节倍数(含 0)以及长度小于 4 时的既有结果。 回归测试覆盖三份实际实现: - common/tests/ut/op_host/test_common_hash_tiling.cpp:保留 5 项 CommonHash 测试。 - common/tests/ut/op_host/test_murmur_hash_tiling.cpp:通过公开头文件直接调用 Ops::NN::HostTiling::MurmurHash。 - matmul/quant_batch_matmul_v3/tests/ut/op_host/test_murmur_hash_tiling.cpp:直接调用 matmul 版 Ops::NN::MurmurHash。 两个新增文件均由现有 test_*_tiling.cpp CMake 规则收集,无需额外运行仓库外脚本。 ## 关联的Issue Fixes #6976 [缺陷背景、复现步骤及验证日志](https://gitcode.com/cann/ops-nn/issues/6976)。 ## 测试 - 2026-10-20 补充独立复现:在 WSL x86_64 / GCC 15.2.0 上编译基线 c54aa50 与当前 e218d160 的三份真实源码,仅对外部日志提供桩。01 02 03 04 05 / 01 02 03 04 06 在 len=5, seed=271828 下,三份实现修复前均碰撞,修复后均能区分;同一输入长度 0、1、2、3、4、8 的结果保持一致。ASan/UBSan 无报错,详细输出见关联 Issue。 - 每份 MurmurHash 实现覆盖长度 0–16 × seed 0、1、271828、UINT32_MAX 的 68 个固定向量,另检查默认 seed。向量由 [SMHasher 的 MurmurHash3_x86_32](https://github.com/aappleby/smhasher/blob/07bb4de10a63e8cc2e1724865454eba635742383/src/MurmurHash3.cpp) 生成,并经独立 Python 计算核对;期望值固化在 UT 中。完整块使用对齐的重复字节 word,尾部使用互不相同的 80 37 e9,覆盖 1/2/3 字节尾部、多个完整块及高位字节。 - CommonHash 的 68 个独立计算向量、默认 seed 和空指针检查保持不变;其结果与 MurmurHash 分别验证。 - 编译真实的三份生产源码、仓库头文件和 GoogleTest 1.17.0,仅对外部日志提供桩;使用 g++ -std=c++17 -Wall -Wextra -Werror -fsanitize=address,undefined -fno-omit-frame-pointer -fno-strict-aliasing,9/9 测试通过,无 sanitizer 报错。 - 对两份 MurmurHash 分别进行变异验证:将尾部起点改回 src,每份失败 45 项断言;将下标改为 rest_key[i],每份失败 60 项;颠倒尾部字节读取顺序,每份失败 40 项。当前实现全部通过。 - 使用仓库真实 add_modules_ut_sources、add_all_ut_sources 和两个目录的实际 CMake 入口,确认三份测试文件被收集;最小主机构建及 CTest 通过。完整 CANN SDK 构建由本次 PR CI 验证。 - 两个新增文件的 pre-commit 检查通过(含 clang-format 18.1.8、codespell、OAT),git diff --check 通过。远端提交 e218d160 的代码树与本地验证版本一致。 ## 文档更新 无独立文档变更,已更新本 PR 的修复说明和验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 本次修复、回归测试和验证由 Codex 辅助完成。 See merge request: cann/ops-nn!11393 | 20 days ago | |
修正UT依赖安装与AddExample调测、安装指引 Co-authored-by: yangyang016<yangyang306@hisilicon.com> # message auto-generated for no-merge-commit merge: !11986 merge master into master 修正UT依赖安装与AddExample调测、安装指引 Created-by: yangyang016 Commit-by: yangyang016 Merged-by: cann-robot Description: ## 描述 修复安装、UT依赖和AddExample调测指引中的不一致,确保文档与当前代码及依赖配置对应。 - tests/requirements.txt 新增 -r ../requirements.txt,使UT依赖安装统一包含项目根目录的依赖及版本约束。 - 安装文档区分仅编译与执行UT两种场景,明确UT依赖已包含根目录依赖,无需重复安装。 - 更新AddExample的printf示例,移除与当前实现不一致的旧Tiling代码,明确在 Init 中的插入位置,使用 AscendC::printf 和与 int64_t blockLength_ 对应的 %lld。 - 补充自定义算子包安装时报 shared library validation failed 的处理说明:确认CANN版本与构建环境兼容后,可按需使用 --force 跳过共享库依赖检查;同时说明运行时加载失败风险,不建议默认使用。 ## 关联的Issue 关联Issue #6699:https://gitcode.com/cann/ops-nn/issues/6699 ## 测试 - 已执行 git diff --check HEAD^ HEAD,通过。 - 已静态核对UT依赖引用路径,以及printf示例中的变量类型与插入位置。 - 未执行实际依赖安装、CANN环境下的编译、UT及算子包安装验证,相关验证待补充。 ## 文档更新 - docs/QUICKSTART.md:更新printf调测示例,补充安装共享库校验失败时的处理说明。 - docs/zh/install/quick_install.md:区分编译依赖与UT依赖的安装场景。 - docs/zh/install/compile.md:明确UT依赖包含根目录依赖约束。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11986 | 27 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 24 days ago | ||
| 20 days ago | ||
| 27 days ago |