文件最后提交记录最后更新时间
feat(experimental): replace div_mod with div_v3 Co-authored-by: wyb780310<wangyubo37@huawei.com> # message auto-generated for no-merge-commit merge: !1994 merge master into master feat(experimental): replace div_mod with div_v3 Created-by: wyb780310 Commit-by: wyb780310 Merged-by: cann-robot Description: ## 描述 本 PR 将experimental/math/div_v3, 用更清晰的 mode 属性来实现与官方 aclnnDivMod 对齐的除法语义。基于 div_mod PR 审视意见,对算子进行了完全重构: 主要改动如下: - 重新定义算子语义为“带 mode 参数的除法”(单输出 y),覆盖: - mode=0 (RealDiv)y = x1 / x2 - mode=1 (TruncDiv)y = trunc(x1 / x2) - mode=2 (FloorDiv)y = floor(x1 / x2) - 新增 mode 属性校验与分支计算逻辑(kernel 侧根据 mode 选择 Div/Trunc/Floor 路径) - 新增数据类型支持:BFLOAT16 / INT32 / INT16(同时支持 FLOAT32 / FLOAT16) - 在 op_api 层完成广播对齐:通过 l0op::BroadcastTox1/x2 广播到输出形状,kernel 侧按同形状逐元素计算 - kernel 实现使用手写 LocalTensor 流水线(CopyIn / Compute / CopyOut),并在关键向量计算之间加入同步: - DataCopyPad:用于尾块/非对齐尾段的数据搬运,避免尾部数据丢失 - PipeBarrier<PIPE_V>:用于向量计算间的同步 - 平台支持信息:div_v3/README.md 标注支持 Atlas A2/A3(实际 AICore 配置以代码中的 ascend910b / ascend910_93 为准) | # | 原问题 | 涉及文件 | div_v3 状态 | 解决位置 | |---|--------|---------|------------|---------| | 1 | typeSize 获取方式 | tiling.cpp | **已解决** | ge::TypeUtils::GetDataTypeLength (L114-115) | | 2 | 魔鬼数字 32 | tiling.cpp | **已解决** | 用 Ops::Base::GetUbBlockSize(context) 代替 | | 3 | 对齐计算用 CeilAlign | tiling.cpp | **已解决** | 整体 tiling 逻辑重构,手写公式替换为 Ops::Base::CeilDiv | | 4 | 16M workspace 不需要 | tiling.cpp | **已解决** | 改用 GetLibApiWorkSpaceSize() (L72) | | 5 | 核数写死为 8 | tiling.cpp | **已解决** | 动态计算 min(coreNum, blocksTotal) (L148-159) | | 6 | ascend910_95 名称错误 | def.cpp | **已解决** | 删除,仅保留合法名称 (L53) | | 7 | half 中间缓冲区无 DoubleBuffer | div_v3.h | **设计变更** | 中间缓冲区用 TBuf,IO 队列用 TQue 双缓冲 | | 8 | Vector 计算间缺同步 | div_v3.h | **已解决** | 所有连续 Vector 指令间插入 PipeBarrier<PIPE_V>() | | 9 | A3 也需要支持 | def.cpp + README | **已修复** | 新增 ascend950 配置 | | 10 | 添加 bf16 支持 | def.cpp | **已解决** | 支持 5 种类型含 BF16 (L22) | | 11 | infershape 误用 optiling 命名空间 | infershape.cpp | **已解决** | 移除 tiling_util.h 依赖 | | 12 | 不支持广播 | aclnn_div_v3.cpp | **已解决** | op_api 层 BroadcastTo 完成广播 (L148-155) | | 13 | GetNodeName 后重复算子名 | infershape.cpp | **已解决** | 日志不再重复添加算子名前缀 | | 14 | 缺少 dtype 推导 | infershape.cpp | **设计覆盖** | def.cpp 位置对应自动推导(与 math/div 一致) | | 15 | 缺少 -1/-2 shape 推导 | infershape.cpp | **已解决** | *yShape = *xShape 天然传递动态 shape | ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1151 ## 测试 - 新增示例测试入口: - examples/test_aclnn_div_v3.cpp:循环验证 mode=0/1/2(RealDiv/TruncDiv/FloorDiv),shape 使用 {4, 256} - examples/test_geir_div_v3.cpp:以 GE 图方式构建 DivV3,设置 mode=2 (FloorDiv),并将输出写入 ./div_v3_output_*.bin ## 文档更新 - 新增 experimental/math/div_v3/README.md - 新增 experimental/math/div_v3/docs/aclnnDivV3.md ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!19942 个月前
feat(experimental): replace div_mod with div_v3 Co-authored-by: wyb780310<wangyubo37@huawei.com> # message auto-generated for no-merge-commit merge: !1994 merge master into master feat(experimental): replace div_mod with div_v3 Created-by: wyb780310 Commit-by: wyb780310 Merged-by: cann-robot Description: ## 描述 本 PR 将experimental/math/div_v3, 用更清晰的 mode 属性来实现与官方 aclnnDivMod 对齐的除法语义。基于 div_mod PR 审视意见,对算子进行了完全重构: 主要改动如下: - 重新定义算子语义为“带 mode 参数的除法”(单输出 y),覆盖: - mode=0 (RealDiv)y = x1 / x2 - mode=1 (TruncDiv)y = trunc(x1 / x2) - mode=2 (FloorDiv)y = floor(x1 / x2) - 新增 mode 属性校验与分支计算逻辑(kernel 侧根据 mode 选择 Div/Trunc/Floor 路径) - 新增数据类型支持:BFLOAT16 / INT32 / INT16(同时支持 FLOAT32 / FLOAT16) - 在 op_api 层完成广播对齐:通过 l0op::BroadcastTox1/x2 广播到输出形状,kernel 侧按同形状逐元素计算 - kernel 实现使用手写 LocalTensor 流水线(CopyIn / Compute / CopyOut),并在关键向量计算之间加入同步: - DataCopyPad:用于尾块/非对齐尾段的数据搬运,避免尾部数据丢失 - PipeBarrier<PIPE_V>:用于向量计算间的同步 - 平台支持信息:div_v3/README.md 标注支持 Atlas A2/A3(实际 AICore 配置以代码中的 ascend910b / ascend910_93 为准) | # | 原问题 | 涉及文件 | div_v3 状态 | 解决位置 | |---|--------|---------|------------|---------| | 1 | typeSize 获取方式 | tiling.cpp | **已解决** | ge::TypeUtils::GetDataTypeLength (L114-115) | | 2 | 魔鬼数字 32 | tiling.cpp | **已解决** | 用 Ops::Base::GetUbBlockSize(context) 代替 | | 3 | 对齐计算用 CeilAlign | tiling.cpp | **已解决** | 整体 tiling 逻辑重构,手写公式替换为 Ops::Base::CeilDiv | | 4 | 16M workspace 不需要 | tiling.cpp | **已解决** | 改用 GetLibApiWorkSpaceSize() (L72) | | 5 | 核数写死为 8 | tiling.cpp | **已解决** | 动态计算 min(coreNum, blocksTotal) (L148-159) | | 6 | ascend910_95 名称错误 | def.cpp | **已解决** | 删除,仅保留合法名称 (L53) | | 7 | half 中间缓冲区无 DoubleBuffer | div_v3.h | **设计变更** | 中间缓冲区用 TBuf,IO 队列用 TQue 双缓冲 | | 8 | Vector 计算间缺同步 | div_v3.h | **已解决** | 所有连续 Vector 指令间插入 PipeBarrier<PIPE_V>() | | 9 | A3 也需要支持 | def.cpp + README | **已修复** | 新增 ascend950 配置 | | 10 | 添加 bf16 支持 | def.cpp | **已解决** | 支持 5 种类型含 BF16 (L22) | | 11 | infershape 误用 optiling 命名空间 | infershape.cpp | **已解决** | 移除 tiling_util.h 依赖 | | 12 | 不支持广播 | aclnn_div_v3.cpp | **已解决** | op_api 层 BroadcastTo 完成广播 (L148-155) | | 13 | GetNodeName 后重复算子名 | infershape.cpp | **已解决** | 日志不再重复添加算子名前缀 | | 14 | 缺少 dtype 推导 | infershape.cpp | **设计覆盖** | def.cpp 位置对应自动推导(与 math/div 一致) | | 15 | 缺少 -1/-2 shape 推导 | infershape.cpp | **已解决** | *yShape = *xShape 天然传递动态 shape | ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1151 ## 测试 - 新增示例测试入口: - examples/test_aclnn_div_v3.cpp:循环验证 mode=0/1/2(RealDiv/TruncDiv/FloorDiv),shape 使用 {4, 256} - examples/test_geir_div_v3.cpp:以 GE 图方式构建 DivV3,设置 mode=2 (FloorDiv),并将输出写入 ./div_v3_output_*.bin ## 文档更新 - 新增 experimental/math/div_v3/README.md - 新增 experimental/math/div_v3/docs/aclnnDivV3.md ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!19942 个月前
feat(experimental): replace div_mod with div_v3 Co-authored-by: wyb780310<wangyubo37@huawei.com> # message auto-generated for no-merge-commit merge: !1994 merge master into master feat(experimental): replace div_mod with div_v3 Created-by: wyb780310 Commit-by: wyb780310 Merged-by: cann-robot Description: ## 描述 本 PR 将experimental/math/div_v3, 用更清晰的 mode 属性来实现与官方 aclnnDivMod 对齐的除法语义。基于 div_mod PR 审视意见,对算子进行了完全重构: 主要改动如下: - 重新定义算子语义为“带 mode 参数的除法”(单输出 y),覆盖: - mode=0 (RealDiv)y = x1 / x2 - mode=1 (TruncDiv)y = trunc(x1 / x2) - mode=2 (FloorDiv)y = floor(x1 / x2) - 新增 mode 属性校验与分支计算逻辑(kernel 侧根据 mode 选择 Div/Trunc/Floor 路径) - 新增数据类型支持:BFLOAT16 / INT32 / INT16(同时支持 FLOAT32 / FLOAT16) - 在 op_api 层完成广播对齐:通过 l0op::BroadcastTox1/x2 广播到输出形状,kernel 侧按同形状逐元素计算 - kernel 实现使用手写 LocalTensor 流水线(CopyIn / Compute / CopyOut),并在关键向量计算之间加入同步: - DataCopyPad:用于尾块/非对齐尾段的数据搬运,避免尾部数据丢失 - PipeBarrier<PIPE_V>:用于向量计算间的同步 - 平台支持信息:div_v3/README.md 标注支持 Atlas A2/A3(实际 AICore 配置以代码中的 ascend910b / ascend910_93 为准) | # | 原问题 | 涉及文件 | div_v3 状态 | 解决位置 | |---|--------|---------|------------|---------| | 1 | typeSize 获取方式 | tiling.cpp | **已解决** | ge::TypeUtils::GetDataTypeLength (L114-115) | | 2 | 魔鬼数字 32 | tiling.cpp | **已解决** | 用 Ops::Base::GetUbBlockSize(context) 代替 | | 3 | 对齐计算用 CeilAlign | tiling.cpp | **已解决** | 整体 tiling 逻辑重构,手写公式替换为 Ops::Base::CeilDiv | | 4 | 16M workspace 不需要 | tiling.cpp | **已解决** | 改用 GetLibApiWorkSpaceSize() (L72) | | 5 | 核数写死为 8 | tiling.cpp | **已解决** | 动态计算 min(coreNum, blocksTotal) (L148-159) | | 6 | ascend910_95 名称错误 | def.cpp | **已解决** | 删除,仅保留合法名称 (L53) | | 7 | half 中间缓冲区无 DoubleBuffer | div_v3.h | **设计变更** | 中间缓冲区用 TBuf,IO 队列用 TQue 双缓冲 | | 8 | Vector 计算间缺同步 | div_v3.h | **已解决** | 所有连续 Vector 指令间插入 PipeBarrier<PIPE_V>() | | 9 | A3 也需要支持 | def.cpp + README | **已修复** | 新增 ascend950 配置 | | 10 | 添加 bf16 支持 | def.cpp | **已解决** | 支持 5 种类型含 BF16 (L22) | | 11 | infershape 误用 optiling 命名空间 | infershape.cpp | **已解决** | 移除 tiling_util.h 依赖 | | 12 | 不支持广播 | aclnn_div_v3.cpp | **已解决** | op_api 层 BroadcastTo 完成广播 (L148-155) | | 13 | GetNodeName 后重复算子名 | infershape.cpp | **已解决** | 日志不再重复添加算子名前缀 | | 14 | 缺少 dtype 推导 | infershape.cpp | **设计覆盖** | def.cpp 位置对应自动推导(与 math/div 一致) | | 15 | 缺少 -1/-2 shape 推导 | infershape.cpp | **已解决** | *yShape = *xShape 天然传递动态 shape | ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1151 ## 测试 - 新增示例测试入口: - examples/test_aclnn_div_v3.cpp:循环验证 mode=0/1/2(RealDiv/TruncDiv/FloorDiv),shape 使用 {4, 256} - examples/test_geir_div_v3.cpp:以 GE 图方式构建 DivV3,设置 mode=2 (FloorDiv),并将输出写入 ./div_v3_output_*.bin ## 文档更新 - 新增 experimental/math/div_v3/README.md - 新增 experimental/math/div_v3/docs/aclnnDivV3.md ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!19942 个月前
feat(experimental): replace div_mod with div_v3 Co-authored-by: wyb780310<wangyubo37@huawei.com> # message auto-generated for no-merge-commit merge: !1994 merge master into master feat(experimental): replace div_mod with div_v3 Created-by: wyb780310 Commit-by: wyb780310 Merged-by: cann-robot Description: ## 描述 本 PR 将experimental/math/div_v3, 用更清晰的 mode 属性来实现与官方 aclnnDivMod 对齐的除法语义。基于 div_mod PR 审视意见,对算子进行了完全重构: 主要改动如下: - 重新定义算子语义为“带 mode 参数的除法”(单输出 y),覆盖: - mode=0 (RealDiv)y = x1 / x2 - mode=1 (TruncDiv)y = trunc(x1 / x2) - mode=2 (FloorDiv)y = floor(x1 / x2) - 新增 mode 属性校验与分支计算逻辑(kernel 侧根据 mode 选择 Div/Trunc/Floor 路径) - 新增数据类型支持:BFLOAT16 / INT32 / INT16(同时支持 FLOAT32 / FLOAT16) - 在 op_api 层完成广播对齐:通过 l0op::BroadcastTox1/x2 广播到输出形状,kernel 侧按同形状逐元素计算 - kernel 实现使用手写 LocalTensor 流水线(CopyIn / Compute / CopyOut),并在关键向量计算之间加入同步: - DataCopyPad:用于尾块/非对齐尾段的数据搬运,避免尾部数据丢失 - PipeBarrier<PIPE_V>:用于向量计算间的同步 - 平台支持信息:div_v3/README.md 标注支持 Atlas A2/A3(实际 AICore 配置以代码中的 ascend910b / ascend910_93 为准) | # | 原问题 | 涉及文件 | div_v3 状态 | 解决位置 | |---|--------|---------|------------|---------| | 1 | typeSize 获取方式 | tiling.cpp | **已解决** | ge::TypeUtils::GetDataTypeLength (L114-115) | | 2 | 魔鬼数字 32 | tiling.cpp | **已解决** | 用 Ops::Base::GetUbBlockSize(context) 代替 | | 3 | 对齐计算用 CeilAlign | tiling.cpp | **已解决** | 整体 tiling 逻辑重构,手写公式替换为 Ops::Base::CeilDiv | | 4 | 16M workspace 不需要 | tiling.cpp | **已解决** | 改用 GetLibApiWorkSpaceSize() (L72) | | 5 | 核数写死为 8 | tiling.cpp | **已解决** | 动态计算 min(coreNum, blocksTotal) (L148-159) | | 6 | ascend910_95 名称错误 | def.cpp | **已解决** | 删除,仅保留合法名称 (L53) | | 7 | half 中间缓冲区无 DoubleBuffer | div_v3.h | **设计变更** | 中间缓冲区用 TBuf,IO 队列用 TQue 双缓冲 | | 8 | Vector 计算间缺同步 | div_v3.h | **已解决** | 所有连续 Vector 指令间插入 PipeBarrier<PIPE_V>() | | 9 | A3 也需要支持 | def.cpp + README | **已修复** | 新增 ascend950 配置 | | 10 | 添加 bf16 支持 | def.cpp | **已解决** | 支持 5 种类型含 BF16 (L22) | | 11 | infershape 误用 optiling 命名空间 | infershape.cpp | **已解决** | 移除 tiling_util.h 依赖 | | 12 | 不支持广播 | aclnn_div_v3.cpp | **已解决** | op_api 层 BroadcastTo 完成广播 (L148-155) | | 13 | GetNodeName 后重复算子名 | infershape.cpp | **已解决** | 日志不再重复添加算子名前缀 | | 14 | 缺少 dtype 推导 | infershape.cpp | **设计覆盖** | def.cpp 位置对应自动推导(与 math/div 一致) | | 15 | 缺少 -1/-2 shape 推导 | infershape.cpp | **已解决** | *yShape = *xShape 天然传递动态 shape | ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1151 ## 测试 - 新增示例测试入口: - examples/test_aclnn_div_v3.cpp:循环验证 mode=0/1/2(RealDiv/TruncDiv/FloorDiv),shape 使用 {4, 256} - examples/test_geir_div_v3.cpp:以 GE 图方式构建 DivV3,设置 mode=2 (FloorDiv),并将输出写入 ./div_v3_output_*.bin ## 文档更新 - 新增 experimental/math/div_v3/README.md - 新增 experimental/math/div_v3/docs/aclnnDivV3.md ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!19942 个月前