| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[CANNBOT]atanh修改example和population_count适配Ascend950 Ascendc实现 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !3070 merge inv-ascend950-int32 into master [CANNBOT]atanh修改example和population_count适配Ascend950 Ascendc实现 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ### population_count (popcount) 公式与实现 数学定义 $$ \operatorname{popcount}(x) = \sum_{k=0}^{\infty}\big((x \gg k) \mathbin{\&} 1\big) $$ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1673 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3070 | 4 个月前 | |
迁移开源TF插件--math Co-authored-by: yaochen<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4308 merge transfer-math into master 迁移开源TF插件--math Created-by: nextyale Commit-by: yaochen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:迁移TF插件 See merge request: cann/ops-math!4308 | 2 个月前 | |
fix(population_count): 非法输入dtype拦截规范化为EZ0020错误码并完善报错信息 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !5661 merge fix/population-count-dtype-error-code into master fix(population_count): 非法输入dtype拦截规范化为EZ0020错误码并完善报错信息 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 PopulationCount 算子异常场景(L2)修复:非法输入 dtype 的拦截错误码与报错信息规范化。 修复内容(4 个文件): - op_graph/population_count_graph_infer.cpp:新增 VerifyPopulationCount(VERIFY_FUNC_REG)图校验层拦截——非整数输入 dtype 由算子信息库匹配失败的 Unsupported_Operator(EZ3002)(无算子上下文)提前拦截为 CANN 预定义参数校验错误码 Invalid_Argument_Tensor_Dtype(EZ0020),报错含算子名/参数名/实际 dtype/支持范围;校验入口与报错分支均打印当前输入 dtype - op_host/population_count_infershape.cpp:InferShape 增加同款输入 dtype 白名单防御校验(EZ0020),正常推导路径打印 [InferShape] current input dtype of x - op_host/arch35/population_count_tiling_arch35.cpp:tiling 原有裸 OP_LOGE(仅打印 dtype 数字枚举值)升级为标准错误码宏 OP_LOGE_FOR_INVALID_DTYPE_WITH_REASON(EZ0020,含 dtype 字符串) - tests/ut/op_host/arch35/test_population_count_tiling_arch35.cpp:新增 2 条 UT(bfloat16/bool 输入断言 GRAPH_FAILED) proto 保持 TensorType::IntegerDataType() 不变(跨芯片/AICPU 路径不受影响);graph 层允许 8 种整数 dtype,arch35 tiling 层维持 AICore 实现白名单 {DT_INT16, DT_UINT16}。 修复前后对比(TTK geir,Ascend950PR): 修复前: Unsupported_Operator(EZ3002): Optype [PopulationCount] of Ops kernel [AIcoreEngine] is unsupported. Reason: [Dynamic shape check]: data type DT_BFLOAT16 of input [x] is not supported. ... 修复后: Invalid_Argument_Tensor_Dtype(EZ0020): Parameter x of op1 has incorrect dtype DT_BFLOAT16. Reason: only integer dtypes are supported; the Ascend950 AICore implementation supports DT_INT16/DT_UINT16. ## 关联的Issue [L2 异常用例 PopulationCount_L2_exc_dtype_001/002(非法输入 dtype bfloat16/bool 拦截错误码不规范问题)](https://gitcode.com/cann/ops-math/issues/3263) ## 测试 TTK(Ascend950PR,geir 模式,/workspace/ops-test-kit)+ gtest UT: - 非法 dtype(bfloat16/bool):被 EZ0020 拦截,报错含算子名/参数名/实际 dtype/支持范围(plog 实拍) - 正向精度回归(int16/uint16 各维度 shape):4/4 PASS - 原型路径回归(int32/int64/uint8,走 AICPU):3/3 PASS,证明 graph verifier 未误拦合法整数 dtype - ophost UT:19/19 PASS(含新增 2 条非法 dtype 拦截用例,ErrorManager 上报 EZ0020 实证) ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!5661 | 23 天前 | |
math仓算子适配350 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !5906 merge master into master math仓算子适配350 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 math仓算子适配350 ## 关联的Issue [math仓算子适配350](https://gitcode.com/cann/ops-math/issues/3463) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5906 | 4 天前 | |
[CANNBOT]acosh_grad支持数据类型校验,population_count、scale golden修改 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !4381 merge ticket into master [CANNBOT]acosh_grad支持数据类型校验,population_count、scale golden修改 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> acosh_grad支持数据类型校验,population_count、scale golden修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2478 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4381 | 2 个月前 | |
fix(population_count): 非法输入dtype拦截规范化为EZ0020错误码并完善报错信息 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !5661 merge fix/population-count-dtype-error-code into master fix(population_count): 非法输入dtype拦截规范化为EZ0020错误码并完善报错信息 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 PopulationCount 算子异常场景(L2)修复:非法输入 dtype 的拦截错误码与报错信息规范化。 修复内容(4 个文件): - op_graph/population_count_graph_infer.cpp:新增 VerifyPopulationCount(VERIFY_FUNC_REG)图校验层拦截——非整数输入 dtype 由算子信息库匹配失败的 Unsupported_Operator(EZ3002)(无算子上下文)提前拦截为 CANN 预定义参数校验错误码 Invalid_Argument_Tensor_Dtype(EZ0020),报错含算子名/参数名/实际 dtype/支持范围;校验入口与报错分支均打印当前输入 dtype - op_host/population_count_infershape.cpp:InferShape 增加同款输入 dtype 白名单防御校验(EZ0020),正常推导路径打印 [InferShape] current input dtype of x - op_host/arch35/population_count_tiling_arch35.cpp:tiling 原有裸 OP_LOGE(仅打印 dtype 数字枚举值)升级为标准错误码宏 OP_LOGE_FOR_INVALID_DTYPE_WITH_REASON(EZ0020,含 dtype 字符串) - tests/ut/op_host/arch35/test_population_count_tiling_arch35.cpp:新增 2 条 UT(bfloat16/bool 输入断言 GRAPH_FAILED) proto 保持 TensorType::IntegerDataType() 不变(跨芯片/AICPU 路径不受影响);graph 层允许 8 种整数 dtype,arch35 tiling 层维持 AICore 实现白名单 {DT_INT16, DT_UINT16}。 修复前后对比(TTK geir,Ascend950PR): 修复前: Unsupported_Operator(EZ3002): Optype [PopulationCount] of Ops kernel [AIcoreEngine] is unsupported. Reason: [Dynamic shape check]: data type DT_BFLOAT16 of input [x] is not supported. ... 修复后: Invalid_Argument_Tensor_Dtype(EZ0020): Parameter x of op1 has incorrect dtype DT_BFLOAT16. Reason: only integer dtypes are supported; the Ascend950 AICore implementation supports DT_INT16/DT_UINT16. ## 关联的Issue [L2 异常用例 PopulationCount_L2_exc_dtype_001/002(非法输入 dtype bfloat16/bool 拦截错误码不规范问题)](https://gitcode.com/cann/ops-math/issues/3263) ## 测试 TTK(Ascend950PR,geir 模式,/workspace/ops-test-kit)+ gtest UT: - 非法 dtype(bfloat16/bool):被 EZ0020 拦截,报错含算子名/参数名/实际 dtype/支持范围(plog 实拍) - 正向精度回归(int16/uint16 各维度 shape):4/4 PASS - 原型路径回归(int32/int64/uint8,走 AICPU):3/3 PASS,证明 graph verifier 未误拦合法整数 dtype - ophost UT:19/19 PASS(含新增 2 条非法 dtype 拦截用例,ErrorManager 上报 EZ0020 实证) ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!5661 | 23 天前 | |
math仓算子适配350 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !5906 merge master into master math仓算子适配350 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 math仓算子适配350 ## 关联的Issue [math仓算子适配350](https://gitcode.com/cann/ops-math/issues/3463) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5906 | 4 天前 | |
产品名变更 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 | 22 天前 |
PopulationCount
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:逐元素统计输入张量中每个16比特整数的二进制表示中bit=1的个数(population count,亦称Hamming weight / popcount)。
-
计算公式:
yi=popcount(xi)y_i = \text{popcount}(x_i) yi=popcount(xi)
其中:
-
xix_ixi:输入张量的第i个元素,按无符号16位宽解释(INT16负数按二进制补码逐比特计数)
-
yiy_iyi:输出张量的第i个元素,取值范围为 [0,16][0, 16][0,16]
-
使用场景:汉明距离计算、稀疏性分析、位掩码处理等需要统计二进制位数的场景。
参数说明
| 参数名 | 输入/输出 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待统计的整数张量,对应公式中的x。支持0-8维Tensor,0维表示标量。 | INT16、UINT16 | ND |
| y | 输出 | 每个元素对应的位计数结果,对应公式中的y。shape与x一致。 | UINT8 | ND |
约束说明
- 输入x的数据类型必须为INT16或UINT16,输出y的数据类型固定为UINT8。
- 输出y的shape必须与输入x的shape完全一致,不支持广播。
- 支持0-8维Tensor,0维表示标量。
- 支持空Tensor(元素个数为0),直接返回空结果。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_population_count | 通过算子IR构图方式调用PopulationCount算子。 |