| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 1 个月前 | |
bn_infer等26个算子新增ascend350平台支持 Co-authored-by: Developer user<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !10255 merge ascend350_adapt_w2 into master bn_infer等26个算子新增ascend350平台支持 Created-by: zhuzixian-lr Commit-by: Developer user Merged-by: cann-robot Description: ## 描述 26个算子新增ascend350平台支持:foreach_mul_scalar、foreach_sqrt、foreach_addcmul_scalar、foreach_div_scalar_list、foreach_lerp_scalar、foreach_norm、bn_infer、apply_adagrad_d、apply_gradient_descent、apply_adam、apply_adam_w_v2、embedding_hash_table_apply_adam_w、embedding_hash_table_export、embedding_hash_table_import、embedding_hash_table_lookup_or_insert、init_embedding_hash_table、binary_cross_entropy、sigmoid_cross_entropy_with_logits_v2、binary_cross_entropy_grad、l2_loss、nll_loss、nll_loss_grad、sparse_softmax_cross_entropy_with_logits、softmax_cross_entropy_with_logits、swiglu_group_quant、swi_glu。 修改模式(350与ascend950完全同配,两者同为 DAV_3510,走同一代码分支): - op_host/<op>_def.cpp:追加 AddConfig("ascend350"),复用 ascend950 同一 config 对象(regbase 形态含 foreach 系/bn_infer/apply_adam_w_v2/swi_glu 等) - CMakeLists:SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR(或 COMPUTE_UNITS 形态)增加 ascend350/arch35(bn_infer 为 op_host/CMakeLists 特殊形态,对标 bn_training_reduce 先例) - op_host/config/ascend350/:拷贝 ascend950 的 <op>_binary.json - scripts/kernel/binary_config/ascendc_config.json:仅对 json 中已有条目的算子修改(foreach 系 6 个 + SwiGlu 共 7 条 compute_units 加 ascend350,compile_options 与 ascend950 逐项相同);原无条目的算子不新增登记,避免影响默认编译选项行为 - nll_loss_grad 的 CMakeLists.txt 版权头规范化(OAT 合规检查要求) ## 测试 A5(Ascend950PR)环境实测: - bash build.sh --pkg --soc=ascend350 --ops=<op> --vendor_name=customize -j4 编译验证:26/26 算子通过(产物 .o、run 包产出、json 选项注入均验证;softmax_cross_entropy_with_logits 用 --soc=ascend950 对照编译确认两侧产物同构) - pre-commit 全部检查通过(按文件运行,含 clang-format/codespell/OAT 合规) ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5780 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 ## SocVersion 判断合规化 - 规则:不允许 SocVersion 区间判断隐式覆盖芯片,950/350 需显式 IsRegBase() 判断,不再依赖枚举顺序副作用 - 本 MR 涉及 1 处(sigmoid_cross_entropy_with_logits_v2 的 binary_cross_entropy_with_logits),已完成修改 - 改法:保留原 [ASCEND910B, ASCEND910E] 区间(覆盖 910B/910C/910E),或逻辑增加 IsRegbase()(显式覆盖 regbase 芯片,与 upstream !10101 已合入的 Ops::NN::AclnnUtil::IsRegbase() 同形态) - 行为零变化:950 原区间命中(true)→现 IsRegbase()(true);350 原被区间覆盖(true)→现 IsRegbase()(true);910B/C/E 走原区间不变 - 分支已 rebase 至最新 upstream master ## 四件套完整性检视修复 - 全量检视发现 17 个算子的 ascendc_config.json 登记缺失(摸底时带下划线 grep 未命中全驼峰条目名,误记为 950 无条目) - 涉及:loss 7(BinaryCrossEntropy/Grad、L2Loss、NLLLoss/Grad、SigmoidCrossEntropyWithLogitsV2、SparseSoftmaxCrossEntropyWithLogits)、hash 5(EmbeddingHashTableApplyAdamW/Export/Import/LookupOrInsert、InitEmbeddingHashTable)、optim 4(ApplyAdagradD、ApplyAdam、ApplyAdamWV2、ApplyGradientDescent)、activation 1(SoftmaxCrossEntropyWithLogits) - 修复:对标各自 ascend950 条目补登 ascend350(compute_units 追加 + compile_options 照抄),def/CMake/config 三件原已齐备 - 其余 84 算子四件套核查全绿或形态与 950 一致(详见任务侧检视报告) ## 补充算子 - foreach_add_scalar:清单补充登记,四件套补齐(def AddConfig ascend350 与 950 同 regbaseCfg 对象、op_kernel CMake COMPUTE_UNITS、config/ascend350/binary.json、ascendc_config.json 条目对标 950 追加 + compile_options 照抄),与同族 foreach_addcmul_scalar 等先例形态一致 ## 算子目录内融合规则适配 - 全量排查两波 84 算子目录 op_graph 层:仓内融合 pass 共 2 个、graph_infer 12 个、graph_plugin 1 个 - 🔴 修复 1 处:layer_norm/op_graph/fusion_pass/layer_norm_remove_broadcast_fusion_pass.cpp:102 support_soc 集合 {"Ascend950","MC62"} 增加 Ascend350(原 350 跳过融合与 950 分叉);ops-transformer 的 apply_rotary_pos_emb_tensormove_pass 无平台门控天然放行 See merge request: cann/ops-nn!10255 | 1 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 |