Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
当前 ops-math 在 Ascend 950 上已有 KthValue、Sort、TopKV2 等有序选择/排序基础能力,但缺少沿指定维度同时返回中位数值和源索引的 Median、NanMedian 算子。直接为两个新算子各自维护完整排序实现会重复调度、workspace 和稳定索引逻辑,也容易造成 NaN、重复值及 ±0 等特殊值语义不一致。
本需求新增 Median 和 NanMedian,并复用 KthValue 的多调度选择框架:
aclnn_exclude
以 KthValue 为统一选择引擎,在 tiling data 中增加 medianMode:
medianMode
STATIC
PROPAGATE_NAN
IGNORE_NAN
Host 侧继续选择既有 KthValue schedule;Kernel 侧在各 schedule 的加载/选择阶段统一完成 NaN 归一化、有效元素计数和实际 rank 解析。整数类型不进行 NaN 扫描,保持原静态 k 快路径。
Median/NanMedian 输入 x 与输出 y 支持:
x
y
indices 固定为 int64;所有输入输出均为 ND。属性 dim 为可选 int64,默认 -1。
indices
dim
OpDef/InferShape
Tiling
(axisLen - 1) / 2
公共化
NaN 与 rank
(nonNanCount - 1) / 2
调度复用
稳定顺序
[-rank, rank - 1]
[2, 2048]
💡 备注(选填) 验收重点覆盖 11 种 dtype、末轴/非末轴、动态 shape/rank、负 dim、重复值、signed zero、普通 NaN、全 NaN,以及 KthValue/Sort/TopKV2 共享路径回归。
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
一、背景信息 (必填)
当前 ops-math 在 Ascend 950 上已有 KthValue、Sort、TopKV2 等有序选择/排序基础能力,但缺少沿指定维度同时返回中位数值和源索引的 Median、NanMedian 算子。直接为两个新算子各自维护完整排序实现会重复调度、workspace 和稳定索引逻辑,也容易造成 NaN、重复值及 ±0 等特殊值语义不一致。
本需求新增 Median 和 NanMedian,并复用 KthValue 的多调度选择框架:
二、价值/作用 (必填)
三、设计方案 (必填)
3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
aclnn_exclude,本需求不新增独立的公开 aclnn wrapper;由仓内 L0/GE 注册通路使能。3.2 总体设计
以 KthValue 为统一选择引擎,在 tiling data 中增加
medianMode:STATIC:原 KthValue/整数 Median/NanMedian 的固定 k 路径。PROPAGATE_NAN:浮点 Median;行内存在 NaN 时选择稳定排序后的首个 NaN。IGNORE_NAN:浮点 NanMedian;按非 NaN 数量动态计算 lower-median rank。Host 侧继续选择既有 KthValue schedule;Kernel 侧在各 schedule 的加载/选择阶段统一完成 NaN 归一化、有效元素计数和实际 rank 解析。整数类型不进行 NaN 扫描,保持原静态 k 快路径。
3.2.1 算子支持的数据类型
Median/NanMedian 输入
x与输出y支持:indices固定为 int64;所有输入输出均为 ND。属性dim为可选 int64,默认 -1。3.2.2 host侧设计
OpDef/InferShape
Tiling
(axisLen - 1) / 2;内部沿用 KthValue 的一基 k 参数。medianMode:浮点 Median 传播 NaN,浮点 NanMedian 忽略 NaN,整数统一走 STATIC。公共化
3.2.3 kernel侧设计
NaN 与 rank
(nonNanCount - 1) / 2;全 NaN 行保留 NaN 结果。调度复用
稳定顺序
3.3 支持硬件
3.4 算子约束限制
dim范围为[-rank, rank - 1]。[2, 2048];末轴沿用 KthValue 已有调度能力。💡 备注(选填)
验收重点覆盖 11 种 dtype、末轴/非末轴、动态 shape/rank、负 dim、重复值、signed zero、普通 NaN、全 NaN,以及 KthValue/Sort/TopKV2 共享路径回归。