| 新增stateless_random_uniform_v3和stateless_random_normal_v3及aclnn接口适配 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !2003 merge master into master 新增stateless_random_uniform_v3和stateless_random_normal_v3及aclnn接口适配 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1、优化StatelessRandomUniformV2/StatelessRandomNormalV2:新增了支持aclTensor*类型seed和offset参数的算子接口,允许直接传递设备张量,避免了D2H拷贝。同时,重构了tiling逻辑,将key和counter参数的读取职责从tiling阶段转移至kernel执行阶段,直接从全局内存读取,简化了流程并提升了灵活性。 2、新增StatelessRandomUniformV3/StatelessRandomNormalV3:完整实现了该融合算子,包括API接口、Tiling逻辑、内核实现及配置文件。该算子基于Philox算法生成随机数,并通过v3KernelMode属性支持不同计算模式,将范围缩放的线性计算内联到kernel内核中,实现了算子融合,提升了执行效率。 3、梳理以下aclnn接口,确保了在非tensor接口和tensor接口情况下都能正确调用使用: aclnnInplaceUniform、aclnnInplaceUniformTensor、aclnnInplaceRandom、aclnnInplaceRandomTensor 使以上四个接口能够在A5芯片下正确调用stateless_random_uniform_v3算子,输入类型为double的情况下调用stateless_random_uniform_v2和小算子拼接,保证精度正常,性能不劣化; aclnnInplaceNormal、aclnnInplaceNormalTensor使以上两个接口能够在A5芯片下正确调用stateless_random_normal_v3算子,输入类型为double的情况下调用stateless_random_normal_v2和小算子拼接,保证精度正常,性能不劣化; aclnnNormalFloatFloat、aclnnNormalFloatTensor、aclnnNormalTensorFloat、aclnnNormalTensorTensor使以上四个接口能够在A5芯片下正确调用stateless_random_normal_v3算子,输入类型为double的情况下调用stateless_random_normal_v2和小算子拼接,保证精度正常,性能不劣化 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1128 https://gitcode.com/cann/ops-math/issues/1129 https://gitcode.com/cann/ops-math/issues/1130 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> TTK测试、UT测试、蓝区冒烟、二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2003 | 7 months ago |
| 新增stateless_random_uniform_v3和stateless_random_normal_v3及aclnn接口适配 Co-authored-by: huairuchen<chenhuairu@huawei.com> # message auto-generated for no-merge-commit merge: !2003 merge master into master 新增stateless_random_uniform_v3和stateless_random_normal_v3及aclnn接口适配 Created-by: huairuchen Commit-by: huairuchen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1、优化StatelessRandomUniformV2/StatelessRandomNormalV2:新增了支持aclTensor*类型seed和offset参数的算子接口,允许直接传递设备张量,避免了D2H拷贝。同时,重构了tiling逻辑,将key和counter参数的读取职责从tiling阶段转移至kernel执行阶段,直接从全局内存读取,简化了流程并提升了灵活性。 2、新增StatelessRandomUniformV3/StatelessRandomNormalV3:完整实现了该融合算子,包括API接口、Tiling逻辑、内核实现及配置文件。该算子基于Philox算法生成随机数,并通过v3KernelMode属性支持不同计算模式,将范围缩放的线性计算内联到kernel内核中,实现了算子融合,提升了执行效率。 3、梳理以下aclnn接口,确保了在非tensor接口和tensor接口情况下都能正确调用使用: aclnnInplaceUniform、aclnnInplaceUniformTensor、aclnnInplaceRandom、aclnnInplaceRandomTensor 使以上四个接口能够在A5芯片下正确调用stateless_random_uniform_v3算子,输入类型为double的情况下调用stateless_random_uniform_v2和小算子拼接,保证精度正常,性能不劣化; aclnnInplaceNormal、aclnnInplaceNormalTensor使以上两个接口能够在A5芯片下正确调用stateless_random_normal_v3算子,输入类型为double的情况下调用stateless_random_normal_v2和小算子拼接,保证精度正常,性能不劣化; aclnnNormalFloatFloat、aclnnNormalFloatTensor、aclnnNormalTensorFloat、aclnnNormalTensorTensor使以上四个接口能够在A5芯片下正确调用stateless_random_normal_v3算子,输入类型为double的情况下调用stateless_random_normal_v2和小算子拼接,保证精度正常,性能不劣化 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1128 https://gitcode.com/cann/ops-math/issues/1129 https://gitcode.com/cann/ops-math/issues/1130 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> TTK测试、UT测试、蓝区冒烟、二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2003 | 7 months ago |
| feat(random): stateless_random_normal_v2/v3、stateless_uniform 支持 ascend960dt/ascend960pr 平台 Co-authored-by: wuchengwen_oh<wuchengwen4@huawei.com> # message auto-generated for no-merge-commit merge: !6175 merge feat/random-960-support into master feat(random): stateless_random_normal_v2/v3、stateless_uniform 支持 ascend960dt/ascend960pr 平台 Created-by: wuchengwen_oh Commit-by: wuchengwen_oh Merged-by: cann-robot Description: ## 描述 将 stateless_random_normal_v2、stateless_random_normal_v3、stateless_uniform 三个随机数算子的 Ascend 960 平台支持从 A6(ops-math-dev) 迁移到主线,支持 ascend960dt / ascend960pr 两颗芯片。 **迁移策略(少量修改→架构隔离,复用 arch35 目录)**:逐文件归一化比对(MicroAPI→Reg 改名、忽略换行缩进)后确认三者 kernel 逻辑与主线 arch35 版本完全等价,tiling 仅切分对齐粒度存在架构差异,故不新建 arch92 目录、不引入重复代码,差异按 NpuArch 精确等值判断隔离(SocVersion 枚举中 960 追加在末尾,不能用区间比较)。 改动内容: - **算子注册**:三个算子 def.cpp 增加 AddConfig("ascend960dt") / AddConfig("ascend960pr");CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT 与 SUPPORT_TILING_DIR 一一对应新增两颗芯片(tiling 复用 arch35)。 - **kernel 编译配置**:ascendc_config.json 为三个算子注册 ascend960dt/ascend960pr 的 compute_units 与 compile_options(-mllvm -cce-aicore-dcci-before-kernel-end=false),与主线既有 960dt 算子(MirrorPad/Pad/SplitV 等)一致;否则 960 编译将缺失该 DCCI 选项。 - **tiling 架构隔离**: - stateless_random_normal_v2:IsArch92() 按 NpuArch::DAV_9201/9202 判断,arch92 核间按 32 元素对齐、UB 按 256 元素向下对齐;arch35 保持原 512 字节核间对齐、32 字节 UB 向上对齐。CompileInfo 增加 isArch92 标记,覆盖 platformInfo 不可用时回退 CompileInfo 通路的判定。 - stateless_random_normal_v3:新增 BeforeProcess() 覆写,arch92 下将 coreAlignSize 由 512 改为 32;platformInfo 为空时保持默认值。 - stateless_uniform:tiling/kernel 与主线 arch35 完全一致,无需隔离。 - **kernel 架构宏隔离**:stateless_random_normal_v3 kernel 入口用 #if defined(__DAV_VEC__) 包裹(AIV_ONLY 且依赖仅 Vector 核提供的 RegBase VF 接口),避免 AIC 编译通道实例化。 - **op_api**:aclnn_normal_out.cpp 抽取 IsNormalV3SupportedArch(),Normal V3 兼容通路由仅 DAV_3510 扩展为 DAV_3510/DAV_9201/DAV_9202。 - **UT**:新增 stateless_uniform_tiling.h host shim(stateless_uniform kernel 引用 device SIMT builtin __mul_i32toi64,host 侧编译缺失导致其 op_kernel UT 链接失败;cmake 检测到 <op>_tiling.h 后 -include 注入全部 TU 提供等价实现,stateless_normal 等 5 个既有算子早已采用此写法)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3657 ## 测试 - op_host UT:30/30 通过(三个算子 tiling + infershape) - op_api UT:47/47 通过(Normal L2 四接口 + StatelessUniform L0) - 三个算子 ascend950 kernel 二进制构建通过;v3 的 __DAV_VEC__ 宏经 A/B 对比生成的 .o 与加宏前 MD5 完全一致(对 950 零影响) - arch92 tiling 算式对账:按 A6 公式算得编码 53876069761280 与 A6 自身提交的 UT 期望值一致;arch35 仍为 54563264528640,与主线一致 - libophost_math.so 全量编译通过;修改文件全部通过仓库 pre-commit(clang-format/end-of-file/codespell/OAT 合规) - 注:本地 CANN 包仅支持 ascend950,ascend960dt/ascend960pr 的 kernel 编译需在支持 960 的 CANN 版本上验证 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6175 | 22 days ago |
| feat(random): stateless_random_normal_v2/v3、stateless_uniform 支持 ascend960dt/ascend960pr 平台 Co-authored-by: wuchengwen_oh<wuchengwen4@huawei.com> # message auto-generated for no-merge-commit merge: !6175 merge feat/random-960-support into master feat(random): stateless_random_normal_v2/v3、stateless_uniform 支持 ascend960dt/ascend960pr 平台 Created-by: wuchengwen_oh Commit-by: wuchengwen_oh Merged-by: cann-robot Description: ## 描述 将 stateless_random_normal_v2、stateless_random_normal_v3、stateless_uniform 三个随机数算子的 Ascend 960 平台支持从 A6(ops-math-dev) 迁移到主线,支持 ascend960dt / ascend960pr 两颗芯片。 **迁移策略(少量修改→架构隔离,复用 arch35 目录)**:逐文件归一化比对(MicroAPI→Reg 改名、忽略换行缩进)后确认三者 kernel 逻辑与主线 arch35 版本完全等价,tiling 仅切分对齐粒度存在架构差异,故不新建 arch92 目录、不引入重复代码,差异按 NpuArch 精确等值判断隔离(SocVersion 枚举中 960 追加在末尾,不能用区间比较)。 改动内容: - **算子注册**:三个算子 def.cpp 增加 AddConfig("ascend960dt") / AddConfig("ascend960pr");CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT 与 SUPPORT_TILING_DIR 一一对应新增两颗芯片(tiling 复用 arch35)。 - **kernel 编译配置**:ascendc_config.json 为三个算子注册 ascend960dt/ascend960pr 的 compute_units 与 compile_options(-mllvm -cce-aicore-dcci-before-kernel-end=false),与主线既有 960dt 算子(MirrorPad/Pad/SplitV 等)一致;否则 960 编译将缺失该 DCCI 选项。 - **tiling 架构隔离**: - stateless_random_normal_v2:IsArch92() 按 NpuArch::DAV_9201/9202 判断,arch92 核间按 32 元素对齐、UB 按 256 元素向下对齐;arch35 保持原 512 字节核间对齐、32 字节 UB 向上对齐。CompileInfo 增加 isArch92 标记,覆盖 platformInfo 不可用时回退 CompileInfo 通路的判定。 - stateless_random_normal_v3:新增 BeforeProcess() 覆写,arch92 下将 coreAlignSize 由 512 改为 32;platformInfo 为空时保持默认值。 - stateless_uniform:tiling/kernel 与主线 arch35 完全一致,无需隔离。 - **kernel 架构宏隔离**:stateless_random_normal_v3 kernel 入口用 #if defined(__DAV_VEC__) 包裹(AIV_ONLY 且依赖仅 Vector 核提供的 RegBase VF 接口),避免 AIC 编译通道实例化。 - **op_api**:aclnn_normal_out.cpp 抽取 IsNormalV3SupportedArch(),Normal V3 兼容通路由仅 DAV_3510 扩展为 DAV_3510/DAV_9201/DAV_9202。 - **UT**:新增 stateless_uniform_tiling.h host shim(stateless_uniform kernel 引用 device SIMT builtin __mul_i32toi64,host 侧编译缺失导致其 op_kernel UT 链接失败;cmake 检测到 <op>_tiling.h 后 -include 注入全部 TU 提供等价实现,stateless_normal 等 5 个既有算子早已采用此写法)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3657 ## 测试 - op_host UT:30/30 通过(三个算子 tiling + infershape) - op_api UT:47/47 通过(Normal L2 四接口 + StatelessUniform L0) - 三个算子 ascend950 kernel 二进制构建通过;v3 的 __DAV_VEC__ 宏经 A/B 对比生成的 .o 与加宏前 MD5 完全一致(对 950 零影响) - arch92 tiling 算式对账:按 A6 公式算得编码 53876069761280 与 A6 自身提交的 UT 期望值一致;arch35 仍为 54563264528640,与主线一致 - libophost_math.so 全量编译通过;修改文件全部通过仓库 pre-commit(clang-format/end-of-file/codespell/OAT 合规) - 注:本地 CANN 包仅支持 ascend950,ascend960dt/ascend960pr 的 kernel 编译需在支持 960 的 CANN 版本上验证 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6175 | 22 days ago |
| 随机数算子新增st用例 Co-authored-by: zhaozi3<zhaozi3@h-partners.com> # message auto-generated for no-merge-commit merge: !6387 merge master into master 随机数算子新增st用例 Created-by: zhaozi3 Commit-by: zhaozi3 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 random 目录下 14 个此前缺少 ST 用例的随机数算子新增 Kernel 模式 ST 用例(tests/st/arch35/ttk_kernel__st.csv),共 75 条用例,补齐这些算子的 ST 测试覆盖。 涉及算子:drop_out_do_mask_v3、drop_out_v3_grad、random_uniform_int_v2、random_uniform_v2、stateless_bernoulli、stateless_normal、stateless_random、stateless_random_choice_with_mask、stateless_random_normal_v2、stateless_random_normal_v3、stateless_random_uniform_v2、stateless_random_uniform_v3、stateless_uniform、truncated_normal_v2。 ## 关联的Issue 关联 Issue:#3602 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:随机数算子新增st用例 See merge request: cann/ops-math!6387 | 25 days ago |
| feat(random): stateless_random_normal_v2/v3、stateless_uniform 支持 ascend960dt/ascend960pr 平台 Co-authored-by: wuchengwen_oh<wuchengwen4@huawei.com> # message auto-generated for no-merge-commit merge: !6175 merge feat/random-960-support into master feat(random): stateless_random_normal_v2/v3、stateless_uniform 支持 ascend960dt/ascend960pr 平台 Created-by: wuchengwen_oh Commit-by: wuchengwen_oh Merged-by: cann-robot Description: ## 描述 将 stateless_random_normal_v2、stateless_random_normal_v3、stateless_uniform 三个随机数算子的 Ascend 960 平台支持从 A6(ops-math-dev) 迁移到主线,支持 ascend960dt / ascend960pr 两颗芯片。 **迁移策略(少量修改→架构隔离,复用 arch35 目录)**:逐文件归一化比对(MicroAPI→Reg 改名、忽略换行缩进)后确认三者 kernel 逻辑与主线 arch35 版本完全等价,tiling 仅切分对齐粒度存在架构差异,故不新建 arch92 目录、不引入重复代码,差异按 NpuArch 精确等值判断隔离(SocVersion 枚举中 960 追加在末尾,不能用区间比较)。 改动内容: - **算子注册**:三个算子 def.cpp 增加 AddConfig("ascend960dt") / AddConfig("ascend960pr");CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT 与 SUPPORT_TILING_DIR 一一对应新增两颗芯片(tiling 复用 arch35)。 - **kernel 编译配置**:ascendc_config.json 为三个算子注册 ascend960dt/ascend960pr 的 compute_units 与 compile_options(-mllvm -cce-aicore-dcci-before-kernel-end=false),与主线既有 960dt 算子(MirrorPad/Pad/SplitV 等)一致;否则 960 编译将缺失该 DCCI 选项。 - **tiling 架构隔离**: - stateless_random_normal_v2:IsArch92() 按 NpuArch::DAV_9201/9202 判断,arch92 核间按 32 元素对齐、UB 按 256 元素向下对齐;arch35 保持原 512 字节核间对齐、32 字节 UB 向上对齐。CompileInfo 增加 isArch92 标记,覆盖 platformInfo 不可用时回退 CompileInfo 通路的判定。 - stateless_random_normal_v3:新增 BeforeProcess() 覆写,arch92 下将 coreAlignSize 由 512 改为 32;platformInfo 为空时保持默认值。 - stateless_uniform:tiling/kernel 与主线 arch35 完全一致,无需隔离。 - **kernel 架构宏隔离**:stateless_random_normal_v3 kernel 入口用 #if defined(__DAV_VEC__) 包裹(AIV_ONLY 且依赖仅 Vector 核提供的 RegBase VF 接口),避免 AIC 编译通道实例化。 - **op_api**:aclnn_normal_out.cpp 抽取 IsNormalV3SupportedArch(),Normal V3 兼容通路由仅 DAV_3510 扩展为 DAV_3510/DAV_9201/DAV_9202。 - **UT**:新增 stateless_uniform_tiling.h host shim(stateless_uniform kernel 引用 device SIMT builtin __mul_i32toi64,host 侧编译缺失导致其 op_kernel UT 链接失败;cmake 检测到 <op>_tiling.h 后 -include 注入全部 TU 提供等价实现,stateless_normal 等 5 个既有算子早已采用此写法)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3657 ## 测试 - op_host UT:30/30 通过(三个算子 tiling + infershape) - op_api UT:47/47 通过(Normal L2 四接口 + StatelessUniform L0) - 三个算子 ascend950 kernel 二进制构建通过;v3 的 __DAV_VEC__ 宏经 A/B 对比生成的 .o 与加宏前 MD5 完全一致(对 950 零影响) - arch92 tiling 算式对账:按 A6 公式算得编码 53876069761280 与 A6 自身提交的 UT 期望值一致;arch35 仍为 54563264528640,与主线一致 - libophost_math.so 全量编译通过;修改文件全部通过仓库 pre-commit(clang-format/end-of-file/codespell/OAT 合规) - 注:本地 CANN 包仅支持 ascend950,ascend960dt/ascend960pr 的 kernel 编译需在支持 960 的 CANN 版本上验证 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6175 | 22 days ago |
| docs: 修复 stateless_random_normal README 中 aclnnNormalTensorFloat 接口链接文字 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6489 merge docs/comment-cleanup-20261019-16 into master docs: 修复 stateless_random_normal README 中 aclnnNormalTensorFloat 接口链接文字 Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 random/stateless_random_normal_v2/README.md 与 random/stateless_random_normal_v3/README.md 中 aclnnNormalTensorFloat 接口所在行的链接文字错误。该行链接目标为 docs/aclnnNormalTensorFloat.md,但链接文字误写为 aclnnNormalFloatTensor,本次将链接文字修正为 aclnnNormalTensorFloat,使其与接口文档名称保持一致。 ## 关联的Issue - #3703 ## 测试 - pre-commit(含 OAT):通过 - Markdown 链接/图片检查:无新增失效项 - Markdown 代码围栏检查:通过 - 全部 26 个分支合并验证:无冲突 ## 文档更新 - random/stateless_random_normal_v2/README.md - random/stateless_random_normal_v3/README.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6489 | 20 days ago |
| docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !7113 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共409个文件):第一批(已合入)之外的其余全部译稿,覆盖conversion、examples、ge、math、random各类算子README译稿,以及CHANGELOG_en.md、.gitcode PR模板英文版等。 本批内全部仓内链接均指向master已有文件(含第一批已合入的21+2篇译稿),合入后本仓432篇英文文档全部就位,链接完整生效。 本批同时包含4篇基于最新源文档的增量更新(math/ada_cast、math/prod_force_se_a、math/sinkhorn、math/xlogy,对应上游近期文档变更)。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(本批全部相对链接仅指向master已有文件,无指向本PR外未提交文件的链接),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增409个英文译稿文件(*_en.md / .en-US.md),不修改任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7113 | 5 days ago |