| [CANNBot] ErfInv 算子支持 Ascend910B/910C/950 AscendC 实现
Co-authored-by: Xinxian Chen<chenxinxian1@huawei.com>
# message auto-generated for no-merge-commit merge:
!2370 merge feat/add-experimental-erf-inv into master
[CANNBot] ErfInv 算子支持 Ascend910B/910C/950 AscendC 实现
Created-by: vINyLogY
Commit-by: Xinxian Chen
Merged-by: cann-robot
Description: ## 描述
新增 ErfInv(逆误差函数)算子到 experimental/math/erf_inv/。
**算子功能**:计算逆误差函数 erfinv(x),使输出 y 满足 erf(y) = x。
**计算方法**:两段 Horner 多项式逼近(Mike Giles 算法),通过 CompareScalar + Select 实现区域混合。
**支持数据类型**:float16, float32
**目标芯片**:ascend910b, ascend910_93, ascend950
**交付件**:
- op_host/:算子定义、Shape 推导、Tiling 策略(动态核数 + pivot 均衡)
- op_kernel/:Kernel 入口 + KernelErfInv 实现 + C++ POD TilingData + TilingKey
- examples/test_aclnn_erf_inv.cpp:aclnn C++ 调用示例(含综合精度测试)
- CMakeLists.txt:add_all_modules_sources(OPTYPE erf_inv ACLNNTYPE aclnn)
## 关联的 Issue
无
## 测试
三平台全部验证通过:
| SoC | CANN | 验证方式 | 结果 |
|-----|------|---------|------|
| ascend910b | 8.5.0 | 真机 aclnn | ✅ 9/9 |
| ascend910_93 | 9.0.0 | 真机 aclnn | ✅ 9/9 |
| ascend950 | 9.0.0-beta.2 | CPU 模拟器 cannsim | ✅ 9/9 |
**精度详情**(9 个用例,ALL PASSED):
| 用例 | dtype | shape | 元素数 | 最大误差 |
|------|-------|-------|--------|---------|
| 固定值(含 ±0.999 边界) | float32 | (17,) | 17 | 5.96e-08 |
| 非对齐 | float32 | (3, 5) | 15 | 5.96e-08 |
| 中等 | float32 | (1024,) | 1024 | 8.94e-08 |
| 多维 | float32 | (32, 32) | 1024 | 8.94e-08 |
| 多核 | float32 | (100000,) | 100000 | 1.19e-07 |
| 固定值 | float16 | (17,) | 17 | 4.63e-04 |
| 非对齐 | float16 | (7,) | 7 | 4.63e-04 |
| 中等 | float16 | (1024,) | 1024 | 6.66e-04 |
| 多核 | float16 | (100000,) | 100000 | 6.85e-04 |
- **验证方法**:roundtrip erf(erfinv(x)) == x
## 文档更新
无
## 类型标签
- [ ] Bug 修复
- [x] 新特性
- [ ] 性能优化
- [ ] 文档更新
- [ ] 其他,请描述:
See merge request: cann/ops-math!2370 | 1 个月前 |