Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(.gitcode): 修正 ISSUE_TEMPLATE 模板中的英文拼写错误 Co-authored-by: gcw_Z57idahf<liaopinyi714@outlook.com> # message auto-generated for no-merge-commit merge: !1697 merge fix/issue-593-issue-template-typos into master fix(.gitcode): 修正 ISSUE_TEMPLATE 模板中的英文拼写错误 Created-by: gcw_Z57idahf Commit-by: gcw_Z57idahf Merged-by: cann-robot Description: 修正 .gitcode/ISSUE_TEMPLATE/feature-request.yml 中的英文拼写/语法错误: - Thanks for sending an requirement! → Thanks for sending a requirement!(requirement 以辅音音素开头,冠词应为 a) - label: Backgroud(背景信息) → label: Background(背景信息)(该字段名会直接渲染在 Issue 创建页上) > 说明:master 中 Background 已为正确拼写,本次仅剩冠词错误待修正。 关联 Issue: #593 See merge request: cann/pto-isa!1697 | 2 天前 | |
docs: document matmul accumulator stride constraint Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1572 merge int64 into master docs: document matmul accumulator stride constraint Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhhywang Commit-by: zhhywang Merged-by: cann-robot Description: 补充 TMATMUL Acc 目的 Tile 步幅约束及相关 TGEMV 继承说明,并统一相关文档的产品名称。 ## 描述 17 个文件 +44/-23。 - **范围**:TMATMUL、TGEMV、MX 指令文档、调试文档及算子实现技能文档。 - **问题**:现有文档未完整说明标准矩阵乘路径对 Acc 目的 Tile 的静态步幅约束,相关产品名称和部分实现范围表述不完整。 - **修复**:记录静态非 compact Acc Tile 的行步幅判定条件及不强制条件,在 TGEMV 变体中引用该约束,并统一相关产品名称和 MX 实现范围。 - **影响**:仅更新文档,不修改指令实现或测试行为。 ## 关联的Issue ## 测试 - gitcode_commit.py precheck --repo . - 结果:PASS;pre-commit 和 Full staged OAT verification 均通过(17 个文件)。 ## 文档更新 已更新 TMATMUL、TGEMV、MX 指令约束与实现范围文档,以及相关调试和技能文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1572 | 25 天前 | |
fix(costmodel): fix a5 vf costmodel implementation Co-authored-by: kay<kaywang@zju.edu.cn> # message auto-generated for no-merge-commit merge: !1700 merge fix_vf_costmodel_refact into master fix(costmodel): fix a5 vf costmodel implementation Created-by: XingkaiWang Commit-by: kay Merged-by: cann-robot Description: ## 描述 处理VF预测模块,改用轻量化拟合公式处理 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1700 | 8 天前 | |
typo-fix + eof: correct misspellings/rename identifiers (codespell/typos) and fix missing EOF newlines Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1337 merge master into master typo-fix + eof: correct misspellings/rename identifiers (codespell/typos) and fix missing EOF newlines Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhywang Commit-by: zhywang Merged-by: cann-robot Description: 全仓拼写清理 + EOF 换行归一——新增 typos.toml(typos 工具配置)扫描源码拼写并据此修正字符串/注释/文档拼写,将拼错的内部标识符(命名空间、include guard、函数/变量名)一并改名;codespell -L 白名单扩展领域词;含文件名修正及少量 ruff 无用 import 清理。另补 41 个文件缺失的末行换行(end-of-file-fixer)。compatiable 作为外部 CANN-cmake 依赖文件名保留并加白名单。 ## 描述 158 文件 +323/−310,拼写归一,**含标识符 rename(非纯格式化)**: - **配置**:新增 typos.toml(领域词/短标识符白名单:nd/cann/subtile/fo/adn/eles/ands/tbe/typ/pn/binar/alog/mis/vitaliy/compatiable、SUBTILE/SUBTILES);.pre-commit-config.yaml 仅扩展 codespell -L 白名单(+fo/adn/eles/binar/mis/compatiable),--skip *.py/*.cpp/*.hpp/*.c/*.h 不变(源码拼写由 typos 工具负责)。 - **标识符 rename**(内部符号,同文件/编译单元内调用点同步更新): - 命名空间 TMatmulInternel→TMatmulInternal、TCvtInternel→TCvtInternal - include guard EXTENTION_CSRC_UTILS_H→EXTENSION_*、ELEMENT_TILE_SCLAR_OP_HPP→...SCALAR... - 函数 ReachExhaused/WriteExhaused→...Exhausted、complate_s32/s16_data→complete_* - 变量 vaild/Vaild→valid/Valid(77 处,主体)、fpAddres→fpAddress、enbleCountMode→enableCountMode、NeetCntDstIdx→NeedCntDstIdx、paramter→parameter - **字符串/注释/文档拼写**:convertion→conversion、Unsupport→Unsupported、ony→only、Undelying→Underlying、Indicies→Indices、differnent→different、Iteraions→Iterations、Simpify→Simplify、addressess→addresses、particulary→particularly、seperate→separate、accross→across(.md 中英双语同步)。 - **文件名修正**:图 permuate_all2all_count.png→permute_all2all_count.png。 - **EOF 换行归一(end-of-file-fixer)**:41 个文件补缺失末行 \n——本 PR 涉及的 ElementOp.h、tcmp(s)/gen_data.py、kirinDev0000 5 个 main.cpp(10)+ 全仓其余 kirinDev0000 testcases 与 tinterleave(31);多尾随换行 0。 - **compatiable**:外部依赖 version_compatiable.inc 路径改名已撤回,改为白名单(须与依赖方拼写一致)。 - **ruff**:删少量无用 import(shutil、Tuple)。 ## 关联的Issue ## 测试 - **标识符一致性**:各 rename 均在所在文件内同步更新定义与调用点,行为不变。 - **白名单收敛**:typos.toml/codespell -L 已收录全部领域词与外部依赖名,避免误报。 - **EOF 验证**:全仓复扫缺/多末行换行均 0;pre-commit run end-of-file-fixer --all-files Passed(CI 等价)。 - ⚠️ 含标识符 rename(非纯格式化),本机无 CANN/CPU-sim 工具链未做编译/单测;建议可编译环境跑一次 build + 测试复核(重点确认 namespace/guard/valid 系列无外部引用残留)。 - **改动量**:158 文件 +323/−310(.cpp 77 / .hpp 34 / .py 24 / .md 9 / .h 7 / .sh 4 / .yaml 1 / .toml 1 / .png 1)。 ## 文档更新 .md 仅修正拼写(中英双语),无内容/结构改动。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:全仓拼写清理(codespell/typos 修正拼写、rename 拼错标识符、新增 typos.toml)+ EOF 末行换行归一(end-of-file-fixer,41 文件);外部依赖名 compatiable 加白名单保留。 See merge request: cann/pto-isa!1337 | 2 个月前 | |
Revert "feat: support A5 UB-to-L1 ND-to-NZ with A2A3 path guards" Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1741 merge master into master Revert "feat: support A5 UB-to-L1 ND-to-NZ with A2A3 path guards" Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: This reverts commit 7e58ace4b2d44f792486199f64118e5096bf03ba. See merge request: cann/pto-isa!1741 | 2 天前 | |
Revert "feat: support A5 UB-to-L1 ND-to-NZ with A2A3 path guards" Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1741 merge master into master Revert "feat: support A5 UB-to-L1 ND-to-NZ with A2A3 path guards" Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: This reverts commit 7e58ace4b2d44f792486199f64118e5096bf03ba. See merge request: cann/pto-isa!1741 | 2 天前 | |
Add A6 HiF4 (HiFloat4) GEMM performance demo Co-authored-by: ivanmang<mang.hao.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !1726 merge master into master Add A6 HiF4 (HiFloat4) GEMM performance demo Created-by: ivanmang Commit-by: ivanmang Merged-by: cann-robot Description: ## 描述 Add A6 HiF4 (HiFloat4) GEMM performance demo 在 kernels/manual/a6/matmul_hif4_performance 下新增 A6(dav-9201)HiF4(HiFloat4)GEMM 性能示例,参照 A5 的 matmul_mxfp4_performance 示例实现: - 流水线:GM(BF16) → TLOAD → L1 → TEXTRACT → L0A/L0B + L0AMX/L0BMX → TMATMUL_MX → L0C(FP32) → TSTORE → GM(BF16) - 多核切分(4×4 核心网格)、M/N/K 分块(baseM/K/N = 256) - L1 数据双缓冲 + L0A/L0B 数据乒乓;L0AMX/L0BMX scale 单缓冲(HiF4 scale tile 4 KB 恰好占满 L0AMX) - 全 K 的 HiF4 scale(HIF4_A_ZZ/HIF4_B_NN,预分块) 每个 base block 加载一次,在 TEXTRACT 阶段按 K 切 片 - 配套 gen_data.py(HiF4 量化 + 三级 Ea/Eb/Ec + 标 杆生成)与 host 侧精度校验 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 - 环境:dav_9201 仿真器 (SOC_VERSION=dav_9201,bisheng 编译器) - 命令: bash cd kernels/manual/a6/matmul_hif4_performance python3 scripts/gen_data.py bash run.sh -r sim -v dav_9201 - 结果:test success,max diff: 0.000000(3% 相对误 差阈值下 0 误差) - 数据规模:m=k=n=2048 ## 文档更新 - 新增 kernels/manual/a6/matmul_hif4_performance/README. md / README_zh.md - 新增 kernels/manual/a6/README.md / README_zh.md - 更新 kernels/manual/README.md / README_zh.md(平 台列表新增 a6/) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1726 | 3 天前 | |
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 | 3 天前 | |
docs: correct .run installer filename glob in install guides Co-authored-by: f290384664<290384664@qq.com> # message auto-generated for no-merge-commit merge: !1621 merge master into master docs: correct .run installer filename glob in install guides Created-by: f290384664 Commit-by: f290384664 Merged-by: cann-robot Description: ## 描述 The makeself .run package follows the CANN naming convention cann-<component>_<version>_linux-<arch>.run (e.g. cann-pto-isa_9.1.0_linux-aarch64.run), produced by set_cann_cpack_config(pto-isa ...) from cann-cmake. The docs used the glob pto_isa_*.run, which never matched the actual filename because the leading "cann-" prefix was missing, so following the install steps failed with "No such file or directory". This keeps the docs consistent with the naming already used by scripts/install_pto.sh and the PR pipeline workflow. ## 关联的Issue https://gitcode.com/cann/pto-isa/issues/572 ## 文档更新 - docs/getting-started.md - docs/getting-started_zh.md - scripts/package/README.md - scripts/package/README_zh.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1621 | 18 天前 | |
Revert "feat: support A5 UB-to-L1 ND-to-NZ with A2A3 path guards" Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1741 merge master into master Revert "feat: support A5 UB-to-L1 ND-to-NZ with A2A3 path guards" Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: This reverts commit 7e58ace4b2d44f792486199f64118e5096bf03ba. See merge request: cann/pto-isa!1741 | 2 天前 | |
Repo-wide pre-commit: reflow all C++ under updated .clang-format and modernize pre-commit/OAT config Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1314 merge master into master Repo-wide pre-commit: reflow all C++ under updated .clang-format and modernize pre-commit/OAT config Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhhywang Commit-by: zhhywang Merged-by: cann-robot Description: 以更新后的 .clang-format(核心:PointerAlignment Right→Left;另 AfterEnum true→false、AlwaysBreakBeforeMultilineStrings true→false、AlignAfterOpenBracket AlwaysBreak、AllowShortFunctionsOnASingleLine false→true)为基准,对**全仓 C++**(含 tests//include//kernels//demos/)做确定性格式化重排;并重写 .pre-commit-config.yaml(gitcode 镜像、clang-format v16→v18,新增 ruff/codespell/typos/OAT 全套 hook)、细化 OAT.xml 合规策略。**不改变任何功能逻辑**,全仓无 Python 改动。 ## 描述 本次提交为「全仓 C++ 格式化 + pre-commit 工程配置升级」,原则:**只做确定性风格重排与配置强化,零逻辑变更**。按改动分三类: 1. **全仓 C++ 格式化(主体)**:clang-format 重排 1841 个 C++ 文件(.cpp 1273 / .hpp 506 / .h 58 / .cc 4),覆盖 tests(1227)、include(455)、kernels(137)、demos(22)。改动为指针对齐 Type &x→Type& x 及按新列宽/换行规则的逐行重排;每个删除行均有等价新增行(token 不变),git diff -w 验证为纯重排。净行数略减(短函数/紧凑换行合并)。 2. **.pre-commit-config.yaml 重写**:mirror 切换至 gitcode.com;clang-format v16.0.0→v18.1.8;补齐 pre-commit-hooks(trailing-ws/eof/check-yaml/large-files/merge-conflict/private-key/json);新增 ruff-check + ruff-format、codespell、typos、本地 oat-check;设 minimum_pre_commit_version: 4.0.0、default_stages:[pre-commit];顶层 exclude 增 ^(tests|demos)/.*\.py$。 3. **OAT.xml 合规策略细化**:license policyitem 补 filefilter/desc;新增 <policyitem type="copyright" name="Huawei Technologies Co., Ltd" .../>(Copyright 噪声下降);defaultPolicyFilter 增配置/图片/二进制文件过滤(xml/yaml/csv/png/so/o/om 等)。 > 说明:本次**无任何 Python 文件改动**(0 个 .py);codespell hook --skip *.cpp/*.hpp/*.c/*.h,不检查 C++ 拼写,故全仓 diff 无标识符 rename、无拼写修复、无 # noqa。 ## 关联的Issue ## 测试 - **pre-commit 全量**:trailing-whitespace / end-of-file-fixer / check-yaml / check-added-large-files / check-merge-conflict / detect-private-key / clang-format 等 hook PASS。 - **格式化收敛**:抽样文件 -w 验证为纯重排(token 等价,无语义变化)。 - ⚠️ **未做编译验证**(本机无 CANN 工具链):格式化不改逻辑;建议在可编译环境跑一次 build 复核。 - **改动量**:1844 文件,+69754 / −80029(主体为格式化重排,净行数略减)。 ## 文档更新 无文档内容改动;.clang-format 为本仓既有 Allman 规则更新(本次格式化基准)。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:全仓 pre-commit 工程治理——按更新后的 .clang-format(PointerAlignment Right→Left 等)重排全仓 C++,并重写 .pre-commit-config.yaml/细化 OAT.xml;无 Python 改动、无逻辑变更。 See merge request: cann/pto-isa!1314 | 2 个月前 | |
fix(costmodel) optimize precision Co-authored-by: ZhangZGC<8623924@qq.com> # message auto-generated for no-merge-commit merge: !1674 merge master into master fix(costmodel) optimize precision Created-by: ZhangZGC Commit-by: ZhangZGC Merged-by: cann-robot Description: ## 现状摘要 - 公共 PTO API 功能覆盖率:**120/127(94.49%)**。覆盖表示 costmodel 能否预测 cycle。 - costmodel与实测误差在 10% 以内的 case:**1073/1302(82.41%)**。 - 绝对相对误差:中位数 **1.36%**,平均数 **9.69%**,P90 **34.98%**,最大值 **300.00%**。 ## 修改背景 当前 A2/A3 打桩 CostModel 存在以下问题: - 部分 CCE 指令仍使用统一的粗粒度线性参数,未区分 dtype、启动开销和非线性流水特征。 - PTO 指令展开为多条 CCE 指令后,简单累加 CCE completion cycle 无法正确表达串并行、事件同步、逐行循环和 mask 边界。 - 部分 PTO 指令缺少 CostModel 包装接口,或者记录的 opcode、shape、dtype 与实际建模对象不一致。 - PTO 级修正只更新 trace、未同步回输出 tile,导致后续依赖读取到旧 cycle。 - CCE 拟合参数散落在 C++ 代码中,不便维护和重新生成。 本 PR 在不修改打桩基础设施和 PTO 对外调用方式的前提下,完善 CCE 基础模型,并新增 PTO 级混合估算逻辑,提高 CostModel 的预测精度和功能覆盖率。 ## 主要修改 ### 1. CCE cycle profile 数据化 - 新增 cce_cycle_profiles.csv,统一维护 A2/A3 CCE vector 指令的拟合参数。 - 新增 gen_cce_cycle_profiles_header.py,在构建前将 CSV 生成强类型 C++ profile。 - 新增以下通用 profile 类型: - LinearCycleProfile - IntegerLinearCycleProfile - ExpFillCycleProfile - 根据元素类型分别选择 FP16、FP32 和 integer 参数,不再将整数类型统一按浮点类型估算。 - 支持启动开销、repeat 斜率、流水填充、指数衰减、有效 repeat 上限和逐调用串行化。 - 对浮点拟合结果统一进行正数四舍五入,保留小数参数的拟合精度。 - 将 repeat 宽度、默认启动开销、尾部周期等数值定义为具名常量,避免在实现中引入魔鬼数字。 本次更新涉及向量计算、比较、浮点转换和整数转换等 CCE CostModel。 ### 2. 修正 CCE mask 和同步语义 - set_vector_mask 只负责记录 mask 内容,不再通过 mask 值推断 count/normal 模式。 - count/normal 模式仅由 set_mask_count 和 set_mask_norm 切换,避免普通连续 bit mask 被误判为 count mask。 - count 模式下,根据有效元素数量和 dtype 字节数推导实际 vector repeat。 - PIPE_V barrier 仅在存在未完成的 Vector 或 UB-to-UB 工作时收取 drain cycle。 - Vector barrier 同步清理 UB-to-UB 流水队列;空 barrier 和非 Vector barrier 不再无条件增加 cycle。 - 为 VCMPV/VCMPVS 增加 predicate 输出块未对齐时的 completion 开销模型。 ### 3. 新增 PTO 级混合 CostModel 新增 hybrid_costmodel.hpp,用于处理单纯累加底层 CCE cycle 无法准确表达的 PTO 组合语义。 估算流程如下: 1. PTO 实现照常展开并记录底层 CCE 调用。 2. 对已支持的 PTO 指令,结合 opcode、源/目的 shape、dtype、原始 CCE cycle 和 CCE trace 计算 PTO 最终 cycle。 3. 未命中 PTO 级模型时保留原始 CCE 结果。 4. 原始 CCE 结果为 0 时,再使用公式后端兜底。 本次新增或完善的 PTO 级估算主要覆盖: - 行列归约:TROWMAX、TROWMIN、TROWSUM、TCOLMAX、TCOLMIN、TCOLSUM。 - Arg 类指令:行、列及分块 ARGMAX/ARGMIN。 - 比较与选择:TCMP、TCMPS、TSEL、TSELS、TNOT。 - 数学函数:TFMOD/TFMODS、TREM/TREMS、TRECIP、TPOW/TPOWS 及部分 FP16 unary 小 shape。 - 复合算术:整数二元运算、标量和多 CCE 移位、TMADD、TMULA、TAXPY、TPRELU。 - 展开类指令:TROWEXPAND*、TEXPANDS。 - 搬运和布局类指令:UB-to-UB、TCONCAT、gather pattern、TIMG2COL。 - 其他组合指令:TGEMV、TDEQUANT、按位运算组合等。 该层主要修正 PTO 层才能确定的多 CCE 串并行关系、事件同步、逐行执行、mask 边界及中间 tile 开销。 ### 4. 修正 PTO 记录和 cycle 回写链路 - 对列归约和列 Arg 指令使用源 tile 的工作 shape,不再误用 1 x cols 的输出 shape。 - 同时记录源/目的 tile 的 shape 和 dtype,为转换、选择及归约类模型提供完整输入。 - PTO 级模型产生最终 cycle 后,同时更新 PTO trace 和输出 tile 的 LastCycle。 - 调整 InjectTileCycles 的执行位置,保证后续依赖、输出 tile 和导出记录使用相同的最终 cycle。 - 对整数 TDIVS 增加公式估算兜底。 - 为公式表未覆盖的 TROWEXPAND shape/dtype 增加逐行事件模型,避免回退到不适用的通用元素吞吐公式。 ### 5. 修正具体指令的建模问题 #### TSELS - 按元素宽度区分 repeat: - FP16/BF16/INT16/UINT16:128 elements/repeat。 - FP32/INT32/UINT32:64 elements/repeat。 - 未识别 dtype 不启用 PTO 级修正,保留原始 CCE 模型结果,避免错误套用 16-bit 参数。 - 保留 16-bit 类型在 63→64 元素处由 mask dispatch 路径切换产生的 cycle 边界。 #### TDEQUANT - cycle 调整改用饱和减法,避免无符号整数下溢后产生异常的大 cycle。 #### TRECIP - 底层仍复用 TDIVS 实现,但在 CostModel trace 中保留公开 opcode TRECIP,避免按 TRECIP 查询时没有记录。 ### 6. 补齐 CostModel PTO 接口 新增或修正以下 CostModel 包装接口: - TMULA - TPOW、TPOWS - 双输出版本 TROWARGMAX、TROWARGMIN - TREM、TREMS 的算法模板参数和临时 tile 参数 - 无 indexes 重载的 TSCATTER - TPARTARGMAX、TPARTARGMIN - TCOLARGMAX、TCOLARGMIN ### 7. 复用真实 TPow 展开逻辑 - CostModel 直接复用 A2/A3 TPow.hpp 的 PTO→CCE 展开逻辑,减少模型实现与设备实现的偏差。 - 仅将直接解引用 UB 地址、执行标量修复循环的硬件专用代码放入 #ifndef __COSTMODEL。 - Host CostModel 仍会记录可建模的 CCE 调用和同步关系,但不会访问符号 UB 地址。 ### 8. 去重指令实现头文件 - A2/A3 不再分别维护 CostModel 和设备侧两套重复 include 列表。 - 统一使用一份指令头文件列表,仅对 CostModel 无法编译或无须参与打桩的硬件专用头文件增加条件保护。 - 删除重复的 TCvt.hpp include。 - A5 将 TAssign、TSync、SyncAll、TAdd 作为公共 include,其余设备实现保留在非 CostModel 分支。 该修改只整理头文件依赖,不改变非 CostModel PTO API 和设备执行逻辑。 ### 9. 更新 ST 覆盖和固定 cycle - 新增 TFMOD、TFMODS CostModel ST。 - 更新以下指令的固定 cycle 和相关 shape/dtype 用例: - TADD/TADDS、TSUB - TMUL/TMULS - TMIN/TMINS/TMAX - TDIV、TCVT - TEXP、TSQRT、TRSQRT - TSEL/TSELS - TCOLMAX/TCOLSUM - TROWMAX/TROWMIN/TROWSUM/TROWEXPAND - TTRANS - TSELS 增加 FP16、INT32、UINT16、UINT32 以及 63/64/128 等边界用例。 ### 10. 更新生成流程和文档 - tests/run_costmodel.py 在配置任一 CostModel 测试套件前生成 A2/A3 CCE cycle profile 头文件。 - 保持 A2/A3 和 A5 公式参数头文件的自动生成流程。 - 更新中英文 CostModel backend 文档,说明 CCE profile 和公式参数的生成方式。 - 将 cce_cycle_profiles_generated.hpp 加入 .gitignore,生成文件不提交到仓库。 ## 影响范围 - 本 PR 的主要影响范围为 A2/A3 打桩 CostModel 的指令覆盖和 cycle 预测结果。 - 公式 CostModel 的调用方式不变,仅保留其作为未建模或原始 CCE cycle 为 0 时的兜底。 - PTO 对外接口调用方式不变。 - 非 CostModel 路径仅涉及 include 去重和 TPow.hpp 的条件编译边界,真实 NPU 指令实现未改变。 - CCE profile 及公式参数的生成头文件均为构建产物,不纳入提交。 ## 验证结果 - [x] CostModel 标准 ST:46/46 通过 - [x] A2/A3 公式后端 st_fit:4/4 通过 - [x] A5 公式后端 st_a5_fit:12/12 通过 - [x] CostModel 测试合计:62/62 通过 - [x] TSELS shape/dtype 专项用例:20/20 通过 - [x] A3 非 CostModel TADD 设备编译通过 - [x] A5 非 CostModel TADD 设备编译通过 - [x] TPOW/TPOWS CostModel 实例化及编译通过 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1674 | 2 天前 | |
typo-fix + eof: correct misspellings/rename identifiers (codespell/typos) and fix missing EOF newlines Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1337 merge master into master typo-fix + eof: correct misspellings/rename identifiers (codespell/typos) and fix missing EOF newlines Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhywang Commit-by: zhywang Merged-by: cann-robot Description: 全仓拼写清理 + EOF 换行归一——新增 typos.toml(typos 工具配置)扫描源码拼写并据此修正字符串/注释/文档拼写,将拼错的内部标识符(命名空间、include guard、函数/变量名)一并改名;codespell -L 白名单扩展领域词;含文件名修正及少量 ruff 无用 import 清理。另补 41 个文件缺失的末行换行(end-of-file-fixer)。compatiable 作为外部 CANN-cmake 依赖文件名保留并加白名单。 ## 描述 158 文件 +323/−310,拼写归一,**含标识符 rename(非纯格式化)**: - **配置**:新增 typos.toml(领域词/短标识符白名单:nd/cann/subtile/fo/adn/eles/ands/tbe/typ/pn/binar/alog/mis/vitaliy/compatiable、SUBTILE/SUBTILES);.pre-commit-config.yaml 仅扩展 codespell -L 白名单(+fo/adn/eles/binar/mis/compatiable),--skip *.py/*.cpp/*.hpp/*.c/*.h 不变(源码拼写由 typos 工具负责)。 - **标识符 rename**(内部符号,同文件/编译单元内调用点同步更新): - 命名空间 TMatmulInternel→TMatmulInternal、TCvtInternel→TCvtInternal - include guard EXTENTION_CSRC_UTILS_H→EXTENSION_*、ELEMENT_TILE_SCLAR_OP_HPP→...SCALAR... - 函数 ReachExhaused/WriteExhaused→...Exhausted、complate_s32/s16_data→complete_* - 变量 vaild/Vaild→valid/Valid(77 处,主体)、fpAddres→fpAddress、enbleCountMode→enableCountMode、NeetCntDstIdx→NeedCntDstIdx、paramter→parameter - **字符串/注释/文档拼写**:convertion→conversion、Unsupport→Unsupported、ony→only、Undelying→Underlying、Indicies→Indices、differnent→different、Iteraions→Iterations、Simpify→Simplify、addressess→addresses、particulary→particularly、seperate→separate、accross→across(.md 中英双语同步)。 - **文件名修正**:图 permuate_all2all_count.png→permute_all2all_count.png。 - **EOF 换行归一(end-of-file-fixer)**:41 个文件补缺失末行 \n——本 PR 涉及的 ElementOp.h、tcmp(s)/gen_data.py、kirinDev0000 5 个 main.cpp(10)+ 全仓其余 kirinDev0000 testcases 与 tinterleave(31);多尾随换行 0。 - **compatiable**:外部依赖 version_compatiable.inc 路径改名已撤回,改为白名单(须与依赖方拼写一致)。 - **ruff**:删少量无用 import(shutil、Tuple)。 ## 关联的Issue ## 测试 - **标识符一致性**:各 rename 均在所在文件内同步更新定义与调用点,行为不变。 - **白名单收敛**:typos.toml/codespell -L 已收录全部领域词与外部依赖名,避免误报。 - **EOF 验证**:全仓复扫缺/多末行换行均 0;pre-commit run end-of-file-fixer --all-files Passed(CI 等价)。 - ⚠️ 含标识符 rename(非纯格式化),本机无 CANN/CPU-sim 工具链未做编译/单测;建议可编译环境跑一次 build + 测试复核(重点确认 namespace/guard/valid 系列无外部引用残留)。 - **改动量**:158 文件 +323/−310(.cpp 77 / .hpp 34 / .py 24 / .md 9 / .h 7 / .sh 4 / .yaml 1 / .toml 1 / .png 1)。 ## 文档更新 .md 仅修正拼写(中英双语),无内容/结构改动。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:全仓拼写清理(codespell/typos 修正拼写、rename 拼错标识符、新增 typos.toml)+ EOF 末行换行归一(end-of-file-fixer,41 文件);外部依赖名 compatiable 加白名单保留。 See merge request: cann/pto-isa!1337 | 2 个月前 | |
低优先级指令&测试套相关内容 Co-authored-by: m0_71310678<lizhexun2@huawei.com> # message auto-generated for no-merge-commit merge: !1432 merge third-priority-branch into master 低优先级指令&测试套相关内容 Created-by: m0_71310678 Commit-by: m0_71310678 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复了CCE_VL硬编码导致的指令问题、用软实现和断言规范了kirinDev0000上的整形除法相关指令能力。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1432 | 1 个月前 | |
cmake中的组件名(component)从pto_isa修改为pto-isa Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !1440 merge 20260807-support-superbuild into master cmake中的组件名(component)从pto_isa修改为pto-isa Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: ## 描述 cmake中的组件名(component)从pto_isa修改为pto-isa。 - cmake/package.cmake中CMAKE_SOURCE_DIR修改为CMAKE_CURRENT_SOURCE_DIR,适配多仓联编场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 对比修改前后pto-isa包二进制,一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构 See merge request: cann/pto-isa!1440 | 1 个月前 | |
Refactor the readme and update the implementation status of the instructions Co-authored-by: SherwinBai<baixiaorui1@h-partners.com> # message auto-generated for no-merge-commit merge: !754 merge feature/refactor_readme_clean into master Refactor the readme and update the implementation status of the instructions Created-by: SherwinBai Commit-by: SherwinBai Merged-by: cann-robot Description: ## 描述 关键修改: - 重构 README.md / README_zh.md,优化整体结构、导航信息和项目介绍 - 更新 CONTRIBUTING.md / CONTRIBUTING_zh.md 增加提交前本地检查pre-commit工具使用说明 - 门户README中文档构建流程下沉到 docs/mkdocs/README*.md - 同步并完善 include/README.md / include/README_zh.md 中的 PTO 指令实现状态表 - 对照 docs/isa/ 及其子目录补充缺失指令项,并调整状态说明位置与描述 - 同步更新多篇 ISA 文档、相关链接及部分配图内容 影响范围: - 仅涉及文档更新 - 不涉及功能逻辑和运行时行为变更 ## 类型标签 - [ ] 文档更新 See merge request: cann/pto-isa!754 | 5 个月前 | |
Refactor the readme and update the implementation status of the instructions Co-authored-by: SherwinBai<baixiaorui1@h-partners.com> # message auto-generated for no-merge-commit merge: !754 merge feature/refactor_readme_clean into master Refactor the readme and update the implementation status of the instructions Created-by: SherwinBai Commit-by: SherwinBai Merged-by: cann-robot Description: ## 描述 关键修改: - 重构 README.md / README_zh.md,优化整体结构、导航信息和项目介绍 - 更新 CONTRIBUTING.md / CONTRIBUTING_zh.md 增加提交前本地检查pre-commit工具使用说明 - 门户README中文档构建流程下沉到 docs/mkdocs/README*.md - 同步并完善 include/README.md / include/README_zh.md 中的 PTO 指令实现状态表 - 对照 docs/isa/ 及其子目录补充缺失指令项,并调整状态说明位置与描述 - 同步更新多篇 ISA 文档、相关链接及部分配图内容 影响范围: - 仅涉及文档更新 - 不涉及功能逻辑和运行时行为变更 ## 类型标签 - [ ] 文档更新 See merge request: cann/pto-isa!754 | 5 个月前 | |
fix: comprehensive punctuation, spelling, encoding, and C++ portability fixes Co-authored-by: SherwinBai<baixiaorui1@h-partners.com> # message auto-generated for no-merge-commit merge: !979 merge feature/fix-problems into master fix: comprehensive punctuation, spelling, encoding, and C++ portability fixes Created-by: SherwinBai Commit-by: SherwinBai Merged-by: cann-robot Description: ## 概述 对仓库进行全面的质量问题修复,涵盖标点符号错误、英文拼写/语法错误、中英文编码乱码、C++ 可移植性问题。 ## 修改内容 ### 新增 FAQ 页面,建立项目常见问题知识库 在仓库根目录新增中英文 FAQ 页面,用于记录开发者在 PTO 项目中遇到的常见问题及解决方案,降低重复排查成本。 FAQ.md — 英文版 FAQ_zh.md — 中文版 首条收录问题:调试模式(-d)下源码修改不生效 ### 关键 Bug 修复 - **[MXTypes.hpp]** 修复子正常浮点数转换中 for 循环体后缺少分号的 bug,该错误导致子正常数表示计算在循环体内执行而非循环后执行。 ### 编码乱码修复 - **[debug_zh.md]** 修复约 430 条断言条目中英文字母被中文字符系统性替换的问题( in→在、or→或、to→到、and→和),恢复正确的代码标识符路径。 ### 英文语法/拼写修复(debug.md) - constructors is → constructor is(4 处) - 32 bytes align → 32-byte aligned(3 处) - mube be → must be the same - Rigth → Right、shouuld → should - ony support → only support(3 处) - must be must be → must be(6 处,含 TGATHER.md、debug_zh.md) - GetValidRow() → GetValidCol()(CA-0001 逻辑修复) ### 英文文件中的中文标点修复 - [TTRANS.md]、[TABS.md]、[TGATHER.md]、[GlobalTensor.md]、[complex-ops.md]、matmul README — 中文标点 : , 。 、 → 英文标点 : , . , - [SKILL.md] — 14 个代码块中的中文标点替换 ### 中文文件修复 - [topk/README_zh.md] — 英文句号 . → 中文句号 。 - [auto_mode/README_zh.md] — 声定义 → 声明定义 - [topk/README.md] — seperately→separately、dependece→dependence、corresonding→corresponding ### C++ 可移植性修复 - long int/long → int64_t:[TBroadcast.hpp]、[TGather.hpp]、[TScatter.hpp]、[TGet.hpp] - dstSignaData → dstSignalData:[TNotify.hpp] - CAST_ODD_THRESHHOLD → CAST_ODD_THRESHOLD:[TCvt.hpp] ## 测试计划 - [ ] A2/A3/A5 目标构建验证 - [ ] 运行 tests/cpu/st/ 模拟器测试确认 MXTypes.hpp 修复正确 - [ ] 抽查 debug.md / debug_zh.md 断言 ID 可读性 - [ ] 检查 TTRANS.md、TGATHER.md 英文格式正确 ## 关联的ISSUE https://gitcode.com/cann/pto-isa/issues/375 ## 类型标签 - [ ] 文档更新 See merge request: cann/pto-isa!979 | 3 个月前 | |
fix: comprehensive punctuation, spelling, encoding, and C++ portability fixes Co-authored-by: SherwinBai<baixiaorui1@h-partners.com> # message auto-generated for no-merge-commit merge: !979 merge feature/fix-problems into master fix: comprehensive punctuation, spelling, encoding, and C++ portability fixes Created-by: SherwinBai Commit-by: SherwinBai Merged-by: cann-robot Description: ## 概述 对仓库进行全面的质量问题修复,涵盖标点符号错误、英文拼写/语法错误、中英文编码乱码、C++ 可移植性问题。 ## 修改内容 ### 新增 FAQ 页面,建立项目常见问题知识库 在仓库根目录新增中英文 FAQ 页面,用于记录开发者在 PTO 项目中遇到的常见问题及解决方案,降低重复排查成本。 FAQ.md — 英文版 FAQ_zh.md — 中文版 首条收录问题:调试模式(-d)下源码修改不生效 ### 关键 Bug 修复 - **[MXTypes.hpp]** 修复子正常浮点数转换中 for 循环体后缺少分号的 bug,该错误导致子正常数表示计算在循环体内执行而非循环后执行。 ### 编码乱码修复 - **[debug_zh.md]** 修复约 430 条断言条目中英文字母被中文字符系统性替换的问题( in→在、or→或、to→到、and→和),恢复正确的代码标识符路径。 ### 英文语法/拼写修复(debug.md) - constructors is → constructor is(4 处) - 32 bytes align → 32-byte aligned(3 处) - mube be → must be the same - Rigth → Right、shouuld → should - ony support → only support(3 处) - must be must be → must be(6 处,含 TGATHER.md、debug_zh.md) - GetValidRow() → GetValidCol()(CA-0001 逻辑修复) ### 英文文件中的中文标点修复 - [TTRANS.md]、[TABS.md]、[TGATHER.md]、[GlobalTensor.md]、[complex-ops.md]、matmul README — 中文标点 : , 。 、 → 英文标点 : , . , - [SKILL.md] — 14 个代码块中的中文标点替换 ### 中文文件修复 - [topk/README_zh.md] — 英文句号 . → 中文句号 。 - [auto_mode/README_zh.md] — 声定义 → 声明定义 - [topk/README.md] — seperately→separately、dependece→dependence、corresonding→corresponding ### C++ 可移植性修复 - long int/long → int64_t:[TBroadcast.hpp]、[TGather.hpp]、[TScatter.hpp]、[TGet.hpp] - dstSignaData → dstSignalData:[TNotify.hpp] - CAST_ODD_THRESHHOLD → CAST_ODD_THRESHOLD:[TCvt.hpp] ## 测试计划 - [ ] A2/A3/A5 目标构建验证 - [ ] 运行 tests/cpu/st/ 模拟器测试确认 MXTypes.hpp 修复正确 - [ ] 抽查 debug.md / debug_zh.md 断言 ID 可读性 - [ ] 检查 TTRANS.md、TGATHER.md 英文格式正确 ## 关联的ISSUE https://gitcode.com/cann/pto-isa/issues/375 ## 类型标签 - [ ] 文档更新 See merge request: cann/pto-isa!979 | 3 个月前 | |
origin code Signed-off-by: yujiangtao <yujiangtao11@h-partners.com> | 8 个月前 | |
support python package Co-authored-by: zhangjian_hz11<zhjian.zhang@huawei.com> # message auto-generated for no-merge-commit merge: !951 merge pypackage into master support python package Created-by: zhangjian_hz11 Commit-by: zhangjian_hz11 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!951 | 4 个月前 | |
revert: restore TMULA ISA API Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1558 merge rename into master revert: restore TMULA ISA API Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhhywang Commit-by: zhhywang Merged-by: cann-robot Description: 回退 TMULADDDST ISA API 恢复提交,在公共接口、后端、ST、文档和合规配置中统一恢复 TMULA,并完善迁移索引。 ## 描述 40 个文件,新增 294 行、删除 304 行。 - **范围**:更新公共指令接口与 event、CPU/A2A3/A5 后端实现及对应 ST,同步 ISA 文档、MkDocs、索引与 SVG 生成配置,并完善 OAT 数据文件过滤规则。 - **问题**:MR !1538 恢复了 TMULADDDST 名称,与既定的融合乘加指令重命名结果不一致;同时迁移索引未完整说明 TMULADDDST 到 TMULA 的映射,严格 JSON 格式的 manifest 也会被 OAT 误判为缺少版权头。 - **修复**:回退 TMULADDDST 恢复改动,将公开接口、实现符号、文件名、测试用例和文档统一恢复为 TMULA;补齐索引生成器中的双重命名迁移说明,并对 YAML/YML 数据文件关闭版权头扫描。 - **影响**:公开 API 从 TMULADDDST 恢复为 TMULA;兼容性文档保留名称迁移说明,不提供旧名称 wrapper;严格 JSON 格式的 manifest 保持可被现有生成脚本读取。 ## 关联的Issue https://gitcode.com/cann/pto-isa/merge_requests/1538 ## 测试 - gitcode_commit.py precheck --repo . - 结果:PASS,pre-commit 检查通过,完整 OAT 校验通过 26 个文件。 - python3 docs/tools/gen_isa_indexes.py --check - 结果:PASS,ISA 索引与 manifest 同步。 - python3 docs/tools/gen_isa_svgs.py --check - 结果:PASS,指令 SVG 文件完整。 - bash -n tests/run_st.sh - 结果:PASS。 ## 文档更新 已同步更新 ISA 中英文文档、指令清单、MkDocs、索引生成配置、兼容性说明和指令图。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:API 回退 See merge request: cann/pto-isa!1558 | 29 天前 | |
fix: comprehensive punctuation, spelling, encoding, and C++ portability fixes Co-authored-by: SherwinBai<baixiaorui1@h-partners.com> # message auto-generated for no-merge-commit merge: !979 merge feature/fix-problems into master fix: comprehensive punctuation, spelling, encoding, and C++ portability fixes Created-by: SherwinBai Commit-by: SherwinBai Merged-by: cann-robot Description: ## 概述 对仓库进行全面的质量问题修复,涵盖标点符号错误、英文拼写/语法错误、中英文编码乱码、C++ 可移植性问题。 ## 修改内容 ### 新增 FAQ 页面,建立项目常见问题知识库 在仓库根目录新增中英文 FAQ 页面,用于记录开发者在 PTO 项目中遇到的常见问题及解决方案,降低重复排查成本。 FAQ.md — 英文版 FAQ_zh.md — 中文版 首条收录问题:调试模式(-d)下源码修改不生效 ### 关键 Bug 修复 - **[MXTypes.hpp]** 修复子正常浮点数转换中 for 循环体后缺少分号的 bug,该错误导致子正常数表示计算在循环体内执行而非循环后执行。 ### 编码乱码修复 - **[debug_zh.md]** 修复约 430 条断言条目中英文字母被中文字符系统性替换的问题( in→在、or→或、to→到、and→和),恢复正确的代码标识符路径。 ### 英文语法/拼写修复(debug.md) - constructors is → constructor is(4 处) - 32 bytes align → 32-byte aligned(3 处) - mube be → must be the same - Rigth → Right、shouuld → should - ony support → only support(3 处) - must be must be → must be(6 处,含 TGATHER.md、debug_zh.md) - GetValidRow() → GetValidCol()(CA-0001 逻辑修复) ### 英文文件中的中文标点修复 - [TTRANS.md]、[TABS.md]、[TGATHER.md]、[GlobalTensor.md]、[complex-ops.md]、matmul README — 中文标点 : , 。 、 → 英文标点 : , . , - [SKILL.md] — 14 个代码块中的中文标点替换 ### 中文文件修复 - [topk/README_zh.md] — 英文句号 . → 中文句号 。 - [auto_mode/README_zh.md] — 声定义 → 声明定义 - [topk/README.md] — seperately→separately、dependece→dependence、corresonding→corresponding ### C++ 可移植性修复 - long int/long → int64_t:[TBroadcast.hpp]、[TGather.hpp]、[TScatter.hpp]、[TGet.hpp] - dstSignaData → dstSignalData:[TNotify.hpp] - CAST_ODD_THRESHHOLD → CAST_ODD_THRESHOLD:[TCvt.hpp] ## 测试计划 - [ ] A2/A3/A5 目标构建验证 - [ ] 运行 tests/cpu/st/ 模拟器测试确认 MXTypes.hpp 修复正确 - [ ] 抽查 debug.md / debug_zh.md 断言 ID 可读性 - [ ] 检查 TTRANS.md、TGATHER.md 英文格式正确 ## 关联的ISSUE https://gitcode.com/cann/pto-isa/issues/375 ## 类型标签 - [ ] 文档更新 See merge request: cann/pto-isa!979 | 3 个月前 | |
docs(docs): Fix broken doc-site links and dead PTO-AS references Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1090 merge docs/fix-isa-doc-links into master docs(docs): Fix broken doc-site links and dead PTO-AS references Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: ## Summary - Replace 264 dead PTO-AS spec links in docs/isa/*.md and comm pages with an inline-code reference docs/grammar/PTO-AS.md, matching the already-migrated pages; the docs/assembly tree was deleted earlier but the per-instruction back-references were left dangling - Convert root-absolute /docs/... links in the hand-written manual pages (01-overview{,_zh}, appendix-d{,_zh}) to repo-relative paths so they resolve in the Gitcode repository file view as well as on the doc site, and fix gen_pages.py REL_LINK_RE so multi-level ../ prefixes are counted correctly by the relative-link rewriter - Repoint the build-guide links from the site-excluded docs/mkdocs/README{,_zh}.md to docs/website{,_zh}.md - Skip the repo-root README.md in gen_pages.py (it collides with the curated homepage index.md) and redirect inbound links to the homepage at build time, leaving the repo-relative source links untouched - Convert a .py script link in the flash_atten README to inline code ## Testing - [x] mkdocs build --strict passes with 0 warnings (down from 275) - [x] Manual/ISA links verified to resolve in both the rendered doc site and the Gitcode repository file view - [x] Repo-relative source links left intact where the site rewrite is build-time only Closes [#409](https://gitcode.com/cann/pto-isa/issues/409) See merge request: cann/pto-isa!1090 | 3 个月前 | |
Refactor the readme and update the implementation status of the instructions Co-authored-by: SherwinBai<baixiaorui1@h-partners.com> # message auto-generated for no-merge-commit merge: !754 merge feature/refactor_readme_clean into master Refactor the readme and update the implementation status of the instructions Created-by: SherwinBai Commit-by: SherwinBai Merged-by: cann-robot Description: ## 描述 关键修改: - 重构 README.md / README_zh.md,优化整体结构、导航信息和项目介绍 - 更新 CONTRIBUTING.md / CONTRIBUTING_zh.md 增加提交前本地检查pre-commit工具使用说明 - 门户README中文档构建流程下沉到 docs/mkdocs/README*.md - 同步并完善 include/README.md / include/README_zh.md 中的 PTO 指令实现状态表 - 对照 docs/isa/ 及其子目录补充缺失指令项,并调整状态说明位置与描述 - 同步更新多篇 ISA 文档、相关链接及部分配图内容 影响范围: - 仅涉及文档更新 - 不涉及功能逻辑和运行时行为变更 ## 类型标签 - [ ] 文档更新 See merge request: cann/pto-isa!754 | 5 个月前 | |
Refactor the readme and update the implementation status of the instructions Co-authored-by: SherwinBai<baixiaorui1@h-partners.com> # message auto-generated for no-merge-commit merge: !754 merge feature/refactor_readme_clean into master Refactor the readme and update the implementation status of the instructions Created-by: SherwinBai Commit-by: SherwinBai Merged-by: cann-robot Description: ## 描述 关键修改: - 重构 README.md / README_zh.md,优化整体结构、导航信息和项目介绍 - 更新 CONTRIBUTING.md / CONTRIBUTING_zh.md 增加提交前本地检查pre-commit工具使用说明 - 门户README中文档构建流程下沉到 docs/mkdocs/README*.md - 同步并完善 include/README.md / include/README_zh.md 中的 PTO 指令实现状态表 - 对照 docs/isa/ 及其子目录补充缺失指令项,并调整状态说明位置与描述 - 同步更新多篇 ISA 文档、相关链接及部分配图内容 影响范围: - 仅涉及文档更新 - 不涉及功能逻辑和运行时行为变更 ## 类型标签 - [ ] 文档更新 See merge request: cann/pto-isa!754 | 5 个月前 | |
build: upgrade json third-party from v3.11.3 to v3.12.0 Co-authored-by: zoujiangjiang<zoujiangjiang@h-partners.com> # message auto-generated for no-merge-commit merge: !1308 merge upgrade-json-3.11.3-to-3.12.0 into master build: upgrade json third-party from v3.11.3 to v3.12.0 Created-by: zoujiangjiang Commit-by: zoujiangjiang Merged-by: cann-robot Description: ## 关联 Issue Closes #482 ## 变更内容 将 cmake/third_party/json.cmake 中 nlohmann/json 第三方依赖的下载版本从 v3.11.3 升级到 v3.12.0。 ## 变更范围 仅修改下载 URL 中的版本号,单行改动: - v3.11.3/include.zip -> v3.12.0/include.zip json 为 header-only 依赖,URL 模板与旧版一致,无接口签名/构建逻辑变更。 ## 校验 - 已确认 v3.12.0/include.zip 下载地址有效(ZIP 文件,PK 魔数校验通过)。 See merge request: cann/pto-isa!1308 | 2 个月前 | |
Repo-wide pre-commit: strip trailing whitespace and normalize EOF newlines Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1320 merge master into master Repo-wide pre-commit: strip trailing whitespace and normalize EOF newlines Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhhywang Commit-by: zhhywang Merged-by: cann-robot Description: 全仓跑 trailing-whitespace + end-of-file-fixer:剥离行尾空白、补缺失末行换行、删多余尾随空行;零逻辑/语义变更,覆盖 tests/docs/include/kernels/demos 及 .py/.md/.sh/.js。 ## 描述 全仓 pre-commit 自动修复扫描,**仅做空白与行尾归一,零逻辑变更**: - **行尾空白**:剥离行末多余空格/制表符(主体;.cpp/.hpp/.h/.md/.py/.sh/.js 全覆盖)。 - **文件尾换行**:补缺失末行换行(多处 \ No newline at end of file)、删多余尾随空行,统一单换行结尾。 git diff -w 仅余 250 文件(皆为 EOF 换行/空行修复,-w 不抑制空行变更),其余 ~903 文件纯行尾空白;逐类抽样(.cpp/.hpp/.py/.md/setup.py/SKILL.md)均为空白归一,无 token 变化。 ## 关联的Issue ## 测试 - **空白归一收敛**:git diff -w --stat = 250 文件 +46/−365;抽样 .cpp 文件 -w diff 为空(纯行尾空白)。 - **无逻辑变更**:无标识符 rename、无代码增删,仅空白/换行。 - ⚠️ 未做编译验证(本机无 CANN/CPU-sim 工具链);空白不改语义,建议可编译环境跑一次 build 复核。 - **改动量**:1153 文件,+15054 / −15373(.cpp 634 / .md 298 / .hpp 175 / .py 18 / .sh 13 / .h 12 / .js 3)。 ## 文档更新 无文档内容改动;.md 仅为行尾空白/EOF 换行归一。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:全仓 pre-commit 空白归一——trailing-whitespace + end-of-file-fixer,清理行尾空白、统一末行换行;零逻辑变更。 See merge request: cann/pto-isa!1320 | 2 个月前 | |
build: upgrade json third-party from v3.11.3 to v3.12.0 Co-authored-by: zoujiangjiang<zoujiangjiang@h-partners.com> # message auto-generated for no-merge-commit merge: !1308 merge upgrade-json-3.11.3-to-3.12.0 into master build: upgrade json third-party from v3.11.3 to v3.12.0 Created-by: zoujiangjiang Commit-by: zoujiangjiang Merged-by: cann-robot Description: ## 关联 Issue Closes #482 ## 变更内容 将 cmake/third_party/json.cmake 中 nlohmann/json 第三方依赖的下载版本从 v3.11.3 升级到 v3.12.0。 ## 变更范围 仅修改下载 URL 中的版本号,单行改动: - v3.11.3/include.zip -> v3.12.0/include.zip json 为 header-only 依赖,URL 模板与旧版一致,无接口签名/构建逻辑变更。 ## 校验 - 已确认 v3.12.0/include.zip 下载地址有效(ZIP 文件,PK 魔数校验通过)。 See merge request: cann/pto-isa!1308 | 2 个月前 | |
build: upgrade json third-party from v3.11.3 to v3.12.0 Co-authored-by: zoujiangjiang<zoujiangjiang@h-partners.com> # message auto-generated for no-merge-commit merge: !1308 merge upgrade-json-3.11.3-to-3.12.0 into master build: upgrade json third-party from v3.11.3 to v3.12.0 Created-by: zoujiangjiang Commit-by: zoujiangjiang Merged-by: cann-robot Description: ## 关联 Issue Closes #482 ## 变更内容 将 cmake/third_party/json.cmake 中 nlohmann/json 第三方依赖的下载版本从 v3.11.3 升级到 v3.12.0。 ## 变更范围 仅修改下载 URL 中的版本号,单行改动: - v3.11.3/include.zip -> v3.12.0/include.zip json 为 header-only 依赖,URL 模板与旧版一致,无接口签名/构建逻辑变更。 ## 校验 - 已确认 v3.12.0/include.zip 下载地址有效(ZIP 文件,PK 魔数校验通过)。 See merge request: cann/pto-isa!1308 | 2 个月前 | |
feat: support rpm/deb packaging, fix package name, deps, path.cfg Co-authored-by: zoujiangjiang<zoujiangjiang@h-partners.com> # message auto-generated for no-merge-commit merge: !1357 merge codex/rpm-deb-packaging into master feat: support rpm/deb packaging, fix package name, deps, path.cfg Created-by: zoujiangjiang Commit-by: zoujiangjiang Merged-by: cann-robot Description: ## 描述 参考 ge PR #3508 和 metadef PR #382,为 pto-isa 增加多类型打包能力(rpm/deb/all),修复 path.cfg 不正交问题,并修复包名重复和依赖格式问题。所有改动压缩为单个 commit。 ## 变更类型 - [x] ✨ 新功能 (--pkg-type=rpm/deb/all) - [x] 🐛 Bug 修复 (path.cfg 不正交 / 包名重复 / 依赖格式错误 / postinst 硬编码架构路径) ## 改动清单 1. **升级 cann-cmake tag master-017 → master-042**:新版 set_cann_cpack_config 支持 PACKAGE_TYPE 参数,可切换 CPACK_GENERATOR 为 RPM/DEB/External;未传时回退 External run 包,向后兼容。同时引入 pre_package.cmake / gen_postinst_prerm.py / post_package.cmake 全套 RPM/DEB 支撑。 2. **build.sh 新增 --pkg-type=<run|rpm|deb|all> 选项**:check_pkg_type() 校验非法值(非 run/rpm/deb/all 报错退出 1)。all 模式经 cann-cmake 一次性产出 run+rpm+deb 三包。build_package() 透传 -D PACKAGE_TYPE 给 cmake。 3. **cmake/package.cmake 适配**: - set_cann_cpack_config 传 PACKAGE_TYPE - 移除 NO_COMPONENT_INSTALL 并给所有 install() 加 COMPONENT pto_isa(修复 cann-cmake 在 RPM 模式下组件路径不匹配导致 filelist 生成失败) - 参考 metadef PR #382 删除 path.cfg 的 install 与 EngineeringFiles block 引用,解决多包重复打包 path.cfg 的正交问题 - **修复包名重复 cann-pto-isa-pto-isa**:CPACK_RPM/DEB_COMPONENT_INSTALL=ON 时 CPack 会把组件名追加到包名后,原组件名 pto-isa(连字符)无法构造合法的大写 CMake 变量名(CPackDeb 只认大写形式),导致 deb 包名仍重复。将组件名改为 pto_isa(下划线),并显式设置 CPACK_RPM_PTO_ISA_PACKAGE_NAME / CPACK_DEBIAN_PTO_ISA_PACKAGE_NAME / *_FILE_NAME,使 rpm/deb 包名均为 cann-pto-isa,文件名统一 cann-pto-isa_9.1.0_linux-aarch64.* 4. **version.cmake 修复依赖格式**:set_cann_run_dependencies 的版本条件加 >= 运算符。原写法 "CUR_MAJOR_MINOR_VER"(纯版本号无运算符)经 cann-cmake convert_dependencies_to_package_formats 生成 "pkg 9.1"(无运算符),被 RPM 拆成 "pkg" + "9.1" 两条独立 Requires(9.1 作为不存在的包名导致默认安装报依赖失败)。改为 ">= CUR_MAJOR_MINOR_VER" 后生成 "pkg >= 9.1" / "pkg (>= 9.1)",格式正确,无幽灵 9.1 依赖。 5. **CMakeLists.txt**:新增 PACKAGE_TYPE 默认值 run(CACHE)。 6. **scripts/package/pto_isa/rpm_deb/custom_postinst.sh**:对齐 makeself run 包 root 安装的 IS_FOR_ALL=y 权限模式,使安装后的头文件对所有用户可读(BUILTIN_PERM=555、CUSTOM_PERM=755、ONLYREAD_PERM=444)。架构子目录(aarch64-linux / x86_64-linux)用 uname -m 动态获取 + *-linux 通配兜底,不再硬编码——postinst 跨架构可移植,且所有 chmod/find 加 || true 容错,架构目录不匹配时 postinst 不会在 set -e 下退出非 0(黄区报错根因修复)。不生成 cann_uninstall.sh 和 ascend_install.info:rpm/deb 用包管理器卸载,包数据库和符号链接已由 cann-cmake 生成的 postinst 主体处理。 注意:该脚本被 cann-cmake 内联进 RPM %post 段,RPM spec 宏会扫描百分号,故整个文件不得出现任何字面百分号。 ## 如何测试(root 真实安装验证) 构建: - ./build.sh --pkg → cann-pto-isa_9.1.0_linux-aarch64.run - ./build.sh --pkg --pkg-type=rpm → cann-pto-isa_9.1.0_linux-aarch64.rpm - ./build.sh --pkg --pkg-type=deb → cann-pto-isa_9.1.0_linux-aarch64.deb - ./build.sh --pkg --pkg-type=all → 一次出 run+rpm+deb 三包 - ./build.sh --pkg --pkg-type=foo → exit 1 包名/依赖: - rpm Name = cann-pto-isa(无重复) - deb Package = cann-pto-isa(无重复) - rpm Requires = runtime >= 9.1, opbase >= 9.1, ...(格式正确,无幽灵 9.1) - deb Depends = runtime (>= 9.1), opbase (>= 9.1), ...(格式正确) root 真实安装对比(1212 aarch64 机器,因缺 cann-9.1.0 子包 rpm/dpkg 用 --nodeps / --force-depends 跳依赖): - run 599 条,rpm/deb 597 条(少的 2 条是故意排除的 cann_uninstall.sh 和 ascend_install.info) - 权限:rpm/deb 597 条与 run 包 root 安装完全一致(0 差异) - rpm vs deb:597 条完全一致(0 差异) - postinst 在架构目录改名(模拟不匹配)下仍 exit 0,不会导致 dpkg 报 post-installation script returned error exit status 1 ## 已知问题(非本 PR 范围,属 cann-cmake master-042 上游) 1. cann-cmake 生成的 postinst 在 sh 下有 [: Illegal number: 警告(用 == 比较字符串)。上游问题。 2. 权限对齐目录列表需手动维护:custom_postinst.sh 里 755 目录列表(common/cpu/npu/a2a3/a5)是手列的,include/pto/ 下新增子目录需同步更新。属折中方案的脆弱性。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测(含 root 真实安装/卸载测试 + 三包权限逐条对比) - [x] 我已更新了相关的文档(AGENTS.md) - [x] 我在标题中使用了合适的类型标签(feat:) - [x] 我已经详细阅读了贡献指南 See merge request: cann/pto-isa!1357 | 2 个月前 | |
lint+license: reformat with ruff/clang-format and normalize CANN OSL v2.0 headers Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1333 merge master into master lint+license: reformat with ruff/clang-format and normalize CANN OSL v2.0 headers Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhywang Commit-by: zhywang Merged-by: cann-robot Description: 全仓 pre-commit 扫描——ruff format/black 与 clang-format 重排代码格式(零逻辑变更),并将源文件 License 头统一归一到 CANN Open Software License v2.0 全文(补缺失头、V1.0 升 V2.0、订正 "under the terms and conditions" 措辞),另补 .gitignore 忽略项。 ## 描述 63 文件 +1753/−1082,两类自动修复,**核心无逻辑/语义变更**: - **License 头归一(→ CANN OSL v2.0 全文)**: - 补缺失头: pyproject.toml、kernels/manual/a2a3/dispatch_mega_combine/main.cpp 等新增标准版权块。 - 升级旧头:run.sh 等 "a part of the CANN Open Software / Version 1.0" 短头 → v2.0 全文。 - 订正措辞:under terms and conditions of → under the terms and conditions of(21 处)。 - **代码格式化(零逻辑)**: - Python(54 文件,ruff format/black):多行函数调用折叠为单行、容器/字符串换行重排(docs/tools、kernels/tests 脚本为主)。 - C++(4 .cpp + 1 .hpp,clang-format):引用符号 &/* 贴类型、空体函数合并、长参数换行。 - **配置**:.gitignore 增 oat_reports/、log/;setup.py 补空行。 抽样 docs/tools/normalize_isa_docs.py、TPairReduceSum.hpp、tests/.../gen_data.py 均为格式/license 文本变更,无标识符 rename、无代码增删。 ## 关联的Issue ## 测试 - **格式化零逻辑**:Python 仅换行重排、C++ 仅 & 贴类型与换行;无语句增删、无标识符变化。 - **License 合规**:新增/升级头文本与仓内既有 v2.0 头一致;OAT 扫描头数应上升。 - ⚠️ 未做编译/单测验证(本机无 CANN/CPU-sim 工具链);格式化不改语义,建议可编译环境跑一次 build + 测试复核。 - **改动量**:63 文件 +1753/−1082(.py 54 / .cpp 4 / .sh 2 / .hpp 1 / .toml 1 / .gitignore 1)。 ## 文档更新 无文档内容改动;仅 License 头文本归一。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:全仓 pre-commit 清理——代码格式化(ruff format + clang-format)与 CANN OSL v2.0 License 头归一,零逻辑变更。 See merge request: cann/pto-isa!1333 | 2 个月前 | |
lint+license: reformat with ruff/clang-format and normalize CANN OSL v2.0 headers Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1333 merge master into master lint+license: reformat with ruff/clang-format and normalize CANN OSL v2.0 headers Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhywang Commit-by: zhywang Merged-by: cann-robot Description: 全仓 pre-commit 扫描——ruff format/black 与 clang-format 重排代码格式(零逻辑变更),并将源文件 License 头统一归一到 CANN Open Software License v2.0 全文(补缺失头、V1.0 升 V2.0、订正 "under the terms and conditions" 措辞),另补 .gitignore 忽略项。 ## 描述 63 文件 +1753/−1082,两类自动修复,**核心无逻辑/语义变更**: - **License 头归一(→ CANN OSL v2.0 全文)**: - 补缺失头: pyproject.toml、kernels/manual/a2a3/dispatch_mega_combine/main.cpp 等新增标准版权块。 - 升级旧头:run.sh 等 "a part of the CANN Open Software / Version 1.0" 短头 → v2.0 全文。 - 订正措辞:under terms and conditions of → under the terms and conditions of(21 处)。 - **代码格式化(零逻辑)**: - Python(54 文件,ruff format/black):多行函数调用折叠为单行、容器/字符串换行重排(docs/tools、kernels/tests 脚本为主)。 - C++(4 .cpp + 1 .hpp,clang-format):引用符号 &/* 贴类型、空体函数合并、长参数换行。 - **配置**:.gitignore 增 oat_reports/、log/;setup.py 补空行。 抽样 docs/tools/normalize_isa_docs.py、TPairReduceSum.hpp、tests/.../gen_data.py 均为格式/license 文本变更,无标识符 rename、无代码增删。 ## 关联的Issue ## 测试 - **格式化零逻辑**:Python 仅换行重排、C++ 仅 & 贴类型与换行;无语句增删、无标识符变化。 - **License 合规**:新增/升级头文本与仓内既有 v2.0 头一致;OAT 扫描头数应上升。 - ⚠️ 未做编译/单测验证(本机无 CANN/CPU-sim 工具链);格式化不改语义,建议可编译环境跑一次 build + 测试复核。 - **改动量**:63 文件 +1753/−1082(.py 54 / .cpp 4 / .sh 2 / .hpp 1 / .toml 1 / .gitignore 1)。 ## 文档更新 无文档内容改动;仅 License 头文本归一。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:全仓 pre-commit 清理——代码格式化(ruff format + clang-format)与 CANN OSL v2.0 License 头归一,零逻辑变更。 See merge request: cann/pto-isa!1333 | 2 个月前 | |
feat(comm): add async RDMA support for HNS1825 Co-authored-by: mengxun<xunmeng20000327@163.com> # message auto-generated for no-merge-commit merge: !1374 merge feature/hns_1825_read_write into master feat(comm): add async RDMA support for HNS1825 Created-by: mengxun233 Commit-by: mengxun Merged-by: cann-robot Description: ## 描述 为 TPUT_ASYNC / TGET_ASYNC 增加 RDMA 引擎支持,并适配 HNS1825 网卡平台。RDMA 与现有 SDMA、URMA 引擎并存,当前支持在 A5 上执行异步 RDMA WRITE / READ。 mermaid flowchart TB A["Host:RdmaWorkspaceManager"] --> B["HCOMM:Endpoint / MR / RoCE Channel"] B --> C["Device Workspace"] C --> D["BuildAsyncSession<DmaEngine::RDMA>"] D --> E["TPUT_ASYNC / TGET_ASYNC(显式 peer)"] E --> F["HNS1825:WQE / Doorbell / CQE"] ### 主要改动 - 新增 DmaEngine::RDMA、RDMA session/workspace/event 处理,并为 A5 异步 PUT/GET 接入显式 peer 接口。 - 新增 Host 侧 RDMA workspace 管理,通过 HCOMM 完成 endpoint 创建、通信内存注册、RoCE channel 建链、Device workspace 生成和资源释放。 - 实现 HNS1825 RDMA WRITE / READ 的 WQE 构造、Doorbell、CQE 轮询、状态校验及本地/远端 MR 范围校验。 - 增加 A5 RDMA PUT/GET 独立 ST target、测试启动与拓扑解析,并补充接口及测试说明。 ### 约束与兼容性 - HNS1825 网卡平台当前仅支持 A5;非 A5 环境在 Host Preflight() 阶段返回错误。 - RDMA 可与 SDMA、URMA 同时存在,不改变现有引擎的执行路径。 - Host 控制面依赖 HCOMM;相关 channel/MR/SQ/CQ 布局通过编译期 size/offset 校验约束 ABI 一致性。 - 传输地址必须位于已注册的本地及远端通信内存范围内;单次传输长度上限为 0x7fffffff 字节。 ## 关联的Issue 暂未关联。 ## 测试 在UBX上跑通rdma st ## 文档更新 - 更新 TPUT_ASYNC / TGET_ASYNC 中英文接口文档及通信模块 README。 - 增加 RDMA 异步 ST 的构建、端点发现和问题定位说明。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1374 | 1 个月前 | |
cmake中的组件名(component)从pto_isa修改为pto-isa Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !1440 merge 20260807-support-superbuild into master cmake中的组件名(component)从pto_isa修改为pto-isa Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: ## 描述 cmake中的组件名(component)从pto_isa修改为pto-isa。 - cmake/package.cmake中CMAKE_SOURCE_DIR修改为CMAKE_CURRENT_SOURCE_DIR,适配多仓联编场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 对比修改前后pto-isa包二进制,一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构 See merge request: cann/pto-isa!1440 | 1 个月前 |
PTO Tile Library
PTO(Parallel Tile Operation)是昇腾 CANN 定义的一套面向 tile 编程的虚拟 ISA。本仓库提供 PTO Tile 指令的实现、示例、测试与文档,帮助开发者在不同昇腾代际之间更平滑地迁移和优化算子。
📰 新闻
- 🎉 2025-12-27:PTO Tile Library 正式开源发布。
- ✨ 2026-01-30:新增合轴类指令、MX 指令。
- 🚀 2026-02-28:新增卷积类指令、量化类指令、核间通信类指令。
- 🔥 2026-03-30:支持昇腾 A5 芯片,新增异步通信指令、CostModel 性能仿真。
- 🛠️ 2026-04-02:本地工程链路进一步完善,补充了 pre-commit 检查、文档构建校验与 CPU-SIM 验证能力。
🎯 项目定位
PTO ISA 基于昇腾底层硬件与软件抽象,定义 90+ 条标准 tile 指令,用更高层的 tile 编程模型桥接不同代际之间的实现差异。它的目标不是隐藏底层能力,而是在提升抽象层级的同时保留性能调优空间。
- 统一跨代 tile 抽象:降低不同 Ascend 代际之间的迁移成本。
- 兼顾可移植性与性能:在固定 tile shape 下保证正确工作,同时保留 tile size、tile shape、指令顺序等调优能力。
- 面向框架、算子与工具链:可作为上层框架、算子实现和编译工具链的共同接口。
- 支持持续扩展:当前已定义 90+ 条标准操作,并持续补充实现与生态集成。
除计算与数据搬运指令外,PTO ISA 还提供了面向 NPU 间数据传输与同步的通信扩展指令集,覆盖点对点通信、信号同步和集合通信三类能力。
这些通信原语延续了与计算指令一致的 tile 级抽象和跨平台设计,并可驱动昇腾上的多种数据搬移硬件引擎,帮助用户构建计算与通信深度融合的 kernel。通信 ISA 入口见 docs/isa/comm/README_zh.md。
目前,PTO 指令已集成到以下框架中:
- PyPTO
- TileLang Ascend
- 更多语言与前端持续完善中
✨ 核心特性
- 统一的 Tile ISA 抽象:用标准 PTO 指令描述 tile 级计算与数据流。
- 跨代迁移与性能调优兼顾:既提升可移植性,也保留足够的底层控制能力。
- Auto / Manual 双模式开发路径:先快速验证逻辑,再逐步深入优化实现。当前 Auto Mode 主要可用于 CPU 仿真。
- CPU Simulator 支持:支持在 CPU 上进行功能验证与开发调试。
- 覆盖关键编程要素:支持 tile shape、tile mask、事件同步、固定功能单元与流水线建模。
- 文档、测试、示例齐全:提供 ISA 文档、开发文档、测试脚本和性能案例。
👥 适用人群
PTO Tile Lib 主要面向以下开发者:
- 直接对接昇腾硬件的框架或编译器后端开发者
- 需要跨平台迁移与复用实现的高性能算子开发者
- 需要显式控制 tile、buffer 与 pipeline 的性能优化工程师
🚀 快速开始
环境准备
- CPU 路径:需要 Python、CMake 和支持 C++20 的编译器,适合跨平台快速验证。
- NPU 路径:需要 Linux 环境与 Ascend CANN toolkit,适合在昇腾硬件或模拟器上运行。
- 更详细的环境部署说明请参见:快速开始指南
编译与运行
# CPU Simulator(建议第一步)
python3 tests/run_cpu.py --clean --verbose
# 运行 GEMM demo
python3 tests/run_cpu.py --demo gemm --verbose
# 运行 Flash Attention demo
python3 tests/run_cpu.py --demo flash_attn --verbose
# 运行单个 ST 用例
python3 tests/script/run_st.py -r sim -v a3 -t tadd -g TADDTest.case_float_64x64_64x64
# 一键构建并运行推荐测试
./build.sh --run_all --a3 --sim
# 在代码根目录下打 whl 包,产物位于 dist/ 目录
python3 -m build --wheel
推荐样例
- Auto Mode Add 示例:适合第一次了解 PTO 指令组织方式
- GEMM 性能示例:适合理解 tile 级算子优化
- Flash Attention 示例:适合理解复杂算子与性能调优
推荐上手路径
- 从简单示例开始,理解 PTO 指令如何组织 tile 级计算与数据搬运。
- 在 CPU 仿真中验证功能与正确性,建立对指令语义和结果的直观认知。
- 将代码移植到昇腾硬件上验证正确性并采集性能数据。参见 msprof 工具
- 定位性能瓶颈(CUBE Bound / MTE Bound / Vector Bound),开始优化与调参。参见 性能优化
本仓库也展示了标准 tile 操作如何通过模板参数映射到不同流水线实现:
- Tile 编程模型:理解静态 tile shape、动态 tile mask 与数据组织方式
- 事件与同步:理解 set/wait flag 与流水线同步
- 通用约定:理解 PTO 编程中的通用规则与约束
- PTO 指令列表:查看 PTO ISA 已定义的标准操作
🗂️ 文档导航
ISA 与编程模型
- ISA 总览:PTO ISA 文档入口与阅读导航
- PTO 指令列表:按指令分类查看 PTO 标准操作
- Tile 编程模型:理解 tile 的形状、mask 与编程模型
- 事件与同步:理解事件记录、等待与同步方式
- 通用约定:查看命名、约束与通用规则
开发与优化
📊 示例与性能参考
GEMM
- 参考实现:
kernels/manual/a2a3/gemm_performance/ - 详细分析与调参说明:高性能 GEMM 算子示例
Flash Attention
- 算子实现与调优说明:A2/A3 版本,A5 版本
- A5 构建说明(A5 性能数据待补充):Flash Attention Performance Kernel (A5)
- S0:query 序列长度(Q/O 的行数)
- S1:key/value 序列长度(K/V 的行数)
Ascend 910B2 多核对比,基线为 torch_npu:
| 序列长度 | PTO 时间 (us) | torch_npu 时间 (us) | PTO TFLOPS | torch_npu TFLOPS | PTO 加速比 |
|---|---|---|---|---|---|
| 1024 | 20.960 | 58.461 | 25.61 | 9.18 | 2.79x |
| 2048 | 32.461 | 70.801 | 66.16 | 30.33 | 2.18x |
| 4096 | 88.902 | 118.302 | 96.62 | 72.61 | 1.33x |
| 8192 | 292.626 | 353.147 | 117.42 | 97.30 | 1.21x |
| 16384 | 909.058 | 1118.462 | 151.19 | 122.88 | 1.23x |
| 32768 | 3262.645 | 3646.173 | 168.50 | 150.78 | 1.12x |

通信指令带宽
- 参考实现:
kernels/manual/a2a3/tget_bandwidth/ - 详细分析与构建运行说明:TGET / TGET_ASYNC 带宽对比示例
该示例在 Ascend A2/A3 上测量点对点远程读带宽,对比 TGET(同步,经 UB 中转)与 TGET_ASYNC(异步,经 DMA 引擎直接传输)的表现。
GEMM AllReduce 通算融合
- 参考实现:
kernels/manual/a2a3/gemm_ar/ - 详细分析与调参说明:高性能 GEMM AllReduce 融合算子示例
该示例展示了如何在同一个算子流水线中融合 PTO 通信原语与计算 kernel,实现 GEMM 与 AllReduce 的重叠执行。
🖥️ 平台支持
- Ascend A2(Ascend 910B)
- Ascend A3(Ascend 910C)
- Ascend A5(Ascend 950)
- CPU(x86_64 / AArch64)
更多细节请参考 include/README_zh.md。
🛣️ 路线图
未来计划发布的特性:
| 功能 | 描述 | 范围 | 进度 / 完成时间 |
|---|---|---|---|
| PTO Auto Mode | BiSheng 编译器支持:自动分配 tile buffer 并插入同步。 | 编译器 / 工具链 | 持续演进 |
| PTO Tile Fusion | BiSheng 编译器支持:自动融合 tile 操作。 | 编译器 / 工具链 | 持续演进 |
| PTO-AS | PTO ISA 的字节码(Byte Code)支持。 | 编译器 / 工具链 | 持续演进 |
| 卷积扩展 | PTO ISA 对卷积 kernel 的支持。 | ISA 扩展 | 持续演进 |
| 集合通信扩展 | 新增支持 Ccu 及 Roce 异步通信指令,新增 TPREFECTH(AIV 直驱)通信指令。 | 通信 ISA 扩展 | 2026 Q2 |
| 系统调度扩展 | PTO ISA 对 SPMD/MPMD 编程的调度支持。 | ISA 扩展 | 规划中 |
| 微指令 | 支持用户通过微指令表达高性能算子,同时提供基础的高性能微指令库。 | ISA 扩展 / 算子开发 | 2026 Q2 |
| 基础指令 | 进一步优化 A5 指令性能,新增 Pooling 相关基础指令,并增强卷积、量化、Fixpipe 类指令能力。 | ISA 扩展 | 2026 Q2 |
| CostModel | 支持 A5 指令的 CostModel 性能仿真。 | 工具链 / 性能建模 | 2026 Q2 |
| CPU-SIM | CPU-SIM 随指令增强同步构建。 | CPU 仿真 | 2026 Q2 |
🗃️ 目录结构
关键目录如下:
├── include/ # PTO 对外头文件与接口
│ └── pto/ # 公共类型、ISA 接口、CPU/NPU 实现
├── kernels/ # kernel 与算子实现
│ ├── manual/ # 手工优化实现与性能示例
│ └── custom/ # 自定义算子示例
├── docs/ # ISA、编程模型、快速开始与文档站点源文件
│ ├── isa/ # 指令参考与分类索引
│ ├── coding/ # 开发与性能优化文档
│ ├── assembly/ # PTO-AS 汇编语法与规范
│ └── mkdocs/ # MkDocs 文档构建配置与源文件
├── demos/ # Auto Mode、baseline 与 torch_jit 示例
├── tests/ # CPU / NPU 测试、脚本与测试入口
│ ├── cpu/ # CPU 仿真测试
│ ├── npu/ # 按 SoC 拆分的 NPU 测试
│ └── script/ # 测试构建与运行脚本
├── scripts/ # 构建、安装与发布脚本
├── cmake/ # CMake 公共配置与打包逻辑
├── build.sh # 一键构建与运行入口脚本
└── CMakeLists.txt # 顶层 CMake 配置
ℹ️ 相关信息
- 贡献指南:参与项目开发与提交流程
- 安全与漏洞披露:安全问题反馈流程
- 版本说明:版本更新与发布记录
- 许可证:CANN Open Software License Agreement Version 2.0
- PyPTO:PTO 生态中的上层编程框架
- PTOAS:面向 PTO 工作流的汇编器与编译后端
- pto-dsl:面向 PTO 的 Python 前端与 JIT 工作流探索
- FAQ:常见问题与解决方案
📬 联系我们
- 问题反馈:通过仓库 Issues 提交问题
- 功能建议:通过仓库 Issues 或讨论区反馈需求
- 贡献代码:通过 Pull Request 参与项目贡献