| Files | Last commit | Last update |
|---|---|---|
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
fix(bitwise_and): 资料与业务代码一致性整改 Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !6375 merge fix/bitwise_and_doc_code_consistency into master fix(bitwise_and): 资料与业务代码一致性整改 Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: ## 关联 Issue - #3590 ## 修改原因 math/bitwise_and 的资料与业务代码能力存在不一致:aclnnBitwiseAndTensorOut 系列接口漏支持 UINT32/UINT64、文档 dtype 与错误码和实现不符、两篇 Inplace 文档的 310P 支持标注与自身注释自相矛盾。本 MR 在**上板实测**后做一致性整改。 ## 主要修改 **1. 补齐 RegBase 接口能力(核心)** - aclnnBitwiseAndTensorOut / aclnnInplaceBitwiseAndTensorOut(仅 Ascend 950 系列可用)的 DTYPE_SUPPORT_LIST 由 7 种扩为 9 种(补 UINT32/UINT64),与 aclnnBitwiseAndTensor、torch.bitwise_and 对齐,消除**漏支持**; - 资料同步:aclnn_bitwiseand.h(self/other 7→9、out 7→15)、aclnnBitwiseAndTensorOut&aclnnInplaceBitwiseAndTensorOut.md(self/other 7→9、out 9→15),错误码表补两条“数据格式需保持一致”。 **2. 修正 310P 支持标注(仅资料口径,不动代码)** - aclnnInplaceBitwiseAndScalar.md、aclnnInplaceBitwiseAndTensor.md 的「Atlas推理系列产品」由“不支持”改为“支持”:与文档自身 dtype 注记自洽(310P 属支持产品、仅不支持 UINT32/UINT64),且与 bitwise_or / bitwise_xor / logical_and 全家族 Inplace 口径一致;业务代码无任何 310P 专属限制。两篇文档下方 dtype 注记保持原样。 **3. 通用资料纠错(与产品无关)** - 计算公式:标量接口 out_i = self_i & other、Inplace 张量接口 selfRef_i = selfRef_i & other_i;输入推导链接改为 deduction_relationship; - **带 out 接口的口径对齐**:aclnnBitwiseAndScalar.md 的 out 数据类型由 11 种补为 15 种(补 UINT32、UINT64、COMPLEX64、COMPLEX128),与同族 bitwise_or / bitwise_xor 的 Scalar 类文档逐字一致;aclnnBitwiseAndTensor.md 的 out(9 种)与两位兄弟的 Tensor 类文档保持一致,未改动; - 错误码表头统一“返回值”,修正越界与空指针行;README 的功能说明与「描述」列收敛为与其他算子一致(详见下条),并补齐两个 *TensorOut 样例链接; - README「参数说明」由 - self(aclTensor*,计算输入) 列表式改为与仓库标准一致的五列参数表(参数名 / 输入、输出、属性 / 描述 / 数据类型 / 数据格式),**参数说明内不再体现 aclTensor、aclScalar 类型标注**(与 bitwise_or/bitwise_xor 及全仓 189 个表格式 README 一致);dtype 口径以“支持列表 + 按产品注解”表达,并按 产品支持情况 里所有 √ 的产品补齐注解覆盖(950 落在表内支持列表;Atlas A3、Atlas A2、Atlas推理系列产品、Atlas训练系列产品 由表后注解给出不支持项,与本文档 aclnnBitwiseAndScalar.md 的 dtype 注记口径逐字一致),原内容不删减; - README 收敛为与其他算子写法一致:功能说明去掉 (Tensor-Tensor 与 Tensor-Scalar 两种形式) 枚举(全仓 236 个 README 中仅此 1 例),计算公式改为 当other为张量时 / 当other为标量时;「描述」列删除属于 API 文档的子句(支持非连续的Tensor、数据维度不支持8维以上),并去掉 other/out 里的 Tensor-Tensor形式/Tensor-Scalar形式 表述与 broadcast关系/互转换关系 子句(去掉限定词后这些子句在标量接口下会失真)—— 三列「描述」与同族 bitwise_or/bitwise_xor **逐字一致**;相关信息由本算子 5 篇 API 文档的「使用说明」「维度(shape)」「非连续Tensor」专列及 README 的约束说明承载,无信息丢失。 **4. 样例与测试** - 样例:新增两个 *TensorOut 样例;并补齐此前缺失的 aclnnInplaceBitwiseAndScalar / aclnnInplaceBitwiseAndTensor 两个样例,README 调用说明表随之从 2 行补到 **6 行**(与 docs/zh/op_api_list.md 的接口顺序一致;兄弟算子 bitwise_or 的 Inplace 接口也都有样例); - 测试:新增 RegBase dtype / 维度 / 格式契约 UT(8 例); - golden.py 注册 *TensorOut golden,并按 TTK TestSpec 补 third_party 三方标杆;新增 5 条 ST 用例;修正 arch35 ST 整数 dtype 取值范围与精度容差; - 删除 tests/ut/op_host/op_api 下 3 个**从未参与编译的死文件**(依据:该目录 CMakeLists 为占位、无 add_modules_ut_sources;op_host UT 仅 GLOB test_*_tiling.cpp、op_api UT 仅扫 tests/ut/op_api;全仓零引用)。README 只引用 examples/ 与 docs/,不引用 tests/,样例链接不受影响。 **5. 清理** - 6 个头 / 源文件 clang-format 对齐、去掉 CMakeLists 末尾空行、新增文件版权年份统一 2026(纯格式,无语义变化)。 ## 上板验证(Ascend950PR_9589) | 通路 | 结果 | |---|---| | aclnn ST(30 例) | **30/30 PASS** | | e2e ST(13 例) | **13/13 PASS** | | dtype 契约 UT(8 例) | **8/8 PASSED** | - 精度口径:精确算符 ((0,0),) + absolute_precision=1e-08;950 上 9×9 输入 × 15 种 out 组合穷举与 torch.bitwise_and 零差异; - 新增 4 个样例上板执行结果与预期一致:*TensorOut 两个样例输出 {0,1,2,3,0,1,4,4};aclnnInplaceBitwiseAndTensor 样例原地写回 {0,1,2,3,0,1,4,4}、aclnnInplaceBitwiseAndScalar 样例原地写回 {4,0,2,2}; - pre-commit run --files <变更文件> 全部通过。 ## 范围说明 - dtype 口径调整只落在 RegBase(两个 *TensorOut 接口仅 950 可用,与 docs/zh/op_api_list.md 第 66 行 A2/A3 列为 - 一致);非 RegBase 仅上述两处支持标注纠错,**不改动 dtype 口径与业务代码逻辑**; - 以下两条**本 MR 有意不做改动**,以避免影响其他芯片(非 RegBase)的既有行为:① aclnn_bitwise_and_tensor.cpp 是否补 IsRegBase() 区分(现状与 bitwise_or 一致,bitwise_xor 已两侧区分);② 两篇 Tensor 文档是否补「非 RegBase 不支持 UINT32、UINT64」注记。二者属非 RegBase 的 dtype 口径,需产品裁定与相应产品上板实测后另行处理。 See merge request: cann/ops-math!6375 | 22 days ago | |
迁移开源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 | 3 months ago | |
style: 统一算子代码格式并规范License头声明 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6326 merge ccc_1013 into master style: 统一算子代码格式并规范License头声明 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 本次提交对 math 与 conversion 目录下 13 个算子进行统一的代码格式整改,不涉及功能逻辑变更: 1. 统一 clang-format 代码格式:函数体、参数列表、REG_OP 宏、初始化列表、空函数体等按 clang-format 风格重排。 2. 规范 License 头声明:framework 下 CMakeLists 与 ONNX 插件源文件头统一为标准格式,并修正 License 文本(补充 OR)。 3. 修复文件末尾换行符:补齐缺失的末尾换行。 4. 统一 Python 文档字符串风格:golden.py 中 ''' 调整为 """。 涉及算子:clip_by_value、clip_by_value_v2、addcdiv、addcmul、bitwise_and、bitwise_or、bitwise_xor、floor_mod、lerp、logical_and、logical_or、mod、pow,以及 tests/ut/op_host/CMakeLists.txt。 ## 关联的Issue - #3651 ## 测试 本次仅代码格式调整,无逻辑变更;UT/ST 用例同步格式化,不影响用例语义与预期结果。 ## 文档更新 无 ## 类型标签 - [x] 其他,请描述:代码格式整改 See merge request: cann/ops-math!6326 | 20 days ago | |
fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5815 merge fix/proto-comment-grammar into master fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 对 39 个算子的 op_graph/*_proto.h 注释做拼写与语法修复,仅注释与格式变更,不涉及任何代码逻辑: - **拼写错误**:select_v2 condittion→condition(2处)、axpy_v2 opratioan→operation、clip_by_value 英文 dtype 列表中的全角逗号改半角 - **系统性语法(历史模板复制扩散)**:Support broadcasting→Supports broadcasting(27个文件)、A ND→An ND(33个文件97处) - **单文件语法修复 71 处(含 signbit returns→Returns、axpy should→Should 两处句首大写补漏)**:ger has→have、addcmul/addcdiv multiply→multiplies、muls An required→A required、equal (x=y)→(x1==x2)、Elementwise→Element-wise、bias_add/lerp/gcd 语序与冠词修复、aicore→AiCore、mod/floor_mod 矛盾表述统一、句首大小写与标点空格等 - 附带 pre-commit 钩子强制规范化(clang-format 重排、尾随空白、文件末尾换行),并保留各文件原有行尾风格(CRLF/LF) 涉及算子:add/sub/mul/muls/div/real_div/floor_div/div_no_nan/pow/minimum/maximum/signbit/less/less_equal/greater/greater_equal/not_equal/equal/bias_add/squared_difference/lerp/logical_and/logical_or/bitwise_or/bitwise_and/bitwise_xor/tanh_grad/axpy/axpy_v2/addcmul/addcdiv/select/select_v2/mod/floor_mod/ger/gcd/clip_by_value/clip_by_value_v2 ## 关联的Issue - #3234 - https://gitcode.com/cann/ops-math/issues/3234 ## 测试 - 纯注释变更,无功能影响 - pre-commit 钩子全部通过(clang-format / trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 严格限定在上述 39 个算子文件,全仓其余算子未改动(其余算子同类问题可后续另行清理) ## 文档更新 不涉及仓内 docs/ 目录;本 PR 即为 proto.h 注释(算子原型文档源)的修正 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5815 | 17 days ago | |
style: 统一算子代码格式并规范License头声明 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6326 merge ccc_1013 into master style: 统一算子代码格式并规范License头声明 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 本次提交对 math 与 conversion 目录下 13 个算子进行统一的代码格式整改,不涉及功能逻辑变更: 1. 统一 clang-format 代码格式:函数体、参数列表、REG_OP 宏、初始化列表、空函数体等按 clang-format 风格重排。 2. 规范 License 头声明:framework 下 CMakeLists 与 ONNX 插件源文件头统一为标准格式,并修正 License 文本(补充 OR)。 3. 修复文件末尾换行符:补齐缺失的末尾换行。 4. 统一 Python 文档字符串风格:golden.py 中 ''' 调整为 """。 涉及算子:clip_by_value、clip_by_value_v2、addcdiv、addcmul、bitwise_and、bitwise_or、bitwise_xor、floor_mod、lerp、logical_and、logical_or、mod、pow,以及 tests/ut/op_host/CMakeLists.txt。 ## 关联的Issue - #3651 ## 测试 本次仅代码格式调整,无逻辑变更;UT/ST 用例同步格式化,不影响用例语义与预期结果。 ## 文档更新 无 ## 类型标签 - [x] 其他,请描述:代码格式整改 See merge request: cann/ops-math!6326 | 20 days ago | |
style: 统一算子代码格式并规范License头声明 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6326 merge ccc_1013 into master style: 统一算子代码格式并规范License头声明 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 本次提交对 math 与 conversion 目录下 13 个算子进行统一的代码格式整改,不涉及功能逻辑变更: 1. 统一 clang-format 代码格式:函数体、参数列表、REG_OP 宏、初始化列表、空函数体等按 clang-format 风格重排。 2. 规范 License 头声明:framework 下 CMakeLists 与 ONNX 插件源文件头统一为标准格式,并修正 License 文本(补充 OR)。 3. 修复文件末尾换行符:补齐缺失的末尾换行。 4. 统一 Python 文档字符串风格:golden.py 中 ''' 调整为 """。 涉及算子:clip_by_value、clip_by_value_v2、addcdiv、addcmul、bitwise_and、bitwise_or、bitwise_xor、floor_mod、lerp、logical_and、logical_or、mod、pow,以及 tests/ut/op_host/CMakeLists.txt。 ## 关联的Issue - #3651 ## 测试 本次仅代码格式调整,无逻辑变更;UT/ST 用例同步格式化,不影响用例语义与预期结果。 ## 文档更新 无 ## 类型标签 - [x] 其他,请描述:代码格式整改 See merge request: cann/ops-math!6326 | 20 days ago | |
fix(bitwise_and): dtype contract UT 用后还原 mock 平台,修复跨套件污染 Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !6687 merge fix/bitwise_and_dtype_contract_platform_isolation into master fix(bitwise_and): dtype contract UT 用后还原 mock 平台,修复跨套件污染 Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: ## 关联 Issue - #3875 ## 修改原因 l2_bitwise_and_dtype_contract 套件(#6375 引入)的用例将 mock 平台切至 ASCEND950(RegBase) 后未还原,进程级全局 g_socVersion 遗留为 950。紧随其后的 l2_bitwise_not_test 在 RegBase dtype 列表下运行:aclnnBitwiseNot 走 DTYPE_SUPPORT_LIST_950(含 UINT16/32/64),UINT32/UINT16/UINT64 校验返回 ACLNN_SUCCESS,而用例期望 ACLNN_ERR_PARAM_INVALID,case_dtype_unvaild 在 test_aclnn_bitwise_not.cpp:257/264/272 断言失败。 ## 主要修改 仅改动 1 个测试文件(16 行新增,0 删除),不触碰 UT 框架与业务代码。对齐同目录 test_aclnn_bitwise_and.cpp 的既有惯例(用例显式切 ASCEND950 并在结束还原 ASCEND910B,即 stub 的进程默认值): - 前 6 个已显式设 ASCEND950 的用例:末尾补 SetPlatformSocVersion(ASCEND910B) 还原; - shape_dim_format_contract / mixed_promote_and_out_cast:原先隐式依赖前序用例遗留的 ASCEND950(mixed_promote_and_out_cast 的 UINT16×UINT16 用例仅在 RegBase 下成功),现开头显式设置、末尾还原,消除顺序依赖且运行时行为不变。 ## 测试验证(x86 mock 环境,CANN 9.2.0,复现命令 bash build.sh -u --opapi) | 场景 | 结果 | | --- | --- | | 修复前基线(master) | l2_bitwise_not_test.case_dtype_unvaild 失败于 257/264/272,其余 48 例通过(复现 issue #3875)| | 修复后同序运行 | 49/49 通过 | | 修复后全套 op_api UT | 4566/4566 通过(266 套件),无其他用例受影响 | | 跳过前置套件直跑 contract→not | 23/23 通过(套件自包含,不依赖进入时平台状态)| | --gtest_shuffle 随机顺序 ×3 | 49/49 通过 | ## 污染面排查 全仓 math/*/tests/ut/op_api/ 下仅 2 个文件使用 SetPlatformSocVersion:守惯例的 test_aclnn_bitwise_and.cpp(设 8 次还 10 次)与本修复的契约套件。无任何其他套件依赖 950 遗留值,全部按默认 910B 假设编写;本套件退出态还原 910B 等价于回到 #6375 合入前的全局状态。 pre-commit run --files <变更文件> 全部通过(含 clang-format、codespell、OAT 合规)。 See merge request: cann/ops-math!6687 | 15 days ago | |
feat(ascend960): 39个算子使能ascend960 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !6137 merge feat/ascend960-enable into master feat(ascend960): 39个算子使能ascend960 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 为 ascend960 新增芯片形态适配算子,覆盖 math 与 conversion 目录下共 39 个算子,无 kernel 代码改动,复用现有 arch35 kernel 与 tiling。 ### 改动原因 ascend960 为新增芯片形态,现有算子需补齐平台注册、编译单元与二进制配置后,才能在新平台上被算子信息库发现、编译并选择正确的 kernel 二进制。 ### 改动方法 1. **算子信息库注册**( *_def.cpp):新增 ascend960 平台注册(AICore().AddConfig) 2. **编译配置**(CMakeLists.txt):在 SUPPORT_COMPUTE_UNIT / COMPUTE_UNITS 中追加 ascend960,并在 SUPPORT_TILING_DIR 中追加对应的 arch35(tiling 目录沿用 arch35);Add / ClipByValue / ClipByValueV2 的编译选项并入既有 add_kernel_sources 块(选项与 ascend950 / ascend350 既有块一致) 3. **二进制配置**:为每个算子新增 ascend960 二进制配置目录,包含 <op>_binary.json 与 <op>_simplified_key.ini,内容沿用 ascend950 既有配置 4. **中央注册表**(scripts/kernel/binary_config/ascendc_config.json):33 个既有条目补齐 ascend960 编译选项,Mod 条目同步补齐(平台注册与编译单元主线已就绪) 5. **注册口径**:Signbit / Add / Ger / Gcd / BitwiseXor 不在中央注册表新增 ascend960 条目(Add 编译选项已迁移至 CMake 管理,其余沿主线现状,主线 ascend950 亦无对应条目) ### 算子清单(共 39 个) - math 目录 36 个:Add、Sub、Mul、Muls、Div、DivNoNan、RealDiv、FloorDiv、FloorMod、BitwiseAnd、BitwiseOr、BitwiseXor、Equal、NotEqual、Less、LessEqual、Greater、GreaterEqual、LogicalAnd、LogicalOr、Select、SelectV2、Maximum、Minimum、Pow、Lerp、BiasAdd、Axpy、AxpyV2、Addcmul、Addcdiv、Ger、Gcd、Signbit、TanhGrad、SquaredDifference、Mod - conversion 目录 2 个:ClipByValue、ClipByValueV2 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3597 ## 测试 - pre-commit 全部 hook 通过(clang-format / OAT / codespell 等) - CI compile 门禁通过(18 个 Compile Job) - ascend960 内核编译与上板验证待具备 ascend960 环境后执行,合入前补充 ## 文档更新 无(仅平台适配,不改变算子功能与约束,不涉及 README 更新) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6137 | 25 days ago | |
fix(bitwise_and): 资料与业务代码一致性整改 Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !6375 merge fix/bitwise_and_doc_code_consistency into master fix(bitwise_and): 资料与业务代码一致性整改 Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: ## 关联 Issue - #3590 ## 修改原因 math/bitwise_and 的资料与业务代码能力存在不一致:aclnnBitwiseAndTensorOut 系列接口漏支持 UINT32/UINT64、文档 dtype 与错误码和实现不符、两篇 Inplace 文档的 310P 支持标注与自身注释自相矛盾。本 MR 在**上板实测**后做一致性整改。 ## 主要修改 **1. 补齐 RegBase 接口能力(核心)** - aclnnBitwiseAndTensorOut / aclnnInplaceBitwiseAndTensorOut(仅 Ascend 950 系列可用)的 DTYPE_SUPPORT_LIST 由 7 种扩为 9 种(补 UINT32/UINT64),与 aclnnBitwiseAndTensor、torch.bitwise_and 对齐,消除**漏支持**; - 资料同步:aclnn_bitwiseand.h(self/other 7→9、out 7→15)、aclnnBitwiseAndTensorOut&aclnnInplaceBitwiseAndTensorOut.md(self/other 7→9、out 9→15),错误码表补两条“数据格式需保持一致”。 **2. 修正 310P 支持标注(仅资料口径,不动代码)** - aclnnInplaceBitwiseAndScalar.md、aclnnInplaceBitwiseAndTensor.md 的「Atlas推理系列产品」由“不支持”改为“支持”:与文档自身 dtype 注记自洽(310P 属支持产品、仅不支持 UINT32/UINT64),且与 bitwise_or / bitwise_xor / logical_and 全家族 Inplace 口径一致;业务代码无任何 310P 专属限制。两篇文档下方 dtype 注记保持原样。 **3. 通用资料纠错(与产品无关)** - 计算公式:标量接口 out_i = self_i & other、Inplace 张量接口 selfRef_i = selfRef_i & other_i;输入推导链接改为 deduction_relationship; - **带 out 接口的口径对齐**:aclnnBitwiseAndScalar.md 的 out 数据类型由 11 种补为 15 种(补 UINT32、UINT64、COMPLEX64、COMPLEX128),与同族 bitwise_or / bitwise_xor 的 Scalar 类文档逐字一致;aclnnBitwiseAndTensor.md 的 out(9 种)与两位兄弟的 Tensor 类文档保持一致,未改动; - 错误码表头统一“返回值”,修正越界与空指针行;README 的功能说明与「描述」列收敛为与其他算子一致(详见下条),并补齐两个 *TensorOut 样例链接; - README「参数说明」由 - self(aclTensor*,计算输入) 列表式改为与仓库标准一致的五列参数表(参数名 / 输入、输出、属性 / 描述 / 数据类型 / 数据格式),**参数说明内不再体现 aclTensor、aclScalar 类型标注**(与 bitwise_or/bitwise_xor 及全仓 189 个表格式 README 一致);dtype 口径以“支持列表 + 按产品注解”表达,并按 产品支持情况 里所有 √ 的产品补齐注解覆盖(950 落在表内支持列表;Atlas A3、Atlas A2、Atlas推理系列产品、Atlas训练系列产品 由表后注解给出不支持项,与本文档 aclnnBitwiseAndScalar.md 的 dtype 注记口径逐字一致),原内容不删减; - README 收敛为与其他算子写法一致:功能说明去掉 (Tensor-Tensor 与 Tensor-Scalar 两种形式) 枚举(全仓 236 个 README 中仅此 1 例),计算公式改为 当other为张量时 / 当other为标量时;「描述」列删除属于 API 文档的子句(支持非连续的Tensor、数据维度不支持8维以上),并去掉 other/out 里的 Tensor-Tensor形式/Tensor-Scalar形式 表述与 broadcast关系/互转换关系 子句(去掉限定词后这些子句在标量接口下会失真)—— 三列「描述」与同族 bitwise_or/bitwise_xor **逐字一致**;相关信息由本算子 5 篇 API 文档的「使用说明」「维度(shape)」「非连续Tensor」专列及 README 的约束说明承载,无信息丢失。 **4. 样例与测试** - 样例:新增两个 *TensorOut 样例;并补齐此前缺失的 aclnnInplaceBitwiseAndScalar / aclnnInplaceBitwiseAndTensor 两个样例,README 调用说明表随之从 2 行补到 **6 行**(与 docs/zh/op_api_list.md 的接口顺序一致;兄弟算子 bitwise_or 的 Inplace 接口也都有样例); - 测试:新增 RegBase dtype / 维度 / 格式契约 UT(8 例); - golden.py 注册 *TensorOut golden,并按 TTK TestSpec 补 third_party 三方标杆;新增 5 条 ST 用例;修正 arch35 ST 整数 dtype 取值范围与精度容差; - 删除 tests/ut/op_host/op_api 下 3 个**从未参与编译的死文件**(依据:该目录 CMakeLists 为占位、无 add_modules_ut_sources;op_host UT 仅 GLOB test_*_tiling.cpp、op_api UT 仅扫 tests/ut/op_api;全仓零引用)。README 只引用 examples/ 与 docs/,不引用 tests/,样例链接不受影响。 **5. 清理** - 6 个头 / 源文件 clang-format 对齐、去掉 CMakeLists 末尾空行、新增文件版权年份统一 2026(纯格式,无语义变化)。 ## 上板验证(Ascend950PR_9589) | 通路 | 结果 | |---|---| | aclnn ST(30 例) | **30/30 PASS** | | e2e ST(13 例) | **13/13 PASS** | | dtype 契约 UT(8 例) | **8/8 PASSED** | - 精度口径:精确算符 ((0,0),) + absolute_precision=1e-08;950 上 9×9 输入 × 15 种 out 组合穷举与 torch.bitwise_and 零差异; - 新增 4 个样例上板执行结果与预期一致:*TensorOut 两个样例输出 {0,1,2,3,0,1,4,4};aclnnInplaceBitwiseAndTensor 样例原地写回 {0,1,2,3,0,1,4,4}、aclnnInplaceBitwiseAndScalar 样例原地写回 {4,0,2,2}; - pre-commit run --files <变更文件> 全部通过。 ## 范围说明 - dtype 口径调整只落在 RegBase(两个 *TensorOut 接口仅 950 可用,与 docs/zh/op_api_list.md 第 66 行 A2/A3 列为 - 一致);非 RegBase 仅上述两处支持标注纠错,**不改动 dtype 口径与业务代码逻辑**; - 以下两条**本 MR 有意不做改动**,以避免影响其他芯片(非 RegBase)的既有行为:① aclnn_bitwise_and_tensor.cpp 是否补 IsRegBase() 区分(现状与 bitwise_or 一致,bitwise_xor 已两侧区分);② 两篇 Tensor 文档是否补「非 RegBase 不支持 UINT32、UINT64」注记。二者属非 RegBase 的 dtype 口径,需产品裁定与相应产品上板实测后另行处理。 See merge request: cann/ops-math!6375 | 22 days ago |
BitwiseAnd
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:计算输入tensor中每个元素与另一个输入(tensor或标量)对应元素的按位与结果。输入必须是整型或者BOOL型变量,当输入为BOOL时,计算逻辑与的结果。
-
计算公式:
-
当other为张量时:
outi=selfi&otheriout_i = self_i \& other_i outi=selfi&otheri
-
当other为标量时:
outi=selfi&otherout_i = self_i \& other outi=selfi&other
-
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| self | 输入 | 公式中的输入self。 | INT16、UINT16、INT32、INT64、INT8、UINT8、UINT32、UINT64、BOOL | ND |
| other | 输入 | 公式中的输入other。 | INT16、UINT16、INT32、INT64、INT8、UINT8、UINT32、UINT64、BOOL | ND |
| out | 输出 | 公式中的输出out。 | BOOL、INT8、INT16、UINT16、INT32、UINT32、INT64、UINT64、UINT8、FLOAT、FLOAT16、DOUBLE、BFLOAT16、COMPLEX64、COMPLEX128 | ND |
- Atlas A3系列产品、Atlas A2系列产品、Atlas推理系列产品、Atlas训练系列产品:self、other的数据类型不支持UINT32、UINT64;out的数据类型不支持UINT32、UINT64、COMPLEX64、COMPLEX128。
约束说明
- 输入的数据类型需满足互推导规则(参见互推导关系),推导后的数据类型需在支持范围内。
- 各接口默认确定性实现,具体约束参见对应 aclnn 接口文档。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_bitwise_and_scalar.cpp | 通过aclnnBitwiseAndScalar接口方式调用BitwiseAndScalar算子。 |
| aclnn接口 | test_aclnn_bitwise_and_tensor.cpp | 通过aclnnBitwiseAndTensor接口方式调用BitwiseAndTensor算子。 |
| aclnn接口 | test_aclnn_bitwise_and_tensor_out.cpp | 通过aclnnBitwiseAndTensorOut接口方式调用BitwiseAndTensorOut算子。 |
| aclnn接口 | test_aclnn_inplace_bitwise_and_tensor_out.cpp | 通过aclnnInplaceBitwiseAndTensorOut接口方式调用InplaceBitwiseAndTensorOut算子。 |
| aclnn接口 | test_aclnn_inplace_bitwise_and_scalar.cpp | 通过aclnnInplaceBitwiseAndScalar接口方式调用InplaceBitwiseAndScalar算子。 |
| aclnn接口 | test_aclnn_inplace_bitwise_and_tensor.cpp | 通过aclnnInplaceBitwiseAndTensor接口方式调用InplaceBitwiseAndTensor算子。 |