文件最后提交记录最后更新时间
支持AIV直驱UDMA功能: 添加样例和 UT Co-authored-by: hbhdhd<luxianbin1@huawei.com> # message auto-generated for no-merge-commit merge: !198 merge udma_manager into master 支持AIV直驱UDMA功能: 添加样例和 UT Created-by: hbhdhd Commit-by: hbhdhd Merged-by: cann-robot Description: ## 描述 支持AIV直驱UDMA功能,样例和 UT ## 关联的Issue https://gitcode.com/cann/shmem/issues/161 ## 测试 功能测试: - examples: ![image.png](https://raw.gitcode.com/user-images/assets/8546182/b945a60d-bda4-4dcd-9647-8ba943772be6/image.png 'image.png') - ut: ![image.png](https://raw.gitcode.com/user-images/assets/8546182/cbbbc7a2-e279-447f-a6c1-9eeb7567d43e/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!1982 个月前
修正readme Co-authored-by: vector5<caobingjie@huawei.com> # message auto-generated for no-merge-commit merge: !344 merge fixdoc into master 修正readme Created-by: vector5 Commit-by: vector5 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> readme中存在多处笔误,该pr修正了这些错误 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> 关联https://gitcode.com/cann/shmem/issues/235 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!34411 天前
fix udma demo status Co-authored-by: YeZZzzz1<yezhenni1@huawei.com> # message auto-generated for no-merge-commit merge: !346 merge master into master fix udma demo status Created-by: YeZZzzz1 Commit-by: YeZZzzz1 Merged-by: cann-robot Description: ## 描述 udma样例内未正确捕获异常返回值,失败场景仍打印成功 ## 关联的Issue https://gitcode.com/cann/shmem/issues/257 ## 测试 失败场景进行报错 ![image.png](https://raw.gitcode.com/user-images/assets/8546182/e3058450-58cc-4a18-8f69-5e411384df12/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!34611 天前
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 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![image.png](https://raw.gitcode.com/user-images/assets/8546182/3f6c4c70-5e33-4c5a-ad5b-88b5507ce897/image.png 'image.png') UT: ![image.png](https://raw.gitcode.com/user-images/assets/8546182/0246853f-0f9b-4059-afda-9ddf95c760e0/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!2811 个月前
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 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![image.png](https://raw.gitcode.com/user-images/assets/8546182/3f6c4c70-5e33-4c5a-ad5b-88b5507ce897/image.png 'image.png') UT: ![image.png](https://raw.gitcode.com/user-images/assets/8546182/0246853f-0f9b-4059-afda-9ddf95c760e0/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!2811 个月前
README.md

使用方式:

1.在shmem/目录编译:

bash scripts/build.sh -examples -soc_type Ascend950

2.在shmem/目录运行:

export PROJECT_ROOT=<shmem-root-directory>
export LD_LIBRARY_PATH=${PROJECT_ROOT}/build/lib:$LD_LIBRARY_PATH
export SHMEM_UID_SESSION_ID=127.0.0.1:8899

bash examples/udma_demo/run.sh 0 # allgather测试
bash examples/udma_demo/run.sh 1 # put signal 测试

默认按单机8卡启动,脚本依次拉起PE 0PE 7,并等待所有进程退出。

3.脚本命令行参数说明

./udma_demo <n_pes> <pe_id> <ipport> <g_npus> <f_pe> <f_npu> [test_type]
  • n_pes: 全局PE数量。
  • pe_id: 当前进程对应的PE号。
  • ipport: SHMEM初始化需要的IP及端口号,格式为tcp://:<端口号>。
  • g_npus: 当前机器上启动的NPU卡的数量。
  • f_pe: 当前机器上使用的第一个PE号。
  • f_npu: 当前机器执行本样例使用的第一张NPU卡的卡号。
  • test_type: 测试类型(可选),0表示运行all-gather测试(默认),1表示运行put signal测试。