/label add triaged


/label add good-first-issue


认领这个任务
欢迎认领任务,请参考https://gitcode.com/Ascend/DrivingSDK/issues/215 社区任务池明确该任务的:
- 完成的截止日期
- 开发进展反馈
- 微信答疑群
- 任务交付注意事项
等信息。如果您同时认领了多项任务,但无法都能进行投入,可以在部分任务中回复退出.
麻烦您加入到对应微信群,群备注名修改为"社区任务+您的gitcode账号", 后续有相关消息和问题都可以在微信群咨询答疑。 等您加入到微信群后,我这边会在社区任务池里面登记任务责任人。


认领这个任务


认领这个任务
欢迎认领任务,请参考https://gitcode.com/Ascend/DrivingSDK/issues/215 社区任务池明确该任务的:
- 完成的截止日期
- 开发进展反馈
- 微信答疑群
- 任务交付注意事项
等信息。如果您同时认领了多项任务,但无法都能进行投入,可以在部分任务中回复退出.
麻烦您加入到对应微信群,群备注名修改为"社区任务+您的gitcode账号", 后续有相关消息和问题都可以在微信群咨询答疑。 等您加入到微信群后,我这边会在社区任务池里面登记任务责任人。
已添加微信群


认领这个任务
欢迎认领任务,请参考https://gitcode.com/Ascend/DrivingSDK/issues/215 社区任务池明确该任务的:
- 完成的截止日期
- 开发进展反馈
- 微信答疑群
- 任务交付注意事项
等信息。如果您同时认领了多项任务,但无法都能进行投入,可以在部分任务中回复退出.
麻烦您加入到对应微信群,群备注名修改为"社区任务+您的gitcode账号", 后续有相关消息和问题都可以在微信群咨询答疑。 等您加入到微信群后,我这边会在社区任务池里面登记任务责任人。
本周进度:
- 仓库熟悉
- 华为云环境部署


认领这个任务
欢迎认领任务,请参考https://gitcode.com/Ascend/DrivingSDK/issues/215 社区任务池明确该任务的:
- 完成的截止日期
- 开发进展反馈
- 微信答疑群
- 任务交付注意事项
等信息。如果您同时认领了多项任务,但无法都能进行投入,可以在部分任务中回复退出.
麻烦您加入到对应微信群,群备注名修改为"社区任务+您的gitcode账号", 后续有相关消息和问题都可以在微信群咨询答疑。 等您加入到微信群后,我这边会在社区任务池里面登记任务责任人。
设计方案产出:
已识别瓶颈(按收益排序):
- [搬运/内存] source 重复读:每个 query 重复搬全部 source。→ 主攻方向。
- [流水] 无 double buffer:
SetFlag/WaitFlag<V_MTE2>+MTE2_V使搬运与计算完全串行,无法重叠。 - [搬运] 每个 tile 用 3 次独立
DataCopyPad分别搬 x/y/z 行,单次搬运量小、指令多。 - [流水] 每个 task 的小同步开销:target 只搬 8 元素且每次带 V_MTE2 同步。
2. 优化设计(本次要做的事)
2.1 主优化:Source Tile 复用(target 分组)
把同 batch 的 G 个 target 点组成一组。对每个 source tile:只从 GM 搬一次,然后在 UB 内依次对组内 G 个 target 算距离并各自维护 top-k。GM source 读量降为约 1/G。
flowchart LR
subgraph before [原实现: 每个target都重搬source]
t1[target1] --> s1[读全部source]
t2[target2] --> s2[读全部source]
t3[target3] --> s3[读全部source]
end
subgraph after [优化: 一组target共享一次source搬运]
tile[读一个source tile 一次] --> g1[对target1算距离]
tile --> g2[对target2算距离]
tile --> g3[对target3算距离]
end
op_host依据平台 UB 大小(GetCoreNumAiv/ UB size,不硬编码)动态选G(如 4→2→1 回退) 和 tile 大小,写入 tiling。op_kernel新增 grouped path;组内每个 target 需独立的 top-k merge 缓冲,避免互相覆盖。- 保留单点 path 作为回退(小 N / 大 k / UB 放不下时)。
2.2 流水优化:source tile 搬运 double buffer
用双缓冲(ping-pong / TQue depth=2)让下一 tile 的 MTE2 搬运与当前 tile 的 Vector 计算重叠,隐藏搬运延迟。前提循环次数≥2。
2.3 搬运合并
source 每 batch 是 [3, N] 连续,x/y/z 三行可用一次 DataCopyPad(blockCount=3、blockLen=tile、srcStride=N-tile)替代 3 次调用,减少指令、提高带宽(目标单次≥16KB)。
2.4 精度保持(关键约束)
- idx 逐元素一致 是硬指标;必须保留原有
Muls(-1)取负 +Sort32/MrgSort的排序与 tie-break 语义,isFromKnn时的Mins(1e10)逻辑不变。 - 依据 工具-精度预检使用说明.md:
float32误差级别1e-7/达标率99.99%;int32误差1e-4/99.99%。KNN 的 UT 用assertRtolEqual对 idx 逐元素比对,比该标准更严。


已提交PR
@samulenzz 请参考dynamic_scatter(https://gitcode.com/Ascend/DrivingSDK/issues/292)补充开发文档


您好,当前Issue标记为resolved且有一段时间未进一步更新,因此我们将其标记为'stale'(闲置)状态。若您认为这是误操作,可通过添加任意评论来去除'stale'标签。标记为stale的Issue在4天内无更新活动将自动关闭。


已提交PR
@samulenzz 请参考dynamic_scatter(https://gitcode.com/Ascend/DrivingSDK/issues/292)补充开发文档


提交提案之前,请先检索仓库内是否已有相同的提案,如已有请在同一提案中进行讨论。
💻 需求背景、当前现状、期望实现的功能内容、具体的设计方案、以及测试方案
任务描述
验收标准
一、任务交付件
(1) AscendC代码
(2) 测试用例UT
二、验收标准:
1)精度/性能要求
精度:符合精度标准(https://gitcode.com/Ascend/msit/blob/master/msit/docs/llm/工具-精度预检使用说明.md#33-精度标准)
性能:对比原算子提升20%
2)实践文档:
算子优化文档
3)任务完成标准
本次任务完成标准为:
精度/性能(根据实际要求)达标,PR完成合入,实践文档提交到仓库issue。
对接人
@yuansunshun
替代方案
补充说明
欢迎加入社区,感谢您对社区的贡献 🎉!