文件最后提交记录最后更新时间
支持SDMA特性 Co-authored-by: jiang-xinyu3<jiangxinyu3@hisilicon.com> Co-authored-by: vector5<caobingjie@huawei.com> # message auto-generated for no-merge-commit merge: !101 merge sdma into master 支持SDMA特性 Created-by: jiangxinyu3 Commit-by: jiang-xinyu3;vector5 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue #58 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> [examples](http://image.huawei.com/tiny-lts/v1/images/hi3ms/d739b4802bcf078a130014d2394fd91f_882x665.png) [UT](http://image.huawei.com/tiny-lts/v1/images/hi3ms/3bc2ce6d8b83a01842353c2061ec1747_1020x403.png) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!1013 个月前
update SDMA使用说明 Co-authored-by: Z_ZW2025<zhuozhenwei1@h-partners.com> # message auto-generated for no-merge-commit merge: !364 merge master into master update SDMA使用说明 Created-by: Z_ZW2025 Commit-by: Z_ZW2025 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!3648 天前
fix spell problem Co-authored-by: Z_ZW2025<zhuozhenwei1@h-partners.com> # message auto-generated for no-merge-commit merge: !289 merge master into master fix spell problem Created-by: Z_ZW2025 Commit-by: Z_ZW2025 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 注释拼写错误修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/shmem/issues/210 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!2891 个月前
整改部分样例的文档和脚本环境变量 Co-authored-by: hbhdhd<luxianbin1@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge docs into master 整改部分样例的文档和脚本环境变量 Created-by: hbhdhd Commit-by: hbhdhd Merged-by: cann-robot Description: ## 描述 修改环境变量名称不一致问题。 **问题**:代码读取的环境变量是 SHMEM_UID_SESSION_ID,部分文档和脚本中使用的是 ACLSHMEM_UID_SESSION_ID。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#209](https://gitcode.com/cann/shmem/issues/209) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了相关示例的脚本和 README 文件。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/shmem!2691 个月前
README.md

SDMA使用说明

环境要求和准备

SDMA功能在9.0.0及以上版本(尝鲜版)新增支持。需要下载并安装以下cann和ops软件包:

example使用方式:

1.在shmem/目录编译软件包并安装:

bash scripts/build.sh -package
./install/*/SHMEM_1.0.0_linux-*.run --install

2.在shmem/目录下编译examples:

bash scripts/build.sh -examples

3.在shmem/examples/sdma目录执行demo:

bash run.sh -pes ${PES} -type ${TYPES}
  • 参数说明
    • PES:指定用于运行的设备(NPU)数量,限定单台机器内。
    • TYPES:指定传输数据类型,当前支持:int,uint8,int64,fp32。

SDMA接口使用说明

aclshmemx_sdma_put_nbi

以指针类型参数接口为例:

ACLSHMEM_DEVICE void aclshmemx_sdma_put_nbi(__gm__ T *dst, __gm__ T *src, __ubuf__ T *buf, uint32_t ub_size,
                                            uint32_t elem_size, int pe, uint32_t sync_id)

接口功能:把PE pe上的src地址中的数据传输到dst地址,传输elem_size个元素。

参数名 含义
dst 目标卡上目的地址在本卡上的对称地址
src 本卡上的源地址
buf 缓冲区地址
ub_size 缓冲区大小
elem_size 元素个数
pe 目标PE
sync_id 同步ID

aclshmemx_sdma_get_nbi

以指针类型参数接口为例:

ACLSHMEM_DEVICE void aclshmemx_sdma_get_nbi(__gm__ T *dst, __gm__ T *src, __ubuf__ T *buf, uint32_t ub_size,
                                            uint32_t elem_size, int pe, uint32_t sync_id)

接口功能:把PE pe上的dst地址中的数据传输到src地址,传输elem_size个元素。

参数名 含义
dst 目标卡上目的地址在本卡上的对称地址
src 本卡上的源地址
buf 缓冲区地址
ub_size 缓冲区大小
elem_size 元素个数
pe 目标PE
sync_id 同步ID

注意事项

aclshmemx_sdma_put_nbiaclshmemx_sdma_get_nbi都是非阻塞接口,调用后立即返回,不等待数据传输完成。用户使用时,可通过以下两种方式确保数据传输完成:

  1. 所有调用aclshmemx_sdma_put/get_nbi的核,在sdma任务结束后,算子内调用aclshmemx_sdma_quiet接口,等待所有SDMA操作完成。
    适用场景:算子内后续操作依赖sdma任务完成,例如后续算子需要使用sdma传输好的数据。
  2. 所有调用aclshmemx_sdma_put/get_nbi的核,在sdma任务结束后,算子内调用aclshmemx_sdma_notify_record接口,然后在host侧调用aclrtWaitAndResetNotify接口,等待指定的同步ID完成(详细用法可查看NotifyWait机制使用说明)。
    适用场景:其它stream上的kernel需要等待sdma任务完成后才能继续执行。