已关闭
[Requirement|需求建议]: 910b新增算子实现slogdet #1750
zhaohujie创建于  6月1日关闭于  6月22日
zhaohujie
zhaohujie
6月1日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

一、背景信息 (必填)

ops-math 中 math/slogdet 当前是 aclnn-only 转发壳(转发到 l0op::LogMatrixDeterminant,无原生 kernel)。本需求为 ascend910b 贡献 原生 AscendC 实现的 Slogdet 算子(registry-invoke,自带 Kernel/Tiling),避免 AICPU 回退。

二、价值/作用 (必填)

对标 torch.linalg.slogdet:对(batch)方阵计算行列式符号 sign 与 log|det|,双输出 (signOut, logOut)。log 域计算数值稳定,广泛用于行列式/对数似然/协方差等场景。

三、设计方案 (必填)

3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)

Aclnn 直调(aclnnSlogdet 两段式);PyTorch 经 aclnn 适配。

3.2 总体设计
3.2.1 算子支持的数据类型

FLOAT (fp32) only(首版;fp64/COMPLEX 暂缓)。

3.2.2 host侧设计
  • op_def(单输入 self,双输出 signOut/logOut,ND);
  • infershape(输出 = self.shape[:-2]);
  • tiling(batch 按核切 GetBlockNum,双 TilingKey FULL/BLOCKED 按 UB 驻留切换,n>4095 拒绝,epsSingular floor 下发);
  • registry-invoke(REGISTER_TILING_DEFAULT + ASCENDC_TPL_*)。
3.2.3 kernel侧设计
  • 带部分主元 LU(P·A=L·U);
  • logOut=Σlog|U_ii|、signOut=(-1)^{swaps}·∏sign(U_ii),奇异→-inf/0;
  • FULL(全驻留 UB)+ BLOCKED(列分块 + GM workspace,消元行块化);
  • 分段 argmax 还原 n>64 全局主元行号;
  • 相对奇异阈值 max(n·FLT_EPSILON·maxPiv, 1e-30)。
3.3 支持硬件

Atlas A2(ascend910b / Ascend910B3)

3.4 算子约束限制

  • 仅 fp32;
  • 方阵 [*,n,n],n∈[1,4095];
  • 无广播;
  • 输入禁含 Inf/NaN;
  • 图模式(GE IR)RunGraph 受限(OpType 与 CANN 内置 Slogdet 冲突,aclnn/eager 路径完全可用);
  • fp64/COMPLEX 未支持。

💡 备注(选填)

likedislike
zhaohujie
zhaohujie
6月1日 评论:

/assign @zhaohujie

likedislike
CANN-robotCANN-robot成员
6月1日 将 zhaohujie 设为负责人
zhaohujiezhaohujie
6月1日 修改标题为 “[Requirement|需求建议]: 910b新增算子实现slogdet”,原标题为“[Requirement|需求建议]: 910B A2新增算子实现slogdet”
CANN-robotCANN-robot成员
6月22日 关闭了 issue
CANN-robotCANN-robot成员
6月22日 添加了label:resolved