| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
新增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 | 4 个月前 | |
新增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 | 4 个月前 | |
err_msg整改 Co-authored-by: sikaiwei<sikaiwei1@h-partners.com> # message auto-generated for no-merge-commit merge: !3358 merge err_msg into 9.1.0 err_msg整改 Created-by: sikaiwei Commit-by: sikaiwei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> stateless_random_normal_v3和random_uniform_int_v2的ERRMSG整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 冒烟均已跑过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:err_msg整改 See merge request: cann/ops-math!3358 | 1 个月前 | |
新增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 | 4 个月前 | |
新增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 | 4 个月前 | |
新增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 | 4 个月前 | |
fix: 修复 README 断链问题(共 9 处) Co-authored-by: StoneChan_<chensitong2@huawei.com> # message auto-generated for no-merge-commit merge: !2805 merge fix-readme-broken-links into master fix: 修复 README 断链问题(共 9 处) Created-by: StoneChan_ Commit-by: StoneChan_ Merged-by: cann-robot Description: ## 问题概述 通过断链扫描发现 ops-math 仓库 README.md 中存在 9 处断链,影响用户查阅示例代码和接口文档。 ## 修复内容 ### 1. 文件不存在导致的断链(6 处) - conversion/pad_v2/README.md: 修正 examples 链接路径(添加 arch35/ 层级) - experimental/math/acosh/README.md: 删除不存在的 inplace 版本链接 - experimental/math/reduce_mean_with_count/README.md: 删除占位链接 - experimental/math/atan_grad/README.md: 删除不存在的 docs 目录链接,标注待补充 ### 2. 链接换行导致的断链(3 处) - random/stateless_random_normal_v3/README.md: 合并跨行链接 - math/nan_to_num/README.md: 合并跨行链接 - conversion/matmul_v2_compress_dequant/README.md: 合并跨行链接 ## 关联 Issue Closes #1582 See merge request: cann/ops-math!2805 | 2 个月前 |
StatelessRandomNormalV3
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:根据指定的均值(mean)和标准差(stdev)生成服从正态分布的随机数张量,使用基于计数器的Philox随机数生成算法,支持mean和stdev为标量或张量。
-
计算公式:
result=StatelessRandomNormalV2+Mul(std)+Add(mean)result = StatelessRandomNormalV2 + Mul(std) + Add(mean) result=StatelessRandomNormalV2+Mul(std)+Add(mean)
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| shape | 输入 | 输出张量的形状。 | INT64、INT32 | ND |
| key | 输入 | 用于基于计数器的随机数生成算法的秘钥。 | UINT64 | ND |
| counter | 输入 | 用于基于计数器的随机数生成算法的初始计数值。 | UINT64 | ND |
| mean | 输入 | 正态分布的均值,支持标量或与输出同形状的张量。 | FLOAT | ND |
| stdev | 输入 | 正态分布的标准差,支持标量或与输出同形状的张量。 | FLOAT | ND |
| y | 输出 | 输出指定形状的正态分布随机值。 | FLOAT、BF16、FLOAT16 | ND |
| dtype | 属性 | 可选属性,指定输出数据类型。 | INT | - |
约束说明
无
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_normal_float_float | 通过aclnnNormalFloatFloat接口方式调用stateless_random_normal_v3算子。 |
| aclnn调用 | test_aclnn_normal_float_tensor | 通过aclnnNormalFloatTensor接口方式调用stateless_random_normal_v3算子。 |
| aclnn调用 | test_aclnn_normal_tensor_float | 通过aclnnNormalFloatTensor接口方式调用stateless_random_normal_v3算子。 |
| aclnn调用 | test_aclnn_normal_tensor_tensor | 通过aclnnNormalTensorTensor接口方式调用stateless_random_normal_v3算子。 |