Fork
0
代码
介绍
代码
Issues
Pull Requests
流水线
Actions
讨论
Wiki
项目成员
分析
项目设置
Fork
0
master
shmem
/
src
/
host_device
下载当前目录
cann-robot
UDMA支持write with notify接口
2728c15c
创建于
4月24日
历史提交
文件
最后提交记录
最后更新时间
shmemi_common_types.h
编译宏对齐缩进 & 文件名删除多余.h Co-authored-by: caixilong<caixilong2@h-partners.com>
5 个月前
shmemi_host_device_constant.h
UDMA支持write with notify接口 Co-authored-by: suqwe<sujianjia@huawei.com> # message auto-generated for no-merge-commit merge:
!281
merge master into master UDMA支持write with notify接口 Created-by: suqwe Commit-by: suqwe Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 背景: UB协议定义了一个Write With Notify(WWN),与Write With Immediate(WWI)非常相似,区别是WWN不需要RQ的WQE来在CQE接收Notify data,Notify Data直接写内存;而WWI要一个RQ的WQE来在CQE接收Immediate data。 新增UDMA支持write with notify接口功能 新增的接口原型如下: ``` template <typename T> ACLSHMEM_DEVICE void aclshmemx_udma_put_signal_nbi(__gm__ T* dst, __gm__ T* src, uint32_t elem_size, __gm__ uint64_t* sig_addr, uint64_t signal, int pe); ``` 实现: - 1、通过write with notify实现udma引擎的put signal低阶接口。后续高阶接口待udma amo语义补齐后,可以通过组合实现和openshmem兼容的put signal 高阶接口。 ``` openshmem_put_signal_nbi(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe) ``` 当前只实现set语义,其他atomic语义不支持的低阶接口,高阶接口保留sig op,低阶接口为了实现高性能,这里不封装sig op参数 - 2、 重构了send函数,根据操作类型自动选择不同的params参数,避免后续随着操作类型增加,send函数参数过多的问题 - 3、抽出host device公共的常量定义,通过常量折叠优化数据面性能 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue
#123
--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。-->
https://gitcode.com/cann/shmem/issues/215
## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->  UT:  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem
!281
1 个月前