| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(expint): 算子质量加固——x=+inf修复+TPL移除+双缓冲+产品表修正 Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !5679 merge codex/expint-hardening into master fix(expint): 算子质量加固——x=+inf修复+TPL移除+双缓冲+产品表修正 Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 变更说明 Expint 转测共性问题与编码红线修复 + 检视意见修复(11 文件,+489/-624)。 ### 修改清单(问题 → 修复) | 修改 | 对应问题 | |------|---------| | op_kernel/expint_kernel.h:边界比较基准由钳制后的 xFp32 改为原始输入 xInput(x<0→NaN / x=+inf→+inf / x=0→-inf 三链)+ 新增 x>88 恒等变形重算通道 Ei(x)=exp(x-88)·(e^88/x)·S(x);双缓冲 BUFFER_NUM 1→2(FP32 路径 initBuf 流式 + SetFlag/WaitFlag 显式同步,FP16/BF16 走 TQue 内建同步);TPipe 成员改为 TPipe* 指针经 Init 传入 | 编码红线 P1:x=+inf 死分支(钳制后 xFp32 恒 ≤88,+inf 判断永不触发)+ 检视 TOPK-6(x∈(88,93.2] 有限大值输出恒为 Ei(88),错一个数量级)+ 检视 PERF-3(FP32 路径 MTE2/Vector 零重叠)+ zhanw_coding 检视(TPipe 类外定义利于常量折叠,cdist/cummin/dense_bincount 同款指针传入模式) | | op_kernel/arch35/expint_tiling_key.h 删除(kernel 改 DTYPE_X 标准实例化 + REGISTER_TILING_DEFAULT) | 编码红线 P1:TPL 模板入参非标机制,全仓孤例且 dtype 双真值源(转测第 7 项 baseline FAIL) | | op_kernel/expint_apt.cpp → expint.cpp + def.cpp opFile 同步;入口补 KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY);TPipe 入口函数栈上定义后指针传入 | 编码红线 P1:_apt 非标命名(仓内最新波次均为无后缀);AIV 标记为仓内惯例对齐(同类逐元素算子 acos/sin/tanh/erf 等 11/12 均有,最新模板标配) | | op_graph/expint_proto.h:**保持原始接口不动**(TensorType 仍为 {BF16,FP16,FLOAT,DOUBLE},与 master 逐字节一致) | tang-lei01 检视意见"double不能去掉":proto 为接口类型族声明(图类型检查层),def.cpp 为内核注册层(FP16/FP32/BF16),两层各司其职 | | op_host/arch35/expint_tiling_arch35.cpp:新增 CheckFormat() 运行时 ND 校验 + SetBlockDim 返回值校验 + UB 缓冲预算与双缓冲布局对齐 + MAX_COPY_BYTES=65535 防 blockLen(uint16_t) 回绕 + TPL 参数删除配套 | 转测 10-格式(REVIEW→纵深防御:TTK 实测 GE 对 vendor 算子自动转换而非拒绝,算子侧显式兜底)+ 检视 TOPK-1 + SEC-8.4 + PERF-3 配套 | | op_host/expint_infershape.cpp:局部变量命名改小驼峰 | 检视 GEN 命名规范 | | README.md:产品表 A2 ×→√(ascend910b ini 有 [Expint] 注册)+ 约束说明补全(不支持 DOUBLE / 边界语义 / Shape 推导 / 0~8 维含标量空 Tensor 动态 Shape / 非连续自动转换)+ 调用说明同步样例路径并补动态 shape 条目 | 转测 15.1 产品(FAIL)+ 15.4 缺约束(FAIL)+ 15.2 非连续(WARN)+ zhanw_coding 检视(改 example 须同步 README) | | examples/CMakeLists.txt 删除 | zhanw_coding 检视:框架 build_example.sh 原生支持编译(ascend950 下自动发现 examples/ 与 examples/arch35/),仓内非 experimental 算子无一自带 example CMakeLists | | examples/test_geir_expint.cpp(扁平旧样例)删除,重写迁入 examples/arch35/test_geir_expint.cpp | 仓内布局惯例(dawsn/ndtri/log_space_d 样例均在 arch35);本算子仅注册 950,扁平路径无意义 | | examples/arch35/test_geir_expint.cpp(重写 300 行):14 值输入覆盖全 7 区间+特殊值+x>88 修正路径;memcpy_s→std::copy 去 securec 依赖;手写 GetDataTypeSize→ge::GetSizeByDataType;校验补 isinf 分支;位域常量具名、session nothrow | 转测 5-GEIR"校验输出"验收标准(原样例只跑不验)+ zhanw_coding 检视(GetSizeByDataType)+ 框架链接兼容(框架命令不含 -lc_sec)+ isinf 为真机实测暴露的存量校验缺陷(dump 逐元素 16/16 全对证明 kernel 无错)+ 检视 GEN/SEC 系列 | | examples/arch35/test_geir_expint_dynamic.cpp(新增 205 行,自包含单文件):-1 未知维 ×3 组 / -2 未知 Rank ×4 组(含 rank-0 标量),同图同 Session 多 shape 实跑校验;v1 ge::Session+ge::Tensor | 转测 5-GEIR 硬性要求(def 声明 DynamicShapeSupportFlag/DynamicRankSupportFlag,须有 -1/-2 可执行证明,无此样例该项停留 REMEDIATE)+ 框架链接兼容(框架命令不含 -lge_runner_v2,对齐 log_space_d 等 4/6 仓内动态样例的 v1 自包含惯例) | ### 接口分层说明(DT_DOUBLE 处理) proto 的 TensorType 是接口类型族声明,保持与上游原始定义一致(含 DT_DOUBLE);def.cpp 的 DataType 是内核注册层(FP16/FP32/BF16,与原始版一致未改动);未注册的 dtype 在选核阶段被明确拒绝。两层各司其职。 ### 仓外项说明 - ini 残留:位于 canndev 仓,非本仓修改范围 - golden 交付件与用例补充:归档于 operator-artifacts 仓(PR#93/PR#133) ## 验证 - 框架原生编译命令(g++ -lgraph -lge_runner -lgraph_base -lge_compiler)两样例编译通过 - 真机:静态样例全 PASS;动态样例 7/7(-1 ×3、-2 ×4 含 rank-0 标量) - build.sh --ops=expint --soc=ascend950 编译通过;pre-commit 全钩子绿(clang-format 18.1.8 / codespell / OAT) - TTK 两方 324/324、三方 GEIR 313/324(剩余 11 条为 fp32 中大 x 区间 rmse 存量特征,绝对误差 0.3% 优于两方阈值,详见归档报告) ## 关联的Issue - #3241 - #3335 See merge request: cann/ops-math!5679 | 27 天前 | |
[fix] 插件归位 Co-authored-by: nextyale<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4626 merge issue2302 into master [fix] 插件归位 Created-by: nextyale Commit-by: nextyale Merged-by: cann-robot Description: ## 描述 迁移算子插件到对应目录 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2302 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 迁移插件 See merge request: cann/ops-math!4626 | 2 个月前 | |
legacy下线:为AdaCast/SignBitsUnpack/Sinh/Spence/Tan新增tiling/infer调试日志+op_graph InferDataType迁移 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !4498 merge master into master legacy下线:为AdaCast/SignBitsUnpack/Sinh/Spence/Tan新增tiling/infer调试日志+op_graph InferDataType迁移 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 Legacy包下线整改:为AdaCast/SignBitsUnpack/Sinh/Spence/Tan 5个算子新增tiling/infer调试日志,补充spence op_graph InferDataType迁移。 ## 变更内容 - tiling入口新增OP_LOGD锚点日志,TilingData新增OP_LOGI日志 - InferShape新增OP_LOGI输出日志 - 补充spence_graph_infer.cpp(InferDataType迁移到op_graph,IMPL_OP注册) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 测试 <!-- 描述您如何测试这些更改。--> ## 文档更新 <!-- 如果有文档更新,请在这里描述。--> ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:Legacy包下线整改 See merge request: cann/ops-math!4498 | 1 个月前 | |
math仓算子适配350 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !5906 merge master into master math仓算子适配350 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 math仓算子适配350 ## 关联的Issue [math仓算子适配350](https://gitcode.com/cann/ops-math/issues/3463) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5906 | 17 天前 | |
fix(expint): 算子质量加固——x=+inf修复+TPL移除+双缓冲+产品表修正 Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !5679 merge codex/expint-hardening into master fix(expint): 算子质量加固——x=+inf修复+TPL移除+双缓冲+产品表修正 Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 变更说明 Expint 转测共性问题与编码红线修复 + 检视意见修复(11 文件,+489/-624)。 ### 修改清单(问题 → 修复) | 修改 | 对应问题 | |------|---------| | op_kernel/expint_kernel.h:边界比较基准由钳制后的 xFp32 改为原始输入 xInput(x<0→NaN / x=+inf→+inf / x=0→-inf 三链)+ 新增 x>88 恒等变形重算通道 Ei(x)=exp(x-88)·(e^88/x)·S(x);双缓冲 BUFFER_NUM 1→2(FP32 路径 initBuf 流式 + SetFlag/WaitFlag 显式同步,FP16/BF16 走 TQue 内建同步);TPipe 成员改为 TPipe* 指针经 Init 传入 | 编码红线 P1:x=+inf 死分支(钳制后 xFp32 恒 ≤88,+inf 判断永不触发)+ 检视 TOPK-6(x∈(88,93.2] 有限大值输出恒为 Ei(88),错一个数量级)+ 检视 PERF-3(FP32 路径 MTE2/Vector 零重叠)+ zhanw_coding 检视(TPipe 类外定义利于常量折叠,cdist/cummin/dense_bincount 同款指针传入模式) | | op_kernel/arch35/expint_tiling_key.h 删除(kernel 改 DTYPE_X 标准实例化 + REGISTER_TILING_DEFAULT) | 编码红线 P1:TPL 模板入参非标机制,全仓孤例且 dtype 双真值源(转测第 7 项 baseline FAIL) | | op_kernel/expint_apt.cpp → expint.cpp + def.cpp opFile 同步;入口补 KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY);TPipe 入口函数栈上定义后指针传入 | 编码红线 P1:_apt 非标命名(仓内最新波次均为无后缀);AIV 标记为仓内惯例对齐(同类逐元素算子 acos/sin/tanh/erf 等 11/12 均有,最新模板标配) | | op_graph/expint_proto.h:**保持原始接口不动**(TensorType 仍为 {BF16,FP16,FLOAT,DOUBLE},与 master 逐字节一致) | tang-lei01 检视意见"double不能去掉":proto 为接口类型族声明(图类型检查层),def.cpp 为内核注册层(FP16/FP32/BF16),两层各司其职 | | op_host/arch35/expint_tiling_arch35.cpp:新增 CheckFormat() 运行时 ND 校验 + SetBlockDim 返回值校验 + UB 缓冲预算与双缓冲布局对齐 + MAX_COPY_BYTES=65535 防 blockLen(uint16_t) 回绕 + TPL 参数删除配套 | 转测 10-格式(REVIEW→纵深防御:TTK 实测 GE 对 vendor 算子自动转换而非拒绝,算子侧显式兜底)+ 检视 TOPK-1 + SEC-8.4 + PERF-3 配套 | | op_host/expint_infershape.cpp:局部变量命名改小驼峰 | 检视 GEN 命名规范 | | README.md:产品表 A2 ×→√(ascend910b ini 有 [Expint] 注册)+ 约束说明补全(不支持 DOUBLE / 边界语义 / Shape 推导 / 0~8 维含标量空 Tensor 动态 Shape / 非连续自动转换)+ 调用说明同步样例路径并补动态 shape 条目 | 转测 15.1 产品(FAIL)+ 15.4 缺约束(FAIL)+ 15.2 非连续(WARN)+ zhanw_coding 检视(改 example 须同步 README) | | examples/CMakeLists.txt 删除 | zhanw_coding 检视:框架 build_example.sh 原生支持编译(ascend950 下自动发现 examples/ 与 examples/arch35/),仓内非 experimental 算子无一自带 example CMakeLists | | examples/test_geir_expint.cpp(扁平旧样例)删除,重写迁入 examples/arch35/test_geir_expint.cpp | 仓内布局惯例(dawsn/ndtri/log_space_d 样例均在 arch35);本算子仅注册 950,扁平路径无意义 | | examples/arch35/test_geir_expint.cpp(重写 300 行):14 值输入覆盖全 7 区间+特殊值+x>88 修正路径;memcpy_s→std::copy 去 securec 依赖;手写 GetDataTypeSize→ge::GetSizeByDataType;校验补 isinf 分支;位域常量具名、session nothrow | 转测 5-GEIR"校验输出"验收标准(原样例只跑不验)+ zhanw_coding 检视(GetSizeByDataType)+ 框架链接兼容(框架命令不含 -lc_sec)+ isinf 为真机实测暴露的存量校验缺陷(dump 逐元素 16/16 全对证明 kernel 无错)+ 检视 GEN/SEC 系列 | | examples/arch35/test_geir_expint_dynamic.cpp(新增 205 行,自包含单文件):-1 未知维 ×3 组 / -2 未知 Rank ×4 组(含 rank-0 标量),同图同 Session 多 shape 实跑校验;v1 ge::Session+ge::Tensor | 转测 5-GEIR 硬性要求(def 声明 DynamicShapeSupportFlag/DynamicRankSupportFlag,须有 -1/-2 可执行证明,无此样例该项停留 REMEDIATE)+ 框架链接兼容(框架命令不含 -lge_runner_v2,对齐 log_space_d 等 4/6 仓内动态样例的 v1 自包含惯例) | ### 接口分层说明(DT_DOUBLE 处理) proto 的 TensorType 是接口类型族声明,保持与上游原始定义一致(含 DT_DOUBLE);def.cpp 的 DataType 是内核注册层(FP16/FP32/BF16,与原始版一致未改动);未注册的 dtype 在选核阶段被明确拒绝。两层各司其职。 ### 仓外项说明 - ini 残留:位于 canndev 仓,非本仓修改范围 - golden 交付件与用例补充:归档于 operator-artifacts 仓(PR#93/PR#133) ## 验证 - 框架原生编译命令(g++ -lgraph -lge_runner -lgraph_base -lge_compiler)两样例编译通过 - 真机:静态样例全 PASS;动态样例 7/7(-1 ×3、-2 ×4 含 rank-0 标量) - build.sh --ops=expint --soc=ascend950 编译通过;pre-commit 全钩子绿(clang-format 18.1.8 / codespell / OAT) - TTK 两方 324/324、三方 GEIR 313/324(剩余 11 条为 fp32 中大 x 区间 rmse 存量特征,绝对误差 0.3% 优于两方阈值,详见归档报告) ## 关联的Issue - #3241 - #3335 See merge request: cann/ops-math!5679 | 27 天前 | |
feat: 补充expint算子op_host infershape UT Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !4060 merge feat/ut_expint into master feat: 补充expint算子op_host infershape UT Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: ## 描述 补充expint算子的op_host infershape级别单元测试,覆盖以下场景: - 各数据类型测试 - 不同维度测试 - 异常场景测试:nullptr输入输出、shape不匹配等 ## 关联的Issue #2465 ## 测试 - 编译验证:bash build.sh -u --soc=ascend950 --ops=expint --noexec 编译通过 ## 文档更新 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UT补充 **关联 Issue:** #2465 See merge request: cann/ops-math!4060 | 2 个月前 | |
math仓算子适配350 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !5906 merge master into master math仓算子适配350 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 math仓算子适配350 ## 关联的Issue [math仓算子适配350](https://gitcode.com/cann/ops-math/issues/3463) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5906 | 17 天前 | |
fix(expint): 算子质量加固——x=+inf修复+TPL移除+双缓冲+产品表修正 Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !5679 merge codex/expint-hardening into master fix(expint): 算子质量加固——x=+inf修复+TPL移除+双缓冲+产品表修正 Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 变更说明 Expint 转测共性问题与编码红线修复 + 检视意见修复(11 文件,+489/-624)。 ### 修改清单(问题 → 修复) | 修改 | 对应问题 | |------|---------| | op_kernel/expint_kernel.h:边界比较基准由钳制后的 xFp32 改为原始输入 xInput(x<0→NaN / x=+inf→+inf / x=0→-inf 三链)+ 新增 x>88 恒等变形重算通道 Ei(x)=exp(x-88)·(e^88/x)·S(x);双缓冲 BUFFER_NUM 1→2(FP32 路径 initBuf 流式 + SetFlag/WaitFlag 显式同步,FP16/BF16 走 TQue 内建同步);TPipe 成员改为 TPipe* 指针经 Init 传入 | 编码红线 P1:x=+inf 死分支(钳制后 xFp32 恒 ≤88,+inf 判断永不触发)+ 检视 TOPK-6(x∈(88,93.2] 有限大值输出恒为 Ei(88),错一个数量级)+ 检视 PERF-3(FP32 路径 MTE2/Vector 零重叠)+ zhanw_coding 检视(TPipe 类外定义利于常量折叠,cdist/cummin/dense_bincount 同款指针传入模式) | | op_kernel/arch35/expint_tiling_key.h 删除(kernel 改 DTYPE_X 标准实例化 + REGISTER_TILING_DEFAULT) | 编码红线 P1:TPL 模板入参非标机制,全仓孤例且 dtype 双真值源(转测第 7 项 baseline FAIL) | | op_kernel/expint_apt.cpp → expint.cpp + def.cpp opFile 同步;入口补 KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY);TPipe 入口函数栈上定义后指针传入 | 编码红线 P1:_apt 非标命名(仓内最新波次均为无后缀);AIV 标记为仓内惯例对齐(同类逐元素算子 acos/sin/tanh/erf 等 11/12 均有,最新模板标配) | | op_graph/expint_proto.h:**保持原始接口不动**(TensorType 仍为 {BF16,FP16,FLOAT,DOUBLE},与 master 逐字节一致) | tang-lei01 检视意见"double不能去掉":proto 为接口类型族声明(图类型检查层),def.cpp 为内核注册层(FP16/FP32/BF16),两层各司其职 | | op_host/arch35/expint_tiling_arch35.cpp:新增 CheckFormat() 运行时 ND 校验 + SetBlockDim 返回值校验 + UB 缓冲预算与双缓冲布局对齐 + MAX_COPY_BYTES=65535 防 blockLen(uint16_t) 回绕 + TPL 参数删除配套 | 转测 10-格式(REVIEW→纵深防御:TTK 实测 GE 对 vendor 算子自动转换而非拒绝,算子侧显式兜底)+ 检视 TOPK-1 + SEC-8.4 + PERF-3 配套 | | op_host/expint_infershape.cpp:局部变量命名改小驼峰 | 检视 GEN 命名规范 | | README.md:产品表 A2 ×→√(ascend910b ini 有 [Expint] 注册)+ 约束说明补全(不支持 DOUBLE / 边界语义 / Shape 推导 / 0~8 维含标量空 Tensor 动态 Shape / 非连续自动转换)+ 调用说明同步样例路径并补动态 shape 条目 | 转测 15.1 产品(FAIL)+ 15.4 缺约束(FAIL)+ 15.2 非连续(WARN)+ zhanw_coding 检视(改 example 须同步 README) | | examples/CMakeLists.txt 删除 | zhanw_coding 检视:框架 build_example.sh 原生支持编译(ascend950 下自动发现 examples/ 与 examples/arch35/),仓内非 experimental 算子无一自带 example CMakeLists | | examples/test_geir_expint.cpp(扁平旧样例)删除,重写迁入 examples/arch35/test_geir_expint.cpp | 仓内布局惯例(dawsn/ndtri/log_space_d 样例均在 arch35);本算子仅注册 950,扁平路径无意义 | | examples/arch35/test_geir_expint.cpp(重写 300 行):14 值输入覆盖全 7 区间+特殊值+x>88 修正路径;memcpy_s→std::copy 去 securec 依赖;手写 GetDataTypeSize→ge::GetSizeByDataType;校验补 isinf 分支;位域常量具名、session nothrow | 转测 5-GEIR"校验输出"验收标准(原样例只跑不验)+ zhanw_coding 检视(GetSizeByDataType)+ 框架链接兼容(框架命令不含 -lc_sec)+ isinf 为真机实测暴露的存量校验缺陷(dump 逐元素 16/16 全对证明 kernel 无错)+ 检视 GEN/SEC 系列 | | examples/arch35/test_geir_expint_dynamic.cpp(新增 205 行,自包含单文件):-1 未知维 ×3 组 / -2 未知 Rank ×4 组(含 rank-0 标量),同图同 Session 多 shape 实跑校验;v1 ge::Session+ge::Tensor | 转测 5-GEIR 硬性要求(def 声明 DynamicShapeSupportFlag/DynamicRankSupportFlag,须有 -1/-2 可执行证明,无此样例该项停留 REMEDIATE)+ 框架链接兼容(框架命令不含 -lge_runner_v2,对齐 log_space_d 等 4/6 仓内动态样例的 v1 自包含惯例) | ### 接口分层说明(DT_DOUBLE 处理) proto 的 TensorType 是接口类型族声明,保持与上游原始定义一致(含 DT_DOUBLE);def.cpp 的 DataType 是内核注册层(FP16/FP32/BF16,与原始版一致未改动);未注册的 dtype 在选核阶段被明确拒绝。两层各司其职。 ### 仓外项说明 - ini 残留:位于 canndev 仓,非本仓修改范围 - golden 交付件与用例补充:归档于 operator-artifacts 仓(PR#93/PR#133) ## 验证 - 框架原生编译命令(g++ -lgraph -lge_runner -lgraph_base -lge_compiler)两样例编译通过 - 真机:静态样例全 PASS;动态样例 7/7(-1 ×3、-2 ×4 含 rank-0 标量) - build.sh --ops=expint --soc=ascend950 编译通过;pre-commit 全钩子绿(clang-format 18.1.8 / codespell / OAT) - TTK 两方 324/324、三方 GEIR 313/324(剩余 11 条为 fp32 中大 x 区间 rmse 存量特征,绝对误差 0.3% 优于两方阈值,详见归档报告) ## 关联的Issue - #3241 - #3335 See merge request: cann/ops-math!5679 | 27 天前 |
Expint
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
- 算子功能:计算指数积分Ei(x) = PV ∫_{-∞}^{x} (eᵗ/t) dt(柯西主值积分),计算公式为:
Ei(x)=PV∫−∞xettdtEi(x) = PV \int_{-\infty}^{x} \frac{e^{t}}{t} \mathrm{d}t Ei(x)=PV∫−∞xtetdt
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待进行指数积分计算的入参,公式中的x。 | BFLOAT16、FLOAT16、FLOAT | ND |
| y | 输出 | 指数积分计算的出参,公式中的Ei(x)。 | BFLOAT16、FLOAT16、FLOAT | ND |
约束说明
- 不支持DOUBLE(FP64)数据类型。
- 输入x < 0时输出为NaN,x = 0时输出为-inf,x = +inf时输出为+inf。
- 输出的Shape与数据类型由框架根据输入推导(逐元素计算,输出与输入x一致),数据格式为ND。
- 支持0~8维ND Tensor,包括标量、空Tensor、动态Shape和动态Rank;不支持9维及以上Tensor。
- 非连续Tensor输入由框架自动转换为连续Tensor后执行。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用(静态Shape) | test_geir_expint | 通过图模式调用Expint算子。 |
| 图模式调用(动态Shape) | test_geir_expint_dynamic | 通过图模式调用Expint算子,支持未知维度(-1)与未知Rank(-2)场景。 |