| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: 修复代码规范问题,消除reinterpret_cast/const_cast并统一类型操作数 Co-authored-by: ljt<luojiangtao4@huawei.com> # message auto-generated for no-merge-commit merge: !4927 merge master into master fix: 修复代码规范问题,消除reinterpret_cast/const_cast并统一类型操作数 Created-by: xiafengkou Commit-by: ljt Merged-by: cann-robot Description: ## 描述 本次改动对 math 目录下相关算子文件进行代码规范修复,**不改变任何原有代码逻辑与算子行为**,未改动任何公开接口与调用方式,确保不影响既有 UT 与 CI 流程。修复内容如下: **1. 消除 reinterpret_cast(G.EXP.15-CPP,4 处)** - 涉及文件:atan2、cdist_grad、complex、log_add_exp 的 op_host/arch35 tiling 文件。 - 方法:将 reinterpret_cast<const T*>(context->GetCompileInfo()) 替换为框架提供的模板接口 context->GetCompileInfo<T>()(与仓库内 assign_add、floor、round 等文件既有写法一致),类型安全且语义等价。 **2. 消除 const_cast(G.EXP.16-CPP,5 处)** - 涉及文件:mul/op_api/mul.cpp、pow/op_api/aclnn_pow.cpp。 - 方法: - mul.cpp:将文件内 static 辅助函数 MulAiCpu 的输出参数改为 const aclTensor*(仓库内 AbsAiCpu 等已有相同先例),MulInplace 直接复用原 const 输入 rfRes,消除 const_cast。 - aclnn_pow.cpp:powOut 改为 const aclTensor*,Pows/Square/Pow/selfCast 分支直接赋值,去掉 4 处 const_cast<aclTensor*>。 - 均未修改任何公开函数签名。 **3. 统一操作数基本类型(G.EXP.27-CPP,2 处)** - pow/op_api/aclnn_pow.cpp: - CheckSupportPows 中的 6 处 exponent->ToFloat() != 常量 比较统一补充 static_cast<float>,与文件内既有写法(canUseSquare、canNoUseOp)保持一致。 - == 1.0 改为 == 1.0f,避免 double 字面量与 float 操作数比较。 - 注:canNoUseOp(L452)当前已带 static_cast<float> 且 NOOP_EXP 为 float 常量,判定为已符合规范,未改动。 **4. 控制表达式布尔化(G.EXP.36-CPP,1 处)** - logical_or/op_api/aclnn_logical_or.cpp:KERNEL_SUPPORTED_DTYPE_SET.count(selfDtype) 改为 count(selfDtype) > 0,使 if 条件为显式布尔表达式。 **5. 函数声明/定义参数名一致(G.FUN.02-CPP,2 处)** - pdist/op_api/pdist.cpp:定义参数 self 更名为 input,与头文件声明一致。 - logspace/op_api/aclnn_logspace.cpp:定义去掉 stream 的 const 修饰,与头文件声明一致。 ## 关联的Issue 无 ## 测试 - 已通过 IDE 语言诊断检查,无新增编译告警/错误。 - 已通过 git diff 全量复核,确认所有改动均为规范层面的等价改写(类型安全转换、const 修饰、类型统一、布尔表达式显式化、参数重命名),不影响算子原有计算逻辑与分支。 - 未修改算子 kernel 计算流程与任何公开 API 签名,不影响既有调用方。 ## 文档更新 无文档改动。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码规范修复(消除 reinterpret_cast/const_cast、统一类型操作数、布尔表达式显式化、参数名一致性) See merge request: cann/ops-math!4927 | 18 天前 | |
masked_fill等算子下一代实现 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !519 merge local into master masked_fill等算子下一代实现 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 新增以下算子的下一代实现: | 序号 | 名称 | 功能 | |--|--|--| |1| add_n | 将多个输入tensor相加 | |2|axpy_v2|执行标量乘向量加向量的操作| |3|lerp|根据给定的权重,在起始和结束Tensor之间进行线性插值,返回插值后的Tensor| |4|logical_or|完成给定输入张量元素的逻辑或运算| |5|masked_fill|将输入Tensor x中mask位置为True的元素填充指定的值| |6|sub|完成减法计算,被减数按alpha进行缩放| |7|addr|求一维向量vec1和vec2的外积得到一个二维矩阵,并将外积结果矩阵乘一个系数后和自身乘系数相加后输出| |8|square_sum_v1|用于计算输入张量的平方和| |9|is_nan|判断张量中哪些元素是nan| |10|assign_add|完成在原有tensor上的加法操作| |11|assign_sub|完成在原有tensor上的减法操作| |12|invert|按位取反| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!519 | 8 个月前 | |
feat(logical_or): 支持arch35平台多数据类型kernel直接计算 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !2930 merge master into master feat(logical_or): 支持arch35平台多数据类型kernel直接计算 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 logical_or算子在arch35(Ascend 950PR/Ascend 950DT)平台上新增INT8、UINT8、INT16、INT32、INT64、FLOAT16、BFLOAT16、FLOAT数据类型的kernel直接计算支持。此前仅BOOL类型可走AiCore kernel,其他类型需先Cast到BOOL再计算。在RegBase平台上,当两个输入类型相同且属于kernel支持的数据类型时,可直接调用kernel计算,减少Cast开销。 ### 改动原因 - 原logical_or算子仅支持BOOL类型走AiCore kernel,非BOOL类型需要先Cast到BOOL再调用BOOL kernel,增加了额外Cast开销 - arch35平台(Ascend 950PR/950DT)具备RegBase能力,可支持多种数据类型的向量计算 ### 改动方法 1. **kernel侧**:新增三种DAG计算模式: - LogicalOrCompute<uint8_t>:BOOL类型专用,直接位OR后输出 - LogicalOrIntegralCompute<T>:整数类型专用,Or→Compare(NE 0)→Select(1/0)→输出BOOL - LogicalOrFloatCompute<T, IntT>:浮点类型专用,使用自定义MicroAPI Op LogicalOrFloatCustom实现位OR+Compare+Select,输出BOOL 2. **tiling侧**:DoOpTiling按dtype分支选择对应DAG模板进行tiling 3. **Host API侧**:aclnn层新增双路径策略——RegBase+同类型+kernel支持类型直接调用kernel;其他情况Cast到BOOL后调用 4. **OpDef/Proto**:扩展输入dtype支持列表,输出统一为BOOL;新增InferDataType强制输出BOOL 5. **binary config**:新增8种dtype的binary配置(ascend950) 6. **l0op层**:AllocTensor输出类型改为DT_BOOL;IsAiCoreSupport在RegBase上支持所有kernel dtype ## 关联的Issue - #1680 ## 测试 - 支持INT8/UINT8/INT16/INT32/INT64/FLOAT16/BF16/FLOAT各数据类型的kernel计算验证 - 验证非RegBase平台仍走BOOL Cast路径 - 验证双输入类型不同时走BOOL Cast路径 - 验证广播场景正确性 ## 文档更新 - 更新README.md:输入dtype列表、各平台支持说明 - 更新aclnn接口文档:out dtype约束、平台限制说明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2930 | 3 个月前 | |
masked_fill等算子下一代实现 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !519 merge local into master masked_fill等算子下一代实现 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 新增以下算子的下一代实现: | 序号 | 名称 | 功能 | |--|--|--| |1| add_n | 将多个输入tensor相加 | |2|axpy_v2|执行标量乘向量加向量的操作| |3|lerp|根据给定的权重,在起始和结束Tensor之间进行线性插值,返回插值后的Tensor| |4|logical_or|完成给定输入张量元素的逻辑或运算| |5|masked_fill|将输入Tensor x中mask位置为True的元素填充指定的值| |6|sub|完成减法计算,被减数按alpha进行缩放| |7|addr|求一维向量vec1和vec2的外积得到一个二维矩阵,并将外积结果矩阵乘一个系数后和自身乘系数相加后输出| |8|square_sum_v1|用于计算输入张量的平方和| |9|is_nan|判断张量中哪些元素是nan| |10|assign_add|完成在原有tensor上的加法操作| |11|assign_sub|完成在原有tensor上的减法操作| |12|invert|按位取反| ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!519 | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 18 天前 | ||
| 8 个月前 | ||
| 3 个月前 | ||
| 8 个月前 |