已关闭
[Requirement|需求建议]: 【社区任务】Polar 算子开发交付(任务编号 04-5) #1647
bububu创建于  5月23日关闭于  7月8日
bububu
5月23日 创建

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

一、任务背景

本 issue 用于提交 CANN 2026 社区任务 Polar 算子(任务编号 04-5)的开发交付与验收申请。算子语义对齐 cann/ops-math 中已有的 l0 拼接参考实现 math/complex/op_host/op_api/aclnn_polar.cpp,在其基础上新增 input/angle 不同维的 numpy 广播能力。

  • 队名:看不见我
  • Gitcode 账号:LiJianhao2
  • 设计文档评审:已通过华为评审(cann-competitions 任务清单 04_tasks/.../04-5-Polar/看不见我/docs/design.md,PR 〔160〕)

二、算子功能描述

polar(input, angle) = input · (cos(angle) + i·sin(angle))

项 说明
输入 input:fp32;angle:fp32
输出 out:complex64
维度 ≤ 8 维
广播 支持 input 与 angle 的 numpy 广播(含非尾轴广播、标量广播、双向广播)
平台 Atlas A2(910B4)

Scope 边界(与参考一致,刻意不扩展):不支持 fp64 / complex128,无 attr。complex64 在向量单元不支持,按交织的 fp32 实部/虚部对处理。

三、设计方案概述

  • 核心计算:单 kernel 内 Cos/Sin(angle) → Mul(input)×2(分别得实部、虚部)→ Gather 交织成 complex64 内存布局。复数交织使用 Init 阶段一次性矢量构造的静态 offset 表。
  • 广播置于 aclnn L2 层:仿 ops-math 标准模式(div_v3 / cross),L2 链路为 Contiguous → BroadcastTo → l0::Polar → ViewCopy,kernel 退化为同 shape elementwise。此举规避了 kernel 内广播的两类硬约束——fp32 索引在 outNumel > 2²⁴ 时失精、广播侧整块入 UB 的容量上限。
  • 集成形态:ops-math experimental/math/polar/,对标 addcdiv/floor;ACLNNTYPE aclnn_exclude 配手写 op_api(承载 BroadcastTo L2 链路)。

四、交付内容

  1. 算子工程代码:experimental/math/polar/(op_host / op_kernel / op_api / op_graph / CMakeLists)
  2. 设计文档(已通过评审):docs/design.md
  3. 测试用例:官方 AscendOpTest 用例集(权威精度判据)、pybind 功能用例、aclnn standalone 两段式调用样例
  4. 自测报告与测试步骤指导文档
  5. 交付私有仓库链接:〔填私有仓 URL〕(已为验收人员开通“开发者权限”)

五、测试结果

官方 AscendOpTest 50 个验收用例全部 PASS,覆盖同 shape 小/大(含 [16384,16384,2] = 537M 同 shape)、低维→高维广播、标量广播、双向多轴广播、高维非对齐等。

complex64 精度阈值说明:HIT1920 AscendOpTest 的 compare_complex 为纯绝对差且 default_acc 无 complex64 默认键,需在用例显式配置 err_threshold;大幅值用例取 [0.001, 0.001],小幅值用例取 [0.0001, 0.0001]。

六、验收申请

设计文档已过评审,代码与测试交付齐备、官方 AscendOpTest 50/50 全 PASS。现申请进入验收流程,私有仓库链接见上,验收人员“开发者权限”已开通,请安排验收。

likedislike
Bbububu
5月23日 关联了pull request:【CANN开源开放社区任务】【社区任务】AscendC实现Polar算子贡献
sunchun成员
5月25日 评论:

/assign @LiJianhaoo2

likedislike
CANN-robot
CANN-robot成员
5月25日 评论:

Notice

This issue can not be assigned to LiJianhaoo2. Please try to assign to the repository members.

likedislike
陈思陈思成员
7月3日 将 LiJianhao2 设为负责人
CANN-robotCANN-robot成员
7月8日 关闭了 issue
CANN-robotCANN-robot成员
7月8日 添加了label:resolved