已关闭
[Requirement|需求建议]: embedding_hash_table_apply_adam_w 算子高bit访存优化 #5823
AlfengYuan创建于 15 天前关闭于 15 天前
15 天前 关联了pull request:perf: float2/float4 for embedding_hash_table_apply_adam_w
AlfengYuan
15 天前 评论:
15 天前 评论:
15 天前 修改了issue 的描述
15 天前 将 alfengyuan 设为负责人
15 天前 关闭了 issue
15 天前 issue状态由 进行中 改变为 已完成
15 天前 添加了label:resolved


Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
Ascend 系列芯片在使用高bit访存的时候,同样数据量,高bit访存指令数更少,底层性能更好。
本需求针对 EmbeddingHashTableApplyAdamW 算子(arch35)引入两类 SIMT 优化:
(1)访存合并:fp32 偶数 dim 的 m/v/maxGradNorm/grad/values 五路状态由逐元素 4B 标量访存改为 float4(B128)/float2(B64) 短向量批量访存(dim%4==0 → float4,dim%2==0 → float2,运行时对齐检查兜底),独立 VF 函数隔离寄存器分配,legacy 路径代码生成零影响;
(2)高维 probe 摊销布局:dim>256 时旧公式 blockNum=N×⌈dim/256⌉,超出 keyNum 的 block 全部空转,probe 无法摊销;改为小 blockX 布局(legacy kernel 内 xLoop 一次 probe 走全程,xLoopSize=⌈dim/blockX⌉ 由 kernel 推导),全 dtype/奇偶生效,且与旧公式输出位级一致。
桶格式/tiling 字段/flag 位语义/哈希函数零改动,与 hash 家族跨算子契约完全兼容。
Origin(信息来源)
华为海思
Benefit / Necessity(价值/作用)
推荐场景,hashTable 类算子,大 embedding_dim 更新场景,probe 与元素更新双瓶颈。
优化后(950PR,N=2^20,B=2^21,min 耗时,fp32 全 dim 1024 档 + fp16 逐档标定):
Design(设计方案)
SIMT 宽带提升,单次访存粒度越大性能越好,B128 > B64 > B32。
(1)合并访存 VF(fp32 偶数 dim∈[6,128]{26,62} 或 dim>736):独立 VF ComputeAdamWMergedFp32,两相 load/compute/store 压寄存器峰值;dim%4==0 → float4(B128),%4==2 → float2(B64);行偏移 16B 对齐运行时判定,极端非对齐兜底回退 float2;blockX 主窗口封顶 4(dim≥88 为 8,probe/key 并行度主导)、高窗口封顶 32(元素吞吐主导)。tiling/kernel 分派条件逐字一致(布局契约)。
(2)probe 摊销布局(dim 257~736 全 dtype/奇偶 + dim>736 的 fp16/奇数档):blockNum 由 N×⌈dim/256⌉(超额 block 空转)改为 ⌈N/by⌉,fp32 bx=32/by=16、fp16 bx=64/by=8(fp16 在 bx=32 下 even 344~352/奇数 641~767 实测稳定回退 0.93~0.99×,bx=64 后全 768 档 1.017~2.976×;两 dtype 布局分叉为实测标定结果);legacy kernel 内 xLoop 全覆盖,与旧公式位级一致(dim 258~1024 含奇数/amsgrad 逐字节比对验证)。
(3)回退策略(全 dim 扫描标定,非抽样):dim 26/62 合并实测 0.975× 稳定回退、dim 130~256 旧大 blockX 单 pass 流式已近最优(合并 0.88~0.96×),均保持 legacy 旧公式;fp16 dim≤256 保持旧公式。
(4)兼容性:桶格式/tiling 字段/flag 位语义/MurmurHash3 全部未动,hash 家族其他算子(init/lookup/export/import 及 canndev evict)不受影响。
实测性能(950PR,N=2^20,B=2^21,min 耗时):
验证:e2e 真机五算子 sweep 全场景矩阵 150 用例全 PASS(init 36/36、lookup 54/54、export 11/11、import 9/9、adamw 40/40,adamw 含 dim>256 新增用例与 fp16 高维档);tiling UT 4/4 PASS(含分派窗口契约断言 7 组);双机复测结论一致。
关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/10323