| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(rdma): 支持多 AIV 共享 HNS1825 队列 Co-authored-by: mengxun<xunmeng20000327@163.com> # message auto-generated for no-merge-commit merge: !1727 merge feature/rdma-multitile into master feat(rdma): 支持多 AIV 共享 HNS1825 队列 Created-by: mengxun233 Commit-by: mengxun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复多个 AIV/block 共享同一 peer/QP 时,SQ 槽位分配、门铃发布和 CQ 消费缺少并发保护的问题。支持基于同一 workspace 并发调用现有 RDMA PUT、GET 和 PUT+notify 接口,沿用现有 Session、调用方提供的 scratch tile 及 WQE/CQE/软件门铃的 UB/MTE 路径。 - 为每个 peer/QP 增加共享队列状态,通过原子 fetch-add 预留 WQE 区间,WQE 准备完成后按预留顺序推进就绪进度;PUT+notify 一次预留相邻的两个槽位。 - 使用提交锁保护 owner 和门铃的有序发布,由队尾或批次边界的调用者提交;Wait/Test 和容量等待可补提交连续就绪的 WQE。独立 CQ 锁保护 CQE 消费,维护共享完成进度和错误状态,并结合 SQ/CQ 各自的实际深度控制槽位复用。 - 在现有 RDMA ST 中增加 16 AIV 持续压力用例。RDMA ST 直接包含所需 MPI/ACL 头文件,并在自身文件内保留 Runtime 声明和设备数量查询,解除对包含 URMA Host 管理器的公共测试头的依赖。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> TPutAsyncRdma.Vec_Int32_MultiAiv 使用单机两张 A5 卡,由 rank 0 的 16 个 AIV 共享面向 rank 1 的 QP0,交替提交 16 字节 int32 payload 的 PUT 和 PUT+notify。各操作使用独立的数据槽和 signal,覆盖以下场景: - **持续提交与完成查询**:前半段连续提交,不主动调用 Test/Wait,用于检查容量等待时的 CQ 推进;后半段插入交错延迟,各 AIV 按不同节奏调用 Test/Wait,结束时等待各自的最后一个 Event,检查并发提交、完成查询及末尾请求的收尾。 - **队列回绕与旧 Event**:按实际队列深度设置足够的请求数,使 SQ/CQ 多次回绕。所有 AIV 完成后,再启动第二个 kernel 对各 AIV 保存的首尾 Event 执行 Test/Wait,检查槽位复用后旧 Event 的完成语义。 - **数据与预留区间**:逐 int32 精确比较 payload、notify signal、保护区(canary)、源数据及未使用区域;根据全部 Event 重建单槽或双槽的 WQE 预留区间,检查无重复、无缺口。 - **最终队列状态**:核对预留、就绪、已提交、已完成四个进度均等于预期 WQE 数,错误状态和两个锁均为零。 本次双 A5 运行的 SQ/CQ 深度分别为 16384/32768,每个 AIV 提交 65537 次操作,累计 1572880 个 WQE,完成 96 圈 SQ 和 48 圈 CQ 回绕。两个 rank 均为 valid=1,GTest PASS。 bash PTO_RDMA_BACKEND=HNS_1825 python3 tests/script/run_st.py -r npu -v a5 -t comm/tput_async_rdma -g TPutAsyncRdma.Vec_Int32_MultiAiv -d -n 2  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 移除中英文 TPUT_ASYNC_NOTIFY 文档中 RDMA 同 peer/QP 必须串行提交的限制;在现有 RDMA ST 中英文 README 的构建运行部分补充并发用例简介和筛选参数。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1727 | 10 天前 | |
fix: Resolve formatting and UTF-8 compliance issues Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1545 merge master into master fix: Resolve formatting and UTF-8 compliance issues Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: cann-robot Commit-by: cann-robot Merged-by: cann-robot Description: Fix source formatting, file endings, UTF-8 BOM encoding, and an invalid CANN license header. ## 描述 256 files changed, 359 insertions(+), 364 deletions(-). - **范围**:更新 ISA Markdown 和 pkg_inc/README.md 的文本编码,并格式化 CPU、NPU、通信、manual kernel 及 ST 相关 C/C++ 文件。 - **问题**:部分文件存在尾随空白、缺少文件末尾换行或不符合 clang-format;237 个文档文件带 UTF-8 BOM;tmov_nd2zn_kernel.cpp 的许可证正文不符合 OAT 标准。 - **修复**:清理尾随空白并补齐文件末尾换行,应用 clang-format,移除全部已跟踪文件的 UTF-8 BOM,并将 tmov_nd2zn_kernel.cpp 更新为标准 CANN 2.0 许可证头。 - **影响**:仅调整格式、编码和许可证文本,不改变代码接口及运行语义。 ## 关联的Issue ## 测试 - gitcode_commit.py precheck --repo . - 结果:PASS,确认已 rebase 到 upstream/master,changed-files pre-commit 及 OAT 检查通过。 - python3 -m pre_commit run trailing-whitespace --files - 结果:PASS。 - python3 -m pre_commit run end-of-file-fixer --files - 结果:PASS。 - python3 -m pre_commit run clang-format --files - 结果:PASS。 - git diff --cached --check - 结果:PASS,确认 staged diff 无 whitespace error。 - git ls-files -z | python3 -c '' - 结果:PASS,确认所有已跟踪普通文件均不含 UTF-8 BOM。 ## 文档更新 将 236 个 ISA 文档及 pkg_inc/README.md 转换为无 BOM 的纯 UTF-8 编码。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:格式、编码和许可证合规修复 See merge request: cann/pto-isa!1545 | 1 个月前 | |
feat(package): add pkg_inc for internal non-exposed headers Co-authored-by: zoujiangjiang<zoujiangjiang@h-partners.com> # message auto-generated for no-merge-commit merge: !1452 merge feature/pkg_inc into master feat(package): add pkg_inc for internal non-exposed headers Created-by: zoujiangjiang Commit-by: zoujiangjiang Merged-by: cann-robot Description: Per the CANN packaging convention, external headers live in include/ while non-exposed (internal) headers belong under pkg_inc/. Changes: - cmake/package.cmake: install pkg_inc/ alongside include/ into <arch>-linux/pkg_inc (COMPONENT pto-isa). - pkg_inc/pto/{comm,common,costmodel,cpu,npu}: skeleton mirroring the include/pto/ layout for future internal headers. Headers already placed under include/ are left unchanged. Installation: the CANN installer already creates the top-level pkg_inc -> <arch>-linux/pkg_inc symlink, so new internal headers become reachable at <install_path>/pkg_inc/pto/... after install, alongside the existing external headers under <install_path>/include/pto/.... See merge request: cann/pto-isa!1452 | 1 个月前 |
pkg_inc/
该目录用于存放非对外暴露(内部使用)的头文件,遵循 CANN 打包约定:
- 对外、构成公共 API 的头文件放在
include/下; - 非对外、仅内部模块使用的头文件放在
pkg_inc/下。
打包与安装
cmake/package.cmake 会将该目录与 include/ 并列安装到 <arch>-linux/pkg_inc。
CANN 安装器已自动创建顶层 pkg_inc -> <arch>-linux/pkg_inc 软链接,因此新增的
内部头文件安装后即可在 <安装路径>/pkg_inc/pto/... 访问。
新增内部头文件应放到对应的 pto/ 子目录下,而不是 include/pto/;已经放在
include/ 下的头文件保持不变。
目录结构
新增内部头文件与 include/pto/ 的布局保持一致:
pto/comm/:通信内部实现pto/common/:平台无关的共享内部实现pto/costmodel/:cost model 内部实现pto/cpu/:CPU 侧内部实现pto/npu/:NPU 侧内部实现(按 SoC 代际划分)