已合并
example_tensor_api_snake #5071
watermelon_milk创建于 28 天前
example_tensor_api_snake #5071
已合并
watermelon_milk创建于 28 天前
28 天前

描述

example样例切换snake风格

关联的Issue

测试

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 watermelon_milk 的贡献)
Wwatermelon_milk
28 天前 创建了 pull request,commit 6111d243
atomgit-bot
atomgit-bot
28 天前 评论:

变更摘要

本次改动主要对 7 个 AscendC 示例内核进行 API 迁移:将原先基于 AscendC::Te 命名空间、PascalCase 风格的旧接口统一替换为新的 snake_case 风格 C API(asc::te 命名空间),同时将头文件依赖从 basic_api/kernel_basic_intf.hbasic_api/kernel_operator_block_sync_intf.h 切换为 c_api/misc/misc.hc_api/sync/sync.hc_api/sys_var/sys_var.h。改动覆盖张量构造、搬运/矩阵计算原子、互斥锁与流水同步、布局与枚举类型等多个层面,业务逻辑本身未发生实质变化。

主要改动

  • 张量构造与切片接口迁移: MakeTensorMakeMemPtrMakeFrameLayoutMakeCoordMakeShape.Slice() 分别迁移为 make_tensormake_mem_ptrmake_frame_layoutmake_coordmake_shape.slice(),调用方式同步调整为 snake_case。
  • 搬运与矩阵计算原子迁移: MakeCopyMakeMmadCopyMmad 及其 trait 类型(如 CopyGM2L1CopyL12L0AMmadTrait)统一改为 make_copymake_mmadcopymmad 及对应 snake_case 类型;MmadParams 改为 mmad_params,字段 cmatrixInitValunitFlag 分别改为 cmatrix_init_valunit_flag
  • 同步与互斥机制迁移: AscendC::Mutex::Lock/Unlock 改为 asc_lock/asc_unlockAscendC::PipeBarrier<PIPE_ALL>() 改为 asc_sync_pipe(PIPE_ALL)SetFlag/WaitFlag 改为 asc_sync_notify/asc_sync_waitCrossCoreSetFlag/CrossCoreWaitFlag 改为 asc_sync_block_arrive/asc_sync_block_wait
  • 初始化与核间索引接口迁移: AscendC::InitSocState() 改为 asc_init()AscendC::GetBlockIdx()GetBlockNum()GetSubBlockIdx() 分别改为 asc_get_block_idx()asc_get_block_num()asc_get_sub_block_id()
  • 布局、枚举与参数结构体命名迁移: NDExtLayoutPtnNZLayoutPtnZNLayoutPtnNCHWLayoutPtnNC1HWC0LayoutPtn 等布局类型以及 DualDstModeRoundModeMmadTypeLocation 等枚举均改为 snake_case;Img2ColParamsFixpipeParams 改为 img2col_paramsfixpipe_params,其成员字段也同步 snake_case 化。
likedislike
不准确?
atomgit-bot
atomgit-bot
28 天前 评论:

代码审查

Closing Summary

本次审查覆盖了全部 3 个改动文件:

  1. examples/01_simd_cpp_api/00_introduction/02_matrix/matmul_tensor_api/matmul.asc — 已审查,无问题(纯机械式 API 重命名,逻辑未变)。
  2. examples/01_simd_cpp_api/03_basic_api/00_data_movement/copy_in_tensor_api/copy_in_tensor_api.asc — 发现 1 个问题(P1:残留旧命名空间 AscendC::Std::conditional_t)。
  3. examples/01_simd_cpp_api/03_basic_api/00_data_movement/copy_out_tensor_api/copy_out_tensor_api.asc — 发现 1 个问题(P3:asc_get_sub_block_id 命名不一致,疑似误译,需对照头文件核实)。

发现统计:P1 × 1,P3 × 1。

总体风险判断:这是一次范围明确、整体机械的 API snake_case 迁移,绝大部分重命名(make_tensor/make_copy/mmad_params/asc_lock/asc_sync_block_* 等)与仓库内已迁移样例一致,逻辑语义未被改动。主要风险集中在 copy_in_tensor_api.asc 中遗漏迁移的 AscendC::Std::conditional_t——由于提供该命名空间的旧头文件已被移除,该样例很可能无法编译,建议优先修复;copy_out_tensor_api.asc 的子块索引 API 命名建议对照头文件确认后一并处理。


我已完成对全部 4 个改动文件的逐一审查。经过与仓库中已迁移的同类样例(copy_in_tensor_api.asccopy_out_tensor_api.ascmatmul.asc 及 C API 样例)交叉比对,逐项核实了以下关键契约,未发现被本 diff 引入的实质性问题:

  1. 同步语义SetFlag<HardEvent::X_Y>/WaitFlag<HardEvent::X_Y>asc_sync_notify(PIPE_X, PIPE_Y, …)/asc_sync_wait(PIPE_X, PIPE_Y, …) 的 producer/consumer 参数顺序与旧事件命名(MTE1_MTE2M_MTE1FIX_MM_FIX 等)一一对应,方向正确;PipeBarrier<PIPE_ALL>()asc_sync_pipe(PIPE_ALL) 也正确。
  2. 互斥锁Mutex::Lock<PIPE_X>(idx)/Unlockasc_lock(PIPE_X, idx)/asc_unlock 的参数顺序(先流水、后槽位号)正确。
  3. 结构体字段MmadParams/Img2ColParams/FixpipeParamsmmad_params/img2col_params/fixpipe_params 的字段名(cmatrix_init_valunit_flagfilter_w/hpad_listpad_value 等)以及 mmad_params{m,n,k,unit_flag,cmatrix_init_val} 的聚合字段顺序,均与已迁移样例一致。
  4. 布局/算子名NDExtLayoutPtnnd_ext_layout_ptnNZ/ ZN/ DN/ NCHW/ NHWC/ NC1HWC0/ ZZ/ NNCopyGM2L1copy_gm_to_l1CopyL12BTcopy_l1_to_biastableMmadType::MXmmad_type::mx 等命名均与仓库约定一致。
  5. 数值/边界逻辑:本次 diff 未改动任何数值常量、循环边界、索引或条件判断,均为纯 API 重命名,未引入新的边界或逻辑回归。

审查结论

文件 审查结果
examples/01_simd_cpp_api/03_basic_api/03_matrix_compute/batch_matmul_tensor_api/batch_matmul_tensor_api.asc no issues
examples/01_simd_cpp_api/03_basic_api/03_matrix_compute/conv2d_forward_tensor_api/conv2d_forward_tensor_api.asc no issues
examples/01_simd_cpp_api/03_basic_api/03_matrix_compute/mmad_tensor_api/mmad_tensor_api.asc no issues
examples/01_simd_cpp_api/05_best_practices/01_matrix_compute/matmul_mxfp4_tensor_api_high_performance/mmad_mx.asc no issues

发现问题数量:P0 = 0,P1 = 0,P2 = 0,P3 = 0。

整体风险评估:低。本 PR 是一次机械式的 Tensor API 命名迁移(CamelCase → snake_case),四个文件改动均为忠实的一对一替换,未引入语义变化,且命名与仓库中已迁移的同类样例保持一致,未发现正确性、安全性、可靠性或性能方面的回归风险。

类型 数量
🔴 阻塞 1
🟡 建议 0

⛔ 需要修改

likedislike
不准确?
CANN-robotCANN-robot成员
28 天前 添加了label:cann-cla/no
CANN-robot
CANN-robot成员
28 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
docs munanhw, 诸葛洵, DragonBornHD84, bianque, hyolee (5/2) munanhw (1/1)
examples 诸葛洵, changxianyu, munanhw, DragonBornHD84, bianque, hyolee (6/2) 诸葛洵, changxianyu, munanhw (3/1)
scripts 诸葛洵, DragonBornHD84, bianque, hyolee (4/2) 诸葛洵 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

watermelon_milk, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了108条消息 查看更多
CANN-robotCANN-robot成员
13 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-passed
zhugexun_sjtu
zhugexun_sjtu成员
13 天前 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
13 天前 添加了label:approved
CANN-robotCANN-robot成员
13 天前 合入了pull request