| Files | Last commit | Last update |
|---|---|---|
stateless_exponential与drop_out_v3新增capture模式 Co-authored-by: zyf0712<zhangyufei63@huawei.com> # message auto-generated for no-merge-commit merge: !5468 merge Capture into master stateless_exponential与drop_out_v3新增capture模式 Created-by: zyf0712 Commit-by: zyf0712 Merged-by: cann-robot Description: ## 描述 stateless_exponential与drop_out_v3新增capture模式 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6279 ## 测试 本地门槛用例、冒烟均通过 ## 文档更新 aclnnDropoutV3Tensor.md、aclnnStatelessExponentialTensor.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5468 | 1 month ago | |
fix(stateless_exponential): 优化lambd极小值约束的校验描述 Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !6464 merge fix/stateless-exponential-lambd-fp32-min into master fix(stateless_exponential): 优化lambd极小值约束的校验描述 Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 问题背景 stateless_exponential 的 lambd 参数经 IR Attr(FLOAT) 以 fp32 精度下发。当 lambd 为趋近于 0 的极小值(double 合法 > 0,但 < 2^-150 ≈ 7.006e-46)时,double→fp32 转换后下溢为 0,被 tiling 层以 lambd must be greater than 0 拒绝。该报错未说明根因,且 aclnn 层原值以 %f 打印(1e-46 显示为 0.000000),易被误读为入参校验缺陷。 对标竞品 PyTorch:lambd 接口恒为 double,host 按 double 原值校验 > 0;CUDA 上 fp32 输出对极小 lambd 放行并输出 +inf(IEEE 除零),不报错。本仓 self 仅支持 FP16/BF16/FP32,lambd 极小值在 fp32 精度下无有效计算意义(1/λ 恒溢出),故维持现有 <= 0 拦截口径不变。 ## 修改方案 **不改变任何判断逻辑**(拦截条件、拦截点、行为链完全不变),仅优化约束与校验描述,将约束口径明确为:**lambd 必须大于 0,且不能是 fp32 无法表示的极小值(double 转 fp32 后下溢为 0)**。 1. op_api/aclnn_stateless_exponential.cpp:CheckLambdability 报错补充极小值下溢说明;原值打印 %f 改为 %g(极小值不再显示 0.000000) 2. op_host/arch35/stateless_exponential_tiling_arch35.cpp:tiling 拒绝 reason 补充极小值下溢说明 3. docs/aclnnStatelessExponentialTensor.md:参数约束与错误码描述同步(定性描述,不承诺具体阈值:2^-150 依赖 IEEE 默认舍入模式,不宜作为对外承诺) 4. 新增 op_api 层 L2 UT(19 用例):lambd 正常域 / 小值 / subnormal / 极小值(double→fp32 下溢链路在 aclnn 层按 double 原值校验放行,构图通过)/ <=0 拒绝 / nullptr / dtype / 维度校验 5. 新增 aclnn 级 ST 用例:stateless_exponential 14 条、sim_thread_exponential 13 条(lambd 极小值/subnormal/FLT_MIN 边界),并为 sim_thread_exponential golden.py 补充 aclnnSpec ## Test Plan - [x] clang-format --dry-run -Werror 对改动 cpp 通过 - [x] ST csv 全字段 ast 解析与数值边界断言通过(float(1e-46)==0、float(1e-38) subnormal 保留、1e-37 全元素不溢出等) - [x] pre-commit 全量通过(clang-format / ruff check / ruff format / codespell / OAT) - [x] UT 宏展开参数序与 aclnnStatelessExponentialTensorGetWorkspaceSize 签名逐一核对 - [ ] CI 编译(compile 门禁) - [ ] ST 用例在 arch35 环境回归 Fixes #3765 See merge request: cann/ops-math!6464 | 20 days ago | |
fix(stateless_exponential): 优化lambd极小值约束的校验描述 Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !6464 merge fix/stateless-exponential-lambd-fp32-min into master fix(stateless_exponential): 优化lambd极小值约束的校验描述 Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 问题背景 stateless_exponential 的 lambd 参数经 IR Attr(FLOAT) 以 fp32 精度下发。当 lambd 为趋近于 0 的极小值(double 合法 > 0,但 < 2^-150 ≈ 7.006e-46)时,double→fp32 转换后下溢为 0,被 tiling 层以 lambd must be greater than 0 拒绝。该报错未说明根因,且 aclnn 层原值以 %f 打印(1e-46 显示为 0.000000),易被误读为入参校验缺陷。 对标竞品 PyTorch:lambd 接口恒为 double,host 按 double 原值校验 > 0;CUDA 上 fp32 输出对极小 lambd 放行并输出 +inf(IEEE 除零),不报错。本仓 self 仅支持 FP16/BF16/FP32,lambd 极小值在 fp32 精度下无有效计算意义(1/λ 恒溢出),故维持现有 <= 0 拦截口径不变。 ## 修改方案 **不改变任何判断逻辑**(拦截条件、拦截点、行为链完全不变),仅优化约束与校验描述,将约束口径明确为:**lambd 必须大于 0,且不能是 fp32 无法表示的极小值(double 转 fp32 后下溢为 0)**。 1. op_api/aclnn_stateless_exponential.cpp:CheckLambdability 报错补充极小值下溢说明;原值打印 %f 改为 %g(极小值不再显示 0.000000) 2. op_host/arch35/stateless_exponential_tiling_arch35.cpp:tiling 拒绝 reason 补充极小值下溢说明 3. docs/aclnnStatelessExponentialTensor.md:参数约束与错误码描述同步(定性描述,不承诺具体阈值:2^-150 依赖 IEEE 默认舍入模式,不宜作为对外承诺) 4. 新增 op_api 层 L2 UT(19 用例):lambd 正常域 / 小值 / subnormal / 极小值(double→fp32 下溢链路在 aclnn 层按 double 原值校验放行,构图通过)/ <=0 拒绝 / nullptr / dtype / 维度校验 5. 新增 aclnn 级 ST 用例:stateless_exponential 14 条、sim_thread_exponential 13 条(lambd 极小值/subnormal/FLT_MIN 边界),并为 sim_thread_exponential golden.py 补充 aclnnSpec ## Test Plan - [x] clang-format --dry-run -Werror 对改动 cpp 通过 - [x] ST csv 全字段 ast 解析与数值边界断言通过(float(1e-46)==0、float(1e-38) subnormal 保留、1e-37 全元素不溢出等) - [x] pre-commit 全量通过(clang-format / ruff check / ruff format / codespell / OAT) - [x] UT 宏展开参数序与 aclnnStatelessExponentialTensorGetWorkspaceSize 签名逐一核对 - [ ] CI 编译(compile 门禁) - [ ] ST 用例在 arch35 环境回归 Fixes #3765 See merge request: cann/ops-math!6464 | 20 days ago |