| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
nn仓第三方软件适配公共工程,简化构建配置,统一第三方依赖管理,提升可维护性。 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !5128 merge bugfix1 into master nn仓第三方软件适配公共工程,简化构建配置,统一第三方依赖管理,提升可维护性。 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 nn仓第三方软件适配公共工程,简化构建配置,统一第三方依赖管理,提升可维护性。 ### 主要修改 - 删除6个独立的第三方库cmake文件(abseil-cpp、protobuf、eigen、gtest、json、makeself),共删除914行代码 - 改用公共工程的统一接口 add_cann_third_party() 管理第三方依赖 - 修改链接库命名:Eigen3::EigenNn → Eigen3::Eigen - 更新 cann-cmake 版本:master-004 → master-015 ## 关联的Issue [#2853](https://gitcode.com/cann/ops-nn/issues/2853) ## 测试 全量出包验证成功,ut门禁全量验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5128 | 4 个月前 | |
【SoftmaxV2&LogSoftmaxV2&LpNormV2】支持batch一致性 Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !7879 merge feat/batch-invariant-softmax-lpnorm into master 【SoftmaxV2&LogSoftmaxV2&LpNormV2】支持batch一致性 Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 描述 本PR为SoftmaxV2、LogSoftmaxV2和LpNormV2新增batch一致性支持。当确定性级别为3时开启batch一致性。 ### SoftmaxV2 / LogSoftmaxV2 - 在基类中读取确定性级别并设置 enableBatchInvariant_,同时在DEBUG日志中打印该值。 - batch一致性场景跳过AR小尾轴转置模板,避免转置后归约方式变化导致累加顺序不一致。 - 对合轴后A0 == 1的场景,结合reduce轴位置区分“原生AR”和“ARA退化为AR”: - 原生AR仍可选择AR全载或AR重计算模板; - ARA退化场景在batch一致性开启时由AR模板拒绝,继续进入ARA模板,避免切换为AR模板。 - ARA全载和ARA重计算作为低优先级兜底模板,无需额外限制A0 == 1;模板选择由优先级更高的AR模板完成区分。 ### LpNormV2 - 根据确定性级别设置Reduce tiling参数batchInvariant。 - batch一致性计算由Reduce模板负责,算子kernel计算逻辑无需修改。 - tiling日志打印batchInvariant和实际tiling key,便于端到端验证模板选择。 ### opbase依赖 本修改依赖opbase的batch一致性Reduce模板能力,cmake/third_party/opbase.cmake中的OPBASE_TAG_ID已更新为: text bd20a12ebbd210daccd9f936a9ff4fdd62fa9462 对应opbase提交:reduce模版针对batch一致性新增GetInputParam接口。 ## 关联的Issue 无。 ## 测试 ### SoftmaxV2 Ascend 950 Torch NPU端到端验证 所有已执行用例均通过CPU精度检查;完整batch、逐条拆分以及[3, 5]非均匀拆分的输出原始字节完全一致。 | 场景 | level 0 | level 3 | 验证结论 | | --- | --- | --- | --- | | AR小尾轴,shape=[8, 8],axis=1 | batch=0,priority=50,key=500 | batch=1,跳过小尾轴模板,priority=100,key=1000 | batch一致性开启后跳过AR小尾轴,转入AR全载 | | 原生AR全载,shape=[8, 1024],axis=1 | priority=100,key=1000 | priority=100,key=1000 | 原生AR在开关前后保持AR全载 | | 原生AR重计算,shape=[8, 20000],axis=1 | priority=200,key=2000 | priority=200,key=2000 | 原生AR在开关前后保持AR重计算 | | ARA退化为AR,shape=[8, 1024, 1],axis=1 | priority=100,key=1000 | priority=400,key=20000 | level 0退化为AR;level 3保持ARA,并因R方向容量进入ARA重计算 | | ARA全载,shape=[8, 4, 2170],axis=1 | batch=0,priority=300,key=10000 | batch=1,priority=300,key=10000 | ARA全载模板在开关前后保持不变 | | 异dtype且尾轴为1,shape=[8, 1024, 1],FP16输入/FP32输出 | priority=100,key=1000 | priority=400,key=20000 | 异dtype场景下level 3保持ARA通路 | 日志已确认level 0打印enableBatchInvariant is: 0,level 3打印enableBatchInvariant is: 1;level 3的小尾轴场景均打印AR small-R disabled日志。 ### LogSoftmaxV2 Ascend 950 Torch NPU端到端验证 所有已执行用例均通过CPU精度检查;完整batch、逐条拆分以及[3, 5]非均匀拆分的输出原始字节完全一致。 | 场景 | level 0 | level 3 | 验证结论 | | --- | --- | --- | --- | | AR小尾轴,shape=[8, 8],axis=1 | batch=0,priority=50,key=500 | batch=1,跳过小尾轴模板,priority=100,key=1000 | batch一致性开启后跳过AR小尾轴,转入AR全载 | | ARA退化为AR,shape=[8, 1024, 1],axis=1 | priority=100,key=1000 | priority=400,key=20000 | level 0退化为AR;level 3保持ARA,并进入ARA重计算 | | 原生AR重计算,shape=[8, 20000],axis=1 | SoftmaxV2同模板对照已验证 | priority=200,key=2000 | level 3下原生AR仍保持AR重计算 | | ARA全载,shape=[8, 4, 2170],axis=1 | batch=0,priority=300,key=10000 | batch=1,priority=300,key=10000 | ARA全载模板在开关前后保持不变 | | 异dtype且尾轴为1,shape=[8, 1024, 1],FP16输入/FP32输出 | priority=100,key=1000 | priority=400,key=20000 | 异dtype场景下level 3保持ARA通路 | 日志已确认level 0打印enableBatchInvariant is: 0,level 3打印enableBatchInvariant is: 1;level 3的小尾轴场景打印AR small-R disabled日志。 ### LpNormV2 Ascend 950 Torch NPU端到端验证 最终矩阵18个用例全部通过,templateNum 0~6均完成level 0/3配对验证。所有level 0日志均显示batchInvariant: 0,所有level 3日志均显示batchInvariant: 1;同一场景的level 0/3 tiling key均不同。 | P与模板 | level 0 key | level 3 key | | --- | ---: | ---: | | P=0,templateNum=0 | 10285 | 12371 | | P=1,templateNum=1 | 67119149 | 67121235 | | P=2,templateNum=2 | 134228013 | 134230099 | | P=3,templateNum=3 | 201338961 | 201338963 | | P=-inf,templateNum=4 | 268445741 | 268447827 | | P=inf,templateNum=5 | 335554605 | 335556691 | | P=3.5,templateNum=6 | 402663469 | 402665555 | 同时覆盖并通过: - 尾轴为1; - FP16输入、FP32输出; - 非连续输入; - 完整batch、逐条拆分以及[3, 5]非均匀拆分的输出原始字节一致; - CPU精度检查; - Reduce pattern与batch bit共同参与tiling key生成。 P=1为1024个绝对值累加,按1e-3绝对误差阈值验收,实测最大绝对误差为0.000396728515625;其完整batch与两种拆分的输出原始字节完全一致。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!7879 | 2 个月前 | |
add int8 output nn Co-authored-by: huangkejie1647<huangkejie3@huawei.com> # message auto-generated for no-merge-commit merge: !7955 merge int8-nn into master add int8 output nn Created-by: huangkejie1647 Commit-by: huangkejie1647 Merged-by: cann-robot Description: ## 描述 此 PR 为矩阵乘法相关算子内核引入 int8 输出支持,主要通过在各层 Params / Kernel 接口中新增 scalesGM 参数实现。同时简化了 transpose_batch_mat_mul.cpp 中因 IS_INT_8_OUTPUT 条件分支造成的代码重复,统一为单一调用路径。此外更新了 ops-tensor 第三方依赖的仓库地址和提交标签。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 主要改动 统一 TBMMTensorKernel 的 int8 调用路径:在 transpose_batch_mat_mul.cpp 中移除所有 if constexpr (!IS_INT_8_OUTPUT) 分支及对应的 TBMM_IMPL_CLASS_COMMON_TRNAS 宏调用,所有排列/批次拆分组合统一调用 TBMMTensorKernel,并传入新增的 scalesGM 形参。 TBMMTensorKernel 函数签名新增 scalesGM 参数:transpose_batch_mat_mul_asw_kernel.h 中 TBMMTensorKernel 模板函数增加 GM_ADDR scalesGM 参数(位于 biasGM 之后、cGM 之前),同时在构造 Params 时将该 scalesGM 传递给底层内核结构体。 MatMulBasicKernel 与 BatchMatMulBroadcastKernel 参数结构体新增 scales 占位:分别在 mat_mul_pingpong_basic.h 和 batch_mat_mul_v3_asw_broadcast.h 中的 Params 初始化列表里插入一个新的 nullptr(对应 scalesGM),保持参数顺序与底层库接口一致。 更新 ops-tensor 第三方依赖:cmake/third_party/ops-tensor.cmake 中仓库地址从 cann/ops-tensor 切换为 huangkejie1647/ops-tensor(个人 fork),同时提交标签从 477f9e5 更新至 4bb555e。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4401](https://gitcode.com/cann/ops-nn/issues/4401) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7955 | 2 个月前 | |
ops-nn support st for rdv test Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !4324 merge rdv into master ops-nn support st for rdv test Created-by: he_kan Commit-by: he_kan Merged-by: cann-robot Description: ## 描述 新增线上ST功能,可以通过脚本一键式拉起修改文件对应的st测试任务 ops_st_test.sh 使用说明 用途: 算子单测执行脚本,用于对指定算子执行kernel/aclnn/e2e测试并验证精度 主要参数: - --soc_version: SOC版本 - --ops: 指定算子列表(逗号分隔),不指定则自动从git diff提取 - --test_type: 测试类型,默认全部 - --pr_filelist: 变更文件列表路径 使用示例: 1. 自动检测SOC版本,自动从git diff提取算子并执行全部测试 bash ops_st_test.sh 2. 指定SOC版本测试指定算子 bash ops_st_test.sh --soc_version=ascend950 --ops=mat_mul_v3,conv2d_v2 3. 仅执行kernel测试 bash ops_st_test.sh --soc_version=ascend950 --test_type=kernel 4. 从文件列表读取变更文件得到测试算子 bash ops_st_test.sh pr_filelist.txt <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!4324 | 5 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 5 个月前 |