| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 3 天前 | |
feat(SignBitsUnpack): add Ascend 950 implementation Co-authored-by: ForestFrame<24011210883@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !4277 merge cherry-pick-mr-4273-1785157556050-auto into master feat(SignBitsUnpack): add Ascend 950 implementation Created-by: lianjieyu Commit-by: ForestFrame Merged-by: cann-robot Description: ## 描述 实现 SignBitsUnpack 在 Ascend 950(arch35)上的完整 AscendC 算子链路,补齐 ACLNN、GEIR 图模式、Host 推导与 tiling、AICore kernel 以及示例。 主要修改: - 按新算子模块规则更新 CMake,并迁移 op_api 目录结构。 - 新增 GEIR proto、shape/dtype 推导,使 size、dtype 在 proto、OpDef、推导和调用侧保持一致。 - 新增 arch35 RT2 tiling、Ascend 950 配置和 kernel 实现。 - 新增 ACLNN 与 GEIR 示例,补充 README 的接口与约束说明。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2388 ## 测试 已执行: - bash build.sh --opkernel --soc=ascend950 --ops=sign_bits_unpack -j8 - bash build.sh --pkg --soc=ascend950 --ops=sign_bits_unpack -j8 --vendor_name=custom - bash build.sh --run_example sign_bits_unpack graph cust --vendor_name=custom_math --soc=ascend950 - bash build.sh --run_example sign_bits_unpack eager cust --vendor_name=custom --soc=ascend950 以上构建、打包、GEIR 图模式与 eager 示例均通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,补充功能语义、输入输出、属性、约束及调用方式。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4277 | 1 个月前 | |
math类onnx算子插件支持 Co-authored-by: x00842564<xuyanke@huawei.com> Co-authored-by: weiyukun<weiyukun2@h-partners.com> # message auto-generated for no-merge-commit merge: !431 merge master into master math类onnx算子插件支持 Created-by: yanke-xu Commit-by: weiyukun;x00842564 Merged-by: cann-robot Description: ## 描述 onnx算子支持列表: 1. addcmul 2. ArgMax 3. ArgMin 4. Bernoulli 5. BitShift 6. Cast 7. Clip 8. Concat 9. ConcatFromSequence 10. Corr 11. CumSum 12. DeformableOffsets 13. DepthToSpace 14. Einsum 15. EyeLike 16. Flatten 17. IsInf 18. Max 19. Mean 20. Min 21. Mod 22. Multinomial 23. NPUDtypeCast 24. NPUFormatCast 25. NPUOneHot 26. NPURotaryMul 27. NPUSignBitsPack 28. NPUSignBitsUnpack 29. NPUSlice 30. OneHot 31. Pad 32. PhonyConcat 33. PhonySplit 34. RandomNormal 35. RandomNormalLike 36. RandomUniform 37. RandomUniformLike 38. ReduceL1 39. ReduceL2 40. ReduceLogSum 41. ReduceLogSumExp 42. ReduceMax 43. ReduceMean 44. ReduceMin 45. ReduceProd 46. ReduceSum 47. ReduceSumSquare 48. RepeatWithPad 49. Reshape 50. ReverseSequence 51. SequenceAt 52. SequenceConstruct 53. SequenceEmpty 54. SequenceErase 55. SequenceInsert 56. SequenceLength 57. Slice 58. SpaceToDepth 59. Split 60. SplitToSequence 61. Squeeze 62. Sum 63. Transpose 64. Trilu 65. Unsqueeze 66. Xor ## 关联的Issue None ## 测试 1、编译构建 2、静态检查 3、冒烟测试 4、本地功能验证 ## 文档更新 None ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!431 | 8 个月前 | |
fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !5722 merge codex/sign-bits-unpack-quality into master fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: ## 描述 **SignBitsUnpack** 1. 修复解包位序与 SignBitsPack 不一致的问题:逐字节执行 bit reverse,使输出按 MSB-first 顺序展开。 2. 修复符号极性相反的问题:统一为 bit 1 输出 -1、bit 0 输出 +1。 3. 在 InferShape 中增加解包元素总数的乘法溢出检查及 size 整除检查,避免非法 shape 被静默截断。 4. 同步更新算子 README、Host UT 和 Kernel UT,新增 Pack/Unpack 位序与极性兼容性测试。 5. ACLNN 对 dtype 参数增加显式白名单校验,仅允许既有的 FLOAT/FLOAT16,未新增任何 dtype。 6. README 和 ACLNN 文档明确区分 self=UINT8、size=int64_t 与 dtype 参数支持集,避免跨参数类型聚合误判。 7. 复核 size 约束:InferShape、Tiling、ACLNN、L0 均已实现 size > 0 校验,ACLNN/InferShape 同时校验整除关系,无需重复增加逻辑。 8. 将已有非法 dtype UT 名称修正为 ascend910B2_case_invalid_dtype。 ## 关联的Issue #3202 ## 测试 - SignBitsUnpack Host UT:17/17 通过。 - SignBitsUnpack Kernel UT:8/8 通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,明确 MSB-first 位序及 bit 1/0 对应的输出极性。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 > canndev Ascend 950 ini 清理由于属于 cann/canndev 仓库,不包含在本 ops-math PR 中。 **ReduceStdV2Update** 1. 完善空 Tensor 防御路径:保持 EMPTY_A 零操作,EMPTY_R 输出由固定 0 修正为 NaN,并与 normal 路径 N <= correction 时的 cof=NaN 语义保持一致。 2. 修复 EMPTY_R 路径 UB 预算超限:VECOUT 队列由双缓冲调整为单缓冲,最坏场景 UB 占用由 256KB 降至 192KB,低于 248KB 上限。 3. 去除 Kernel 入口文件 _apt 后缀,将 reduce_std_v2_update_apt.cpp 重命名为 reduce_std_v2_update.cpp,并同步更新算子注册配置。 4. 保留并验证 mean 的 dtype、format、shape 一致性校验,补充 EMPTY_A、EMPTY_R 和非正分母 NaN 场景 Host UT。 5. 同步更新 README 中的空 Tensor 与 NaN 边界语义。 测试: - ReduceStdV2Update Host UT:22/22 通过。 - ReduceStdV2Update Kernel 定向构建通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ### InferShape 补充加固 1. 修复非法 dim 在 InferShape 阶段被静默忽略的问题,越界轴现在返回失败;保留负轴、多轴和轴去重语义。 2. 增加静态场景下 mean.shape == x.shape 校验,并允许动态维度延后到运行期校验。 3. 增加输入 rank 不超过 8 的约束校验。 4. 修复 unknown-rank 动态 Shape 输出透传。 5. 补充多轴归约、越界轴、mean shape 不一致、unknown-rank 和 rank 9 的 InferShape UT。 补充测试: - PR 实际 head 上 ophost + opgraph 完整构建通过。 - ReduceStdV2Update Host UT:27/27 通过(Tiling 18 项、InferShape 9 项)。 - git diff --check 通过。 See merge request: cann/ops-math!5722 | 3 天前 | |
feat(SignBitsUnpack): add Ascend 950 implementation Co-authored-by: ForestFrame<24011210883@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !4277 merge cherry-pick-mr-4273-1785157556050-auto into master feat(SignBitsUnpack): add Ascend 950 implementation Created-by: lianjieyu Commit-by: ForestFrame Merged-by: cann-robot Description: ## 描述 实现 SignBitsUnpack 在 Ascend 950(arch35)上的完整 AscendC 算子链路,补齐 ACLNN、GEIR 图模式、Host 推导与 tiling、AICore kernel 以及示例。 主要修改: - 按新算子模块规则更新 CMake,并迁移 op_api 目录结构。 - 新增 GEIR proto、shape/dtype 推导,使 size、dtype 在 proto、OpDef、推导和调用侧保持一致。 - 新增 arch35 RT2 tiling、Ascend 950 配置和 kernel 实现。 - 新增 ACLNN 与 GEIR 示例,补充 README 的接口与约束说明。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2388 ## 测试 已执行: - bash build.sh --opkernel --soc=ascend950 --ops=sign_bits_unpack -j8 - bash build.sh --pkg --soc=ascend950 --ops=sign_bits_unpack -j8 --vendor_name=custom - bash build.sh --run_example sign_bits_unpack graph cust --vendor_name=custom_math --soc=ascend950 - bash build.sh --run_example sign_bits_unpack eager cust --vendor_name=custom --soc=ascend950 以上构建、打包、GEIR 图模式与 eager 示例均通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,补充功能语义、输入输出、属性、约束及调用方式。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4277 | 1 个月前 | |
fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !5722 merge codex/sign-bits-unpack-quality into master fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: ## 描述 **SignBitsUnpack** 1. 修复解包位序与 SignBitsPack 不一致的问题:逐字节执行 bit reverse,使输出按 MSB-first 顺序展开。 2. 修复符号极性相反的问题:统一为 bit 1 输出 -1、bit 0 输出 +1。 3. 在 InferShape 中增加解包元素总数的乘法溢出检查及 size 整除检查,避免非法 shape 被静默截断。 4. 同步更新算子 README、Host UT 和 Kernel UT,新增 Pack/Unpack 位序与极性兼容性测试。 5. ACLNN 对 dtype 参数增加显式白名单校验,仅允许既有的 FLOAT/FLOAT16,未新增任何 dtype。 6. README 和 ACLNN 文档明确区分 self=UINT8、size=int64_t 与 dtype 参数支持集,避免跨参数类型聚合误判。 7. 复核 size 约束:InferShape、Tiling、ACLNN、L0 均已实现 size > 0 校验,ACLNN/InferShape 同时校验整除关系,无需重复增加逻辑。 8. 将已有非法 dtype UT 名称修正为 ascend910B2_case_invalid_dtype。 ## 关联的Issue #3202 ## 测试 - SignBitsUnpack Host UT:17/17 通过。 - SignBitsUnpack Kernel UT:8/8 通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,明确 MSB-first 位序及 bit 1/0 对应的输出极性。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 > canndev Ascend 950 ini 清理由于属于 cann/canndev 仓库,不包含在本 ops-math PR 中。 **ReduceStdV2Update** 1. 完善空 Tensor 防御路径:保持 EMPTY_A 零操作,EMPTY_R 输出由固定 0 修正为 NaN,并与 normal 路径 N <= correction 时的 cof=NaN 语义保持一致。 2. 修复 EMPTY_R 路径 UB 预算超限:VECOUT 队列由双缓冲调整为单缓冲,最坏场景 UB 占用由 256KB 降至 192KB,低于 248KB 上限。 3. 去除 Kernel 入口文件 _apt 后缀,将 reduce_std_v2_update_apt.cpp 重命名为 reduce_std_v2_update.cpp,并同步更新算子注册配置。 4. 保留并验证 mean 的 dtype、format、shape 一致性校验,补充 EMPTY_A、EMPTY_R 和非正分母 NaN 场景 Host UT。 5. 同步更新 README 中的空 Tensor 与 NaN 边界语义。 测试: - ReduceStdV2Update Host UT:22/22 通过。 - ReduceStdV2Update Kernel 定向构建通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ### InferShape 补充加固 1. 修复非法 dim 在 InferShape 阶段被静默忽略的问题,越界轴现在返回失败;保留负轴、多轴和轴去重语义。 2. 增加静态场景下 mean.shape == x.shape 校验,并允许动态维度延后到运行期校验。 3. 增加输入 rank 不超过 8 的约束校验。 4. 修复 unknown-rank 动态 Shape 输出透传。 5. 补充多轴归约、越界轴、mean shape 不一致、unknown-rank 和 rank 9 的 InferShape UT。 补充测试: - PR 实际 head 上 ophost + opgraph 完整构建通过。 - ReduceStdV2Update Host UT:27/27 通过(Tiling 18 项、InferShape 9 项)。 - git diff --check 通过。 See merge request: cann/ops-math!5722 | 3 天前 | |
fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !5722 merge codex/sign-bits-unpack-quality into master fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: ## 描述 **SignBitsUnpack** 1. 修复解包位序与 SignBitsPack 不一致的问题:逐字节执行 bit reverse,使输出按 MSB-first 顺序展开。 2. 修复符号极性相反的问题:统一为 bit 1 输出 -1、bit 0 输出 +1。 3. 在 InferShape 中增加解包元素总数的乘法溢出检查及 size 整除检查,避免非法 shape 被静默截断。 4. 同步更新算子 README、Host UT 和 Kernel UT,新增 Pack/Unpack 位序与极性兼容性测试。 5. ACLNN 对 dtype 参数增加显式白名单校验,仅允许既有的 FLOAT/FLOAT16,未新增任何 dtype。 6. README 和 ACLNN 文档明确区分 self=UINT8、size=int64_t 与 dtype 参数支持集,避免跨参数类型聚合误判。 7. 复核 size 约束:InferShape、Tiling、ACLNN、L0 均已实现 size > 0 校验,ACLNN/InferShape 同时校验整除关系,无需重复增加逻辑。 8. 将已有非法 dtype UT 名称修正为 ascend910B2_case_invalid_dtype。 ## 关联的Issue #3202 ## 测试 - SignBitsUnpack Host UT:17/17 通过。 - SignBitsUnpack Kernel UT:8/8 通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,明确 MSB-first 位序及 bit 1/0 对应的输出极性。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 > canndev Ascend 950 ini 清理由于属于 cann/canndev 仓库,不包含在本 ops-math PR 中。 **ReduceStdV2Update** 1. 完善空 Tensor 防御路径:保持 EMPTY_A 零操作,EMPTY_R 输出由固定 0 修正为 NaN,并与 normal 路径 N <= correction 时的 cof=NaN 语义保持一致。 2. 修复 EMPTY_R 路径 UB 预算超限:VECOUT 队列由双缓冲调整为单缓冲,最坏场景 UB 占用由 256KB 降至 192KB,低于 248KB 上限。 3. 去除 Kernel 入口文件 _apt 后缀,将 reduce_std_v2_update_apt.cpp 重命名为 reduce_std_v2_update.cpp,并同步更新算子注册配置。 4. 保留并验证 mean 的 dtype、format、shape 一致性校验,补充 EMPTY_A、EMPTY_R 和非正分母 NaN 场景 Host UT。 5. 同步更新 README 中的空 Tensor 与 NaN 边界语义。 测试: - ReduceStdV2Update Host UT:22/22 通过。 - ReduceStdV2Update Kernel 定向构建通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ### InferShape 补充加固 1. 修复非法 dim 在 InferShape 阶段被静默忽略的问题,越界轴现在返回失败;保留负轴、多轴和轴去重语义。 2. 增加静态场景下 mean.shape == x.shape 校验,并允许动态维度延后到运行期校验。 3. 增加输入 rank 不超过 8 的约束校验。 4. 修复 unknown-rank 动态 Shape 输出透传。 5. 补充多轴归约、越界轴、mean shape 不一致、unknown-rank 和 rank 9 的 InferShape UT。 补充测试: - PR 实际 head 上 ophost + opgraph 完整构建通过。 - ReduceStdV2Update Host UT:27/27 通过(Tiling 18 项、InferShape 9 项)。 - git diff --check 通过。 See merge request: cann/ops-math!5722 | 3 天前 | |
fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !5722 merge codex/sign-bits-unpack-quality into master fix(SignBitsUnpack、ReduceStdV2Update算子):质量加固:典型问题+代码问题整改 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: ## 描述 **SignBitsUnpack** 1. 修复解包位序与 SignBitsPack 不一致的问题:逐字节执行 bit reverse,使输出按 MSB-first 顺序展开。 2. 修复符号极性相反的问题:统一为 bit 1 输出 -1、bit 0 输出 +1。 3. 在 InferShape 中增加解包元素总数的乘法溢出检查及 size 整除检查,避免非法 shape 被静默截断。 4. 同步更新算子 README、Host UT 和 Kernel UT,新增 Pack/Unpack 位序与极性兼容性测试。 5. ACLNN 对 dtype 参数增加显式白名单校验,仅允许既有的 FLOAT/FLOAT16,未新增任何 dtype。 6. README 和 ACLNN 文档明确区分 self=UINT8、size=int64_t 与 dtype 参数支持集,避免跨参数类型聚合误判。 7. 复核 size 约束:InferShape、Tiling、ACLNN、L0 均已实现 size > 0 校验,ACLNN/InferShape 同时校验整除关系,无需重复增加逻辑。 8. 将已有非法 dtype UT 名称修正为 ascend910B2_case_invalid_dtype。 ## 关联的Issue #3202 ## 测试 - SignBitsUnpack Host UT:17/17 通过。 - SignBitsUnpack Kernel UT:8/8 通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,明确 MSB-first 位序及 bit 1/0 对应的输出极性。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 > canndev Ascend 950 ini 清理由于属于 cann/canndev 仓库,不包含在本 ops-math PR 中。 **ReduceStdV2Update** 1. 完善空 Tensor 防御路径:保持 EMPTY_A 零操作,EMPTY_R 输出由固定 0 修正为 NaN,并与 normal 路径 N <= correction 时的 cof=NaN 语义保持一致。 2. 修复 EMPTY_R 路径 UB 预算超限:VECOUT 队列由双缓冲调整为单缓冲,最坏场景 UB 占用由 256KB 降至 192KB,低于 248KB 上限。 3. 去除 Kernel 入口文件 _apt 后缀,将 reduce_std_v2_update_apt.cpp 重命名为 reduce_std_v2_update.cpp,并同步更新算子注册配置。 4. 保留并验证 mean 的 dtype、format、shape 一致性校验,补充 EMPTY_A、EMPTY_R 和非正分母 NaN 场景 Host UT。 5. 同步更新 README 中的空 Tensor 与 NaN 边界语义。 测试: - ReduceStdV2Update Host UT:22/22 通过。 - ReduceStdV2Update Kernel 定向构建通过。 - clang-format --dry-run --Werror 通过。 - git diff --check 通过。 ### InferShape 补充加固 1. 修复非法 dim 在 InferShape 阶段被静默忽略的问题,越界轴现在返回失败;保留负轴、多轴和轴去重语义。 2. 增加静态场景下 mean.shape == x.shape 校验,并允许动态维度延后到运行期校验。 3. 增加输入 rank 不超过 8 的约束校验。 4. 修复 unknown-rank 动态 Shape 输出透传。 5. 补充多轴归约、越界轴、mean shape 不一致、unknown-rank 和 rank 9 的 InferShape UT。 补充测试: - PR 实际 head 上 ophost + opgraph 完整构建通过。 - ReduceStdV2Update Host UT:27/27 通过(Tiling 18 项、InferShape 9 项)。 - git diff --check 通过。 See merge request: cann/ops-math!5722 | 3 天前 | |
feat(SignBitsUnpack): add Ascend 950 implementation Co-authored-by: ForestFrame<24011210883@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !4277 merge cherry-pick-mr-4273-1785157556050-auto into master feat(SignBitsUnpack): add Ascend 950 implementation Created-by: lianjieyu Commit-by: ForestFrame Merged-by: cann-robot Description: ## 描述 实现 SignBitsUnpack 在 Ascend 950(arch35)上的完整 AscendC 算子链路,补齐 ACLNN、GEIR 图模式、Host 推导与 tiling、AICore kernel 以及示例。 主要修改: - 按新算子模块规则更新 CMake,并迁移 op_api 目录结构。 - 新增 GEIR proto、shape/dtype 推导,使 size、dtype 在 proto、OpDef、推导和调用侧保持一致。 - 新增 arch35 RT2 tiling、Ascend 950 配置和 kernel 实现。 - 新增 ACLNN 与 GEIR 示例,补充 README 的接口与约束说明。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2388 ## 测试 已执行: - bash build.sh --opkernel --soc=ascend950 --ops=sign_bits_unpack -j8 - bash build.sh --pkg --soc=ascend950 --ops=sign_bits_unpack -j8 --vendor_name=custom - bash build.sh --run_example sign_bits_unpack graph cust --vendor_name=custom_math --soc=ascend950 - bash build.sh --run_example sign_bits_unpack eager cust --vendor_name=custom --soc=ascend950 以上构建、打包、GEIR 图模式与 eager 示例均通过。 ## 文档更新 更新 math/sign_bits_unpack/README.md,补充功能语义、输入输出、属性、约束及调用方式。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4277 | 1 个月前 | |
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 3 天前 |
SignBitsUnpack
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:将UINT8类型的1-bit Adam符号位拆包为FLOAT32或FLOAT16类型的张量。
-
计算公式:
设输入self为长度为N的1D UINT8张量,每个字节包含8个符号位(与SignBitsPack一致,按MSB优先顺序),第jjj个字节bjb_jbj中从高到低的第iii位(i=0,1,…,7i = 0, 1, \dots, 7i=0,1,…,7)解包规则如下:
outj⋅8+i={−1.0,bit7−i(bj)=1+1.0,bit7−i(bj)=0out_{j \cdot 8 + i} = \begin{cases} -1.0, & \text{bit}_{7-i}(b_j) = 1 \\ +1.0, & \text{bit}_{7-i}(b_j) = 0 \end{cases} outj⋅8+i={−1.0,+1.0,bit7−i(bj)=1bit7−i(bj)=0
输出张量共N×8N \times 8N×8个元素,并被reshape为二维,其shape为:
out.shape=(size, N×8size)out.shape = (size,\ \frac{N \times 8}{size}) out.shape=(size, sizeN×8)
其中size为入参指定的输出第一维度大小。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| self | 输入 | 待进行SignBitsUnpack计算的入参,1D张量,每个UINT8元素包含8个符号位。支持空tensor。 | UINT8 | ND |
| size | 输入属性 | 表示维度处理,reshape时输出张量的第一个维度。 | INT64 | - |
| dtype | 输入属性 | 表示量化输出Tensor的数据类型。 | FLOAT16、FLOAT | - |
| out | 输出 | 待进行SignBitsUnpack计算的出参,2D张量,数据类型由dtype参数决定。 | FLOAT16、FLOAT | ND |
约束说明
self必须是1维张量,out必须是2维张量。size必须大于0,且(self的元素个数 × 8)能被size整除。out的第一维度必须等于size。dtype参数仅支持FLOAT16、FLOAT,且out的数据类型必须与dtype参数一致;UINT8是self的数据类型,INT64是size的接口类型,均不是dtype参数的可选值。- 数据格式仅支持ND。
- 支持空tensor场景。
- 确定性计算:aclnnSignBitsUnpack默认确定性实现。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_sign_bits_unpack | 通过aclnnSignBitsUnpack接口方式调用SignBitsUnpack算子。 |
| 图模式调用 | test_geir_sign_bits_unpack | 通过算子IR构图方式调用SignBitsUnpack算子。 |