| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
perf: float2/float4 for embedding_hash_table_apply_adam_w Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !10323 merge perf/adamw-b128 into master perf: float2/float4 for embedding_hash_table_apply_adam_w Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 EmbeddingHashTableApplyAdamW 算子(arch35)引入 SIMT 访存合并 + 高维 probe 摊销布局优化: (1)**合并访存 VF**(fp32 偶数 dim∈[6,128]\{26,62\} 或 dim>736):独立 VF ComputeAdamWMergedFp32,m/v/maxGradNorm/grad/values 五路状态 float4(B128)/float2(B64) 批量访存(dim%4==0→float4,%4==2→float2,运行时 16B 对齐判定兜底),两相 load/compute/store 压寄存器峰值;blockX 主窗口封顶 4(dim≥88 为 8)、高窗口封顶 32。tiling/kernel 分派条件逐字一致(布局契约)。 (2)**probe 摊销布局**(dim 257~736 全 dtype/奇偶 + dim>736 的 fp16/奇数档):旧公式 blockNum=N×⌈dim/256⌉ 超额 block 全空转,改为 fp32 bx=32/by=16、fp16 bx=64/by=8(fp16 bx=32 在 even 344~352/奇数 641~767 实测稳定回退 0.93~0.99×,bx=64 全档 ≥1.017×,两 dtype 分叉为实测标定);legacy kernel 内 xLoop(xLoopSize=⌈dim/blockX⌉ kernel 推导)一次 probe 走全程,与旧公式位级一致。 (3)**回退策略**(全 dim 扫描标定):dim 26/62(0.975× 稳定回退)、dim 130~256(旧布局已近最优)保持 legacy;fp16 dim≤256 保持旧公式。 (4)**兼容性**:桶格式/tiling 字段/flag 位语义/MurmurHash3 零改动,hash 家族算子不受影响。 **改动文件**: - hash/embedding_hash_table_apply_adam_w/op_kernel/arch35/embedding_hash_table_apply_adam_w.h:合并 VF + Process() 分派门控 - hash/embedding_hash_table_apply_adam_w/op_host/arch35/embedding_hash_table_apply_adam_w_tiling_arch35.cpp:分派窗口 + probe 摊销布局分支 - hash/embedding_hash_table_apply_adam_w/tests/ut/op_host/arch35/test_embedding_hash_table_apply_adam_w_tiling.cpp:UT 文件名修复(原名不匹配 UT glob 从未执行)+ 新增分派窗口契约断言 7 组 **实测性能**(950PR,N=2^20,B=2^21,min 耗时,fp32 全 dim 1024 档 + fp16 逐档标定): - fp32 主窗口 dim 6~128:均值 1.12×(峰值 1.72×@dim8) - fp32 dim 257~736:368 档均值 1.13×(最好 1.45×@257) - fp32 dim>736 偶数:均值 1.25×(最好 1.46×@864) - fp16 dim 257~1024:均值 1.38×(峰值 2.98×@258) - 其余档(fp16≤256、fp32 奇数≤256、dim<6、130~256)持平,全 dim 双 dtype 无回退 **测试**: - e2e 真机五算子 sweep 全场景 150 用例全 PASS(init 36/36、lookup 54/54、export 11/11、import 9/9、adamw 40/40,含 dim>256 新增用例与 fp16 高维档) - tiling UT 4/4 PASS(含分派窗口契约断言) - 布局改动与旧公式位级一致(dim 258~1024 含奇数/amsgrad 逐字节比对) - 双机复测结论一致 关联需求 issue:https://gitcode.com/cann/ops-nn/issues/5823 See merge request: cann/ops-nn!10323 | 3 天前 | |
perf: float2/float4 for embedding_hash_table_export/import Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9895 merge perf/export-import-b128 into master perf: float2/float4 for embedding_hash_table_export/import Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 EmbeddingHashTableExport / EmbeddingHashTableImport 算子(arch35)引入 SIMT 访存合并优化:values 拷贝由逐元素 4B 标量访存改为按对齐分档的 float4(B128)/float2(B64) 短向量批量访存。桶 values 区偏移 24B、仅 8B 对齐(24B 桶头为 hash 家族跨算子契约),桶侧封顶 float2(B64);外部张量行在 dim%4==0 且基址 16B 对齐时用 float4(B128)(运行时对齐检查兜底)。dim≤4 回退原始标量路径(小 dim 宽访存收益抵不过开销,实测 import dim=4 无回退路径慢 16%)。桶格式/tiling/flag 语义/哈希函数零改动,canndev 仓 evict 算子跨仓契约不受影响。 **改动文件**: - hash/embedding_hash_table_import/op_kernel/arch35/embedding_hash_table_import.h:新增 CopyImportValuesMerged __simt_callee__ helper,values 插入循环改为三档合并分派(+39 -7) - hash/embedding_hash_table_export/op_kernel/arch35/embedding_hash_table_export.h:新增 CopyExportValuesMerged helper(读桶 2×float2 组装、输出行 float4 写),ExportPerThread values 拷出循环改为三档分派(+43 -7) **性能数据**(950PR,N=2^20,B=2^21,min 耗时,对比 built-in 基线): - import:dim8 +13%;dim16/32/48/64/128 = 1.65×/1.70×/1.99×/2.11×/2.35×(dim128 10.05→4.29 ms) - export:dim8/16/32/48/64/128 = 1.15×/1.21×/1.22×/1.24×/1.26×/1.28×(收益受 CountPerThread 全桶 flag 扫描等固定开销稀释) - 两算子 dim1~4 持平(标量回退路径),全 dim 无回退 ## 关联的Issue 关联 Issue #5578 ## 测试 - e2e 真机五算子 canonical 精度全 PASS(init 3/3、lookup 9/9、export 3/3、import 3/3、adamw 6/6) - sweep 全场景矩阵 137 用例全 PASS(init 36/36、lookup 54/54、export 11/11、import 9/9、adamw 27/27,含全 dim 档/filter_key/多表/碰撞边界) - vendor 包 vs built-in 包:精度逐项一致;性能五算子对比,优化算子只升不降,未优化的 apply_adam_w 对照组两包持平(环境无漂移) ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9895 | 8 天前 | |
perf: float2/float4 for embedding_hash_table_export/import Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9895 merge perf/export-import-b128 into master perf: float2/float4 for embedding_hash_table_export/import Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 EmbeddingHashTableExport / EmbeddingHashTableImport 算子(arch35)引入 SIMT 访存合并优化:values 拷贝由逐元素 4B 标量访存改为按对齐分档的 float4(B128)/float2(B64) 短向量批量访存。桶 values 区偏移 24B、仅 8B 对齐(24B 桶头为 hash 家族跨算子契约),桶侧封顶 float2(B64);外部张量行在 dim%4==0 且基址 16B 对齐时用 float4(B128)(运行时对齐检查兜底)。dim≤4 回退原始标量路径(小 dim 宽访存收益抵不过开销,实测 import dim=4 无回退路径慢 16%)。桶格式/tiling/flag 语义/哈希函数零改动,canndev 仓 evict 算子跨仓契约不受影响。 **改动文件**: - hash/embedding_hash_table_import/op_kernel/arch35/embedding_hash_table_import.h:新增 CopyImportValuesMerged __simt_callee__ helper,values 插入循环改为三档合并分派(+39 -7) - hash/embedding_hash_table_export/op_kernel/arch35/embedding_hash_table_export.h:新增 CopyExportValuesMerged helper(读桶 2×float2 组装、输出行 float4 写),ExportPerThread values 拷出循环改为三档分派(+43 -7) **性能数据**(950PR,N=2^20,B=2^21,min 耗时,对比 built-in 基线): - import:dim8 +13%;dim16/32/48/64/128 = 1.65×/1.70×/1.99×/2.11×/2.35×(dim128 10.05→4.29 ms) - export:dim8/16/32/48/64/128 = 1.15×/1.21×/1.22×/1.24×/1.26×/1.28×(收益受 CountPerThread 全桶 flag 扫描等固定开销稀释) - 两算子 dim1~4 持平(标量回退路径),全 dim 无回退 ## 关联的Issue 关联 Issue #5578 ## 测试 - e2e 真机五算子 canonical 精度全 PASS(init 3/3、lookup 9/9、export 3/3、import 3/3、adamw 6/6) - sweep 全场景矩阵 137 用例全 PASS(init 36/36、lookup 54/54、export 11/11、import 9/9、adamw 27/27,含全 dim 档/filter_key/多表/碰撞边界) - vendor 包 vs built-in 包:精度逐项一致;性能五算子对比,优化算子只升不降,未优化的 apply_adam_w 对照组两包持平(环境无漂移) ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9895 | 8 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 19 天前 | |
fix: 修复swiglu_group_quant/init_embedding_hash_table代码C++规范问题 Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !10287 merge fix-codecheck into master fix: 修复swiglu_group_quant/init_embedding_hash_table代码C++规范问题 Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 修复 swiglu_group_quant、init_embedding_hash_table 中的 C++ 规范告警,包括整数控制表达式、魔数、浮点比较及不必要类型转换等问题。 1. ge::graphStatus status 声明过早 改为调用 CalcGroupIndexTiling() 时直接声明并初始化: ge::graphStatus status = CalcGroupIndexTiling(); 2. splitD_ = d_ / 2 使用魔数 2 新增 SWIGLU_SPLIT_FACTOR 常量,并改为: splitD_ = d_ / SWIGLU_SPLIT_FACTOR; 3. swiglu_mx_quant_perf.h 中 TBufPool 使用魔数 12 新增类内常量 TBUF_POOL_SIZE,作为模板参数使用。 4. swiglu_group_quant_perf.h 中 TBufPool 使用魔数 12 5. outputOrigin_ 作为三目运算条件时是 int64_t 将成员 outputOrigin_ 的类型从 int64_t 改为 bool。 6. GetPlatformInfoCommon 的 context 未修改指向对象 函数声明和定义中的参数均改为: const gert::TilingContext* context。 7. if (outputOrigin_) 使用整数作为控制表达式 通过将 outputOrigin_ 改为 bool 解决。 8. 三目运算符条件类型不恰当 同第 5 条,outputOrigin_ 改为 bool 后,条件操作数类型正确。 9. return outputOrigin_ ? ... 使用整数作为控制表达式 同样通过将 outputOrigin_ 改为 bool 解决。 10. 三目运算条件为 const int64_t 同第 9 条,布尔类型消除该告警。 11. GetCompileInfo() 结果使用 reinterpret_cast 改用框架提供的类型化接口: context->GetCompileInfo<InitEmbeddingHashTableCompileInfo>()。 12. TilingPrepareForSwigluGroupQuant 的 context 未修改 该函数必须符合注册框架的非 const 回调签名,因此移除未使用的形参名: TilingPrepareForSwigluGroupQuant(gert::TilingParseContext*),同时删除 (void)context。 13. 两个 float 使用 != 直接比较 新增 FLOAT_COMPARE_EPSILON,改为容差判断: std::fabs(*clampLimitAttr - DEFAULT_CLAMP_LIMIT) > FLOAT_COMPARE_EPSILON。 14. != 右操作数为浮点类型 与第 13 条属于同一表达式,改用容差比较后一并解决。 15. else if (outputOrigin_) 使用整数作为控制表达式 通过将 outputOrigin_ 改为 bool 解决。 16. 头文件中的 GetPlatformInfoCommon 参数缺少 const 与第 6 条同步修改函数声明,保证声明和定义一致。 17. swiglu_mx_quant_perf.h 中魔数 12 与第 3 条重复,由 TBUF_POOL_SIZE 解决。 18. swiglu_group_quant_perf.h 中魔数 12 与第 4 条重复,由 TBUF_POOL_SIZE 解决。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5808 ## 测试 冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260911_144324145 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!10287 | 3 天前 | |
下一代hash算子功能支持 Co-authored-by: 张磊<zhanglei121@huawei.com> # message auto-generated for no-merge-commit merge: !540 merge master into master 下一代hash算子功能支持 Created-by: zl_hw Commit-by: 张磊 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!540 | 8 个月前 |