已合并
feat: 新增C API Load类指令返回值接口 #5307
feat: 新增C API Load类指令返回值接口 #5307
已合并
lihuaichao创建于 6 天前
lihuaichao成员
6 天前

描述

为 3510 架构的 C API Load 类指令新增带返回值重载,覆盖 asc_load、asc_loadalign、asc_loadalign_brc_datablock、asc_loadalign_brc_elem、asc_loadalign_brc_elem2datablock、asc_loadalign_downsample、asc_loadalign_unpack、asc_loadalign_unpack4、asc_loadalign_upsample 和 asc_loadalign_datablock_stride。

新增接口使用局部变量 dst,并直接调用现有内部 *_impl 实现后返回矢量寄存器;不新增 int64_t 和 uint64_t 类型接口。新增及补充 141 个返回值接口单元测试和 Host Header 检查。

关联的Issue

无。

测试

NA

文档更新

本次未修改文档。

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 lihuaichao 的贡献)
Llihuaichao成员
6 天前 创建了 pull request,commit 2504d0df
atomgit-bot
atomgit-bot
6 天前 评论:

变更摘要

本 PR 为 3510 架构的 C API Load 类指令新增带返回值(return-value)的重载接口,覆盖 asc_loadasc_loadalignasc_loadalign_brc_datablockasc_loadalign_brc_elemasc_loadalign_brc_elem2datablockasc_loadalign_downsampleasc_loadalign_unpackasc_loadalign_unpack4asc_loadalign_upsampleasc_loadalign_datablock_stride。新接口在 impl/c_api/instr_impl/npu_arch_3510/vector_datamove_impl.h 中定义,通过局部变量 dst 直接调用现有内部 *_impl 实现后返回矢量寄存器,不新增 int64_t/uint64_t 类型接口,并在 include/c_api/reg_compute/reg_load.h 补充对应声明及 141 个返回值接口单元测试和 Host Header 检查。

主要改动

  • 实现返回值重载接口:在 vector_datamove_impl.h 新增约 1014 行 __simd_callee__ inline 重载,每个函数以局部 dst 调用对应 *_impl(如 asc_load_implasc_loadalign_implasc_loadalign_downsample_impl 等)后返回对应类型的 vector_* 类型;其中 asc_loadalign_datablock_stride 额外透传 block_striderepeat_stridemask 参数,asc_loadalignbool 重载经 reinterpret_cast__ubuf__ uint32_t* 后调用实现。
  • 补充头文件声明:在 reg_load.h 新增约 178 行对应返回值重载的前置声明,与既有 void 引用式重载并列,构成对外接口契约。
  • 扩展单元测试:新增 tests/api/c_api/npu_arch_3510/vector_datamove/test_asc_load_return.cpp(约 269 行),通过 TEST_VECTOR_DATAMOVE_LOADALIGN_RETURN 宏覆盖 asc_loadalignasc_loadalign_brc_elemasc_loadalign_brc_datablockasc_loadalign_brc_elem2datablockasc_loadalign_downsampleasc_loadalign_unpackasc_loadalign_unpack4asc_loadalign_upsample 的返回值接口,用例以 static_assert 校验返回类型并 mock 底层 vlds/plds
  • 补充既有测试文件test_asc_load.cpp 新增 TEST_VECTOR_DATAMOVE_LOAD_RETURN 宏及 16 条 asc_load 返回值用例,test_asc_load_align_v2.cpp 新增 TEST_VECTOR_COMPUTE_LOADALIGN_RETURN 宏及 16 条 asc_loadalign_datablock_stride 返回值用例,test_asc_loadalign_plds.cpp 新增 LoadAlignPldsBool_ReturnSucc 用例覆盖 asc_loadalignbool 重载。
  • Host Header 检查host_header_reg_compute_checker.cpp 增加 using ::asc_loadalign_datablock_stride;,确保新接口在 Host Header 中被正确引用。
likedislike
atomgit-bot
atomgit-bot
6 天前 评论:

代码审查

✅ 未发现问题

likedislike
CANN-robotCANN-robot成员
6 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
6 天前 评论:

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, wuyang_hw, Lycheeeee (3/2) munanhw (1/1)
impl/c_api Lycheeeee, wuyang_hw (2/2) Lycheeeee (1/1)
include/c_api wuyang_hw, Lycheeeee, wuzhaolin (3/2) wuzhaolin (1/1)
include/c_api/reg_compute horming, wuyang_hw, Lycheeeee (3/2) horming (1/1)
repo-cann/asc-devkit wuyang_hw, Lycheeeee (2/2) wuyang_hw, Lycheeeee (2/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
此处折叠了46条消息 查看更多
Mmunanhw成员
1 天前 解决了最后一个问题
munanhw成员
1 天前 评论:

/approve

likedislike
wuzhaolin成员
1 天前 评论:

/approve

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