已关闭
[算子开发][内测体验][AscendC]`Load/Store为对称接口,为何一个支持RegTraitNumTwo,一个不支持,接口不完备 #1339
李鑫创建于  7月25日关闭于  18 天前
李鑫
李鑫
7月25日 创建

https://gitcode.com/cann/asc-devkit/blob/master/docs/zh/api/SIMD-API/基础API/Reg矢量计算/Reg数据搬入/Load.md
https://gitcode.com/cann/asc-devkit/blob/master/docs/zh/api/SIMD-API/基础API/Reg矢量计算/Reg数据搬出/Store.md
1、为何Load不支持RegTraitNumTwo,Store支持
2、两者都写了“接口内部定义了一个UnalignRegForStore,该寄存器数量上限为4”,未告诉用户用超了会怎么样,编译失败?性能差? 其次也未告诉有这个限制编码时应该注意什么

likedislike
LLycheeeee成员
7月25日 将 lihuaichao 设为负责人
lihuaichao成员
7月25日 评论:

您好,感谢您对反馈,针对以上问题,回复如下:

问题1:
Load不支持RegTraitNumTwo,,是因为Load内部封装了连续非对齐搬入(LoadUnAlign)的普通搬运接口,该接口不支持RegTraitNumTwo:

template <typename T>
__simd_callee__ inline void LoadUnAlignPre(UnalignRegForLoad& ureg, __ubuf__ T* srcAddr)

template <typename T = DefaultType, typename U>
__simd_callee__ inline void LoadUnAlign(U& dstReg, UnalignRegForLoad& ureg, __ubuf__ T* srcAddr)

Store支持RegTraitNumTwo,是因为Store内部封装了非连续对齐搬出(StoreAlign)的扩展搬运接口,该接口支持RegTraitNumTwo:

template <typename T = DefaultType, PostLiteral postMode = PostLiteral::POST_MODE_UPDATE, typename U>
__simd_callee__ inline void StoreUnAlign(__ubuf__ T*& dstAddr, U& srcReg, UnalignRegForStore& ureg, uint32_t postUpdateStride)

template <typename T, PostLiteral postMode = PostLiteral::POST_MODE_UPDATE>
__simd_callee__ inline void StoreUnAlignPost(__ubuf__ T*& dstAddr, UnalignRegForStore& ureg, int32_t postUpdateStride)

问题2:
超出后编译器将报错,近期会在docs/zh/api/SIMD-API/基础API/Reg矢量计算/寄存器数据类型/UnalignRegForLoad-UnalignRegForStore.md中添加此信息。

likedislike
李鑫
李鑫
7月25日 评论:

您好,感谢您对反馈,针对以上问题,回复如下:

问题1:
Load不支持RegTraitNumTwo,,是因为Load内部封装了连续非对齐搬入(LoadUnAlign)的普通搬运接口,该接口不支持RegTraitNumTwo:

template <typename T>
__simd_callee__ inline void LoadUnAlignPre(UnalignRegForLoad& ureg, __ubuf__ T* srcAddr)

template <typename T = DefaultType, typename U>
__simd_callee__ inline void LoadUnAlign(U& dstReg, UnalignRegForLoad& ureg, __ubuf__ T* srcAddr)

Store支持RegTraitNumTwo,是因为Store内部封装了非连续对齐搬出(StoreAlign)的扩展搬运接口,该接口支持RegTraitNumTwo:

template <typename T = DefaultType, PostLiteral postMode = PostLiteral::POST_MODE_UPDATE, typename U>
__simd_callee__ inline void StoreUnAlign(__ubuf__ T*& dstAddr, U& srcReg, UnalignRegForStore& ureg, uint32_t postUpdateStride)

template <typename T, PostLiteral postMode = PostLiteral::POST_MODE_UPDATE>
__simd_callee__ inline void StoreUnAlignPost(__ubuf__ T*& dstAddr, UnalignRegForStore& ureg, int32_t postUpdateStride)

问题2:
超出后编译器将报错,近期会在docs/zh/api/SIMD-API/基础API/Reg矢量计算/寄存器数据类型/UnalignRegForLoad-UnalignRegForStore.md中添加此信息。

@lihuaichao

最好考虑补全一下能力,对称接口能力不一致解释成本挺高的,也感触不好

likedislike
Llihuaichao成员
7月27日 添加了label:requirement
lihuaichao成员
7月27日 评论:

好的,感谢反馈,近期将会支持Load的RegTraitNumTwo的功能。

likedislike
lihuaichao成员
8月20日 评论:

您好,经评估,该需求为低优先级需求,短期内暂不安排。已纳入需求池,后续迭代视资源情况再议。感谢理解!

likedislike
lihuaichao成员
22 天前 评论:

您好,该需求预计本周进入合入流程。

likedislike
lihuaichao成员
19 天前 评论:

您好,Load和Store支持RegTraitNumTwo需求PR已合入,具体修改内容请参考关联PR。

likedislike
lihuaichao成员
18 天前 评论:

您好,相关问题已修复。

我们先关闭此issue。后续如果有其他问题,欢迎再提issue交流~

likedislike
Llihuaichao成员
18 天前 issue状态由 进行中 改变为 已解决
Llihuaichao成员
18 天前 关闭了 issue
CANN-robotCANN-robot成员
18 天前 添加了label:resolved