| Support split odd valid shape in pushVec2GMFiFo & Fix the tiling shape validation in FA Co-authored-by: chenjinlin<chenjinlin1@huawei.com> # message auto-generated for no-merge-commit merge: !1507 merge update_tpush into master Support split odd valid shape in pushVec2GMFiFo & Fix the tiling shape validation in FA Created-by: csjlchen Commit-by: chenjinlin Merged-by: cann-robot Description: ## 描述 Support split the odd valid shape in pushVec2GMFiFo. Fix the div by zero in fa tiling shape validation. ## 关联的Issue https://gitcode.com/cann/pto-isa/issues/530 ## 测试 All tpush and flash attention testcases are passed . ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1507 | 14 天前 |
| Add TAXPY and TDEQUANT instructions, reorganize ops-development sidebar into an 11-group functional hierarchy with stub landing pages Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1307 merge master into master Add TAXPY and TDEQUANT instructions, reorganize ops-development sidebar into an 11-group functional hierarchy with stub landing pages Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhywang Commit-by: zhywang Merged-by: cann-robot Description: 新增 TAXPY(原位缩放累加 AXPY:dst = scalar·src0 + dst)与 TDEQUANT(量化 Tile 仿射反量化 S8/S16 → FP32,dst = (src − offset)·scale,TQUANT 的逆运算)两条指令并集成进对应索引;同时按操作语义重构 docs/menu_ops_development.md 侧边栏为 11 个顶层分组 / 23 个子分组 / 120 个叶子指令的分层导航,并新增 23 个 docs/menu/*_zh.md 标题占位页使每个子分组链接可解析。 ## 描述 本次提交以「新增 TAXPY + TDEQUANT 两条指令 + 侧边栏菜单分层重构」为核心: 1. 新增 TAXPY 指令页(docs/isa/TAXPY.md / TAXPY_zh.md,各 86 行): - 语义:对 Tile 做**原位缩放累加**(AXPY,$a \cdot x + y$):dst = scalar · src0 + dst。 - dst 为读-改-写(RMW):旧值作为累加基 $y$ 读入,写回 scalar·x + y,**调用前必须已初始化**;src0($x$)只读;scalar($a$)为标量(TileDataSrc::DType)。 - 支持 dtype:dst/src0 ∈ {half, float}——同型路径直接 vaxpy;dst=float/src0=half 时将半精度拓宽到 FP32 后累加(A5 经 UNPK_B16 + vcvt,A2/A3 由 vaxpy 原生处理 4-block src / 8-block dst);half dst + float src0 非法(实现内 static_assert 拒绝)。 - 实现要点:运行于向量流水线 PIPE_V,使用 vaxpy 向量内联函数;dst/src0 必须同为 TileType::Vec 且有效形状一致;A2/A3 按 repeat-stride 是否溢出与行列关系选择 count/norm 模式覆盖任意合法形状。 - 编码:manifest 归类为 Tile-Scalar / Tile-Immediate,diagram_template: scalar,操作数 dst, src0, scalar。 - 章节齐全:Introduction / Math Interpretation / C++ Intrinsics / Tile Sizes & dtypes / Supported Input Dtypes / Implementation Notes / Constraints / Examples;示例指向 tests/npu/a5|a2a3|kirin9030/src/st/testcase/taxpy/ 与 tests/cpu/st/testcase/taxpy/。 2. 新增 TDEQUANT 指令页(docs/isa/TDEQUANT.md / TDEQUANT_zh.md,各 109 行): - 语义:对量化整数码 Tile(S8 / S16)做**逐行仿射反量化**,输出 FP32:dst = (src − offset) · scale,是 TQUANT(q = round(x/scale) + offset)整数仿射量化的逆运算。 - scale / offset 为**逐行** FP32 参数(沿列广播,paraCol = min(j, paraCols−1)),为 ISA 可见 Tile 操作数(非编译器 scratch);典型形态每行一个标量。 - 支持 dtype:S8 → FP32(UNPK4_B8 解包)、S16 → FP32(UNPK_B16 解包);dst/scale/offset 必须 dtype 一致且均为 FP32。 - 实现要点:运行于 PIPE_V,vsub 减零点 → vmul 重新缩放,无需 tmp scratch(区别于 A2/A3 上 TQUANT 的 5 级 cast 链)。 - 编码:manifest 归类为 Complex,diagram_template: elementwise,操作数 dst, src, scale, offset;指令页 Encoding 章节给出 TEPL 复杂变换编码(Mode=3、Function=11、TileOp=0x6B、BSTART.TEPL TDEQUANT …)。 - 章节齐全:Introduction / Math Interpretation / C++ Intrinsics / Tile Sizes & dtypes / Supported Input Dtypes / Implementation Notes / Encoding / Constraints / Examples;示例指向 tests/npu/a5|a2a3/src/st/testcase/tdequant/ 与 tests/cpu/st/testcase/tdequant/。 3. 两条指令集成进源同步索引(中英文一一对应;**两条指令索引落地范围不同**): - docs/isa/manifest.yaml:TAXPY 新增 Tile-Scalar / Tile-Immediate 条目(scalar 模板,dst, src0, scalar);TDEQUANT 新增 Complex 条目(elementwise 模板,dst, src, scale, offset),均含中英 summary。 - docs/isa/README.md / README_zh.md:各新增 TAXPY、TDEQUANT 两个列表条目(各 2 处)。 - docs/mkdocs/mkdocs.yml:nav 新增 TAXPY 与 TDEQUANT(各 1 处)。 - docs/PTOISA.md / PTOISA_zh.md:Complex 表新增 TDEQUANT 行(各 1 处);TAXPY 因归类为 Tile-Scalar 未进 PTOISA 表。 - docs/mkdocs/src/manual/appendix-d-instruction-family-matrix.md / _zh.md:指令族矩阵新增 TDEQUANT 一行(elementwise / dst, src, scale, offset,各 1 处);TAXPY 未进该矩阵。 - include/README.md / README_zh.md:将既有 TAXPY 行的空链接 []() 补为 ../docs/isa/TAXPY.md(链接修复);TDEQUANT 未进后端可用性表。 4. docs/menu_ops_development.md 按操作语义**整体重写**(旧 247 行 → 新 156 行): - 新结构:**11 个顶层分组**([分组名]() 空链接作导航父节点,0/2/4 空格缩进)+ **23 个子分组**([子组名](menu/xxx_zh.md) 链接)+ **120 个叶子指令**,按操作语义重新归类——逐元素双目运算 / 逐元素单目运算 / 逐元素超越函数 / 逐元素标量运算 / 归约运算 / 广播扩展运算 / 矩阵乘 / 数据搬运与访存 / 复杂变换 / 系统与控制 / 通信。 - TAXPY 置于「逐元素标量运算 > 标量算术」;TQUANT / TDEQUANT 置于「复杂变换 > 数据类型转换」(与 TCVT 同组)。 - 注:11 个顶层分组名采用空链接 []()(仅作分类父节点、无独立落地页),23 个子分组各自指向占位页。 5. **新增 23 个 docs/menu/*_zh.md 占位文件**(与 23 个子分组一一对应),每个文件仅含一行中文标题(如 # 算术运算、# 数据类型转换、# 流通信(FIFO)),用于使菜单的每个子分组链接可解析、构建分层导航骨架(当前仅标题、无正文内容);均为 _zh.md,无英文对应文件。 ## 关联的Issue ## 测试 - 指令页:TAXPY.md / TAXPY_zh.md 各 86 行;TDEQUANT.md / TDEQUANT_zh.md 各 109 行;EN/ZH 结构对称、行数一致。TDEQUANT 语义与 TQUANT 互逆一致(q=round(x/scale)+offset ⇔ x=(q−offset)·scale);TAXPY 为原位 RMW 累加,调用前需初始化 dst。 - 索引集成: - TAXPY 落地 manifest / isa/README(_zh) / mkdocs.yml nav / include/README(_zh)(链接修复)共 7 处;未进 PTOISA(_zh) 与指令族矩阵(归类为 Tile-Scalar,符合各表收录范围)。 - TDEQUANT 落地 manifest / PTOISA(_zh) / isa/README(_zh) / mkdocs.yml nav / 指令族矩阵(_zh) 共 8 处;未进 include/README 后端可用性表。 - manifest 字段:TAXPY(category=Tile-Scalar/Tile-Immediate、diagram_template=scalar、operands=dst, src0, scalar)、TDEQUANT(category=Complex、diagram_template=elementwise、operands=dst, src, scale, offset),均与各自指令页 Encoding/Operands 一致。 - 菜单:新文件 156 行;缩进仅 0/2/4 空格(无旧 8 空格残留);23 处 menu/ 引用全部指向新增占位页;120 处 isa/ 叶子链接;11 个顶层分组保留空链接 []()(分类父节点,预期行为)。 - 占位页:23 个 docs/menu/*_zh.md 各含一行中文标题(无正文),仅用于链接可解析。 - 中英文同步:所有指令页与索引页的 _zh 版本与 EN 版本改动一一对应(菜单占位页与 menu_ops_development.md 为纯中文页,无 EN 对应)。 ## 文档更新 - docs/isa/TAXPY.md / TAXPY_zh.md:新增指令页(原位缩放累加 AXPY,half/float + 半精度拓宽) - docs/isa/TDEQUANT.md / TDEQUANT_zh.md:新增指令页(仿射反量化 S8/S16 → FP32) - docs/isa/manifest.yaml:新增 TAXPY(Tile-Scalar/scalar)与 TDEQUANT(Complex/elementwise)条目 - docs/isa/README.md / README_zh.md:列表新增 TAXPY、TDEQUANT 条目 - docs/mkdocs/mkdocs.yml:nav 新增 TAXPY、TDEQUANT - docs/PTOISA.md / PTOISA_zh.md:Complex 索引表新增 TDEQUANT 行 - docs/mkdocs/src/manual/appendix-d-instruction-family-matrix.md / _zh.md:指令族矩阵新增 TDEQUANT 行 - include/README.md / README_zh.md:补全 TAXPY 行空链接指向 ../docs/isa/TAXPY.md - docs/menu_ops_development.md:API 参考侧边栏按 11 类功能分类法整体重构(旧 247 行 → 新 156 行),子分组链接全部指向占位页 - docs/menu/*_zh.md(23 个):新增分层占位跳转文件,各含一行中文标题,用于链接可解析 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1307 | 1 个月前 |
| Add TAXPY and TDEQUANT instructions, reorganize ops-development sidebar into an 11-group functional hierarchy with stub landing pages Co-authored-by: zhywang<wangzhiyong74@huawei.com> # message auto-generated for no-merge-commit merge: !1307 merge master into master Add TAXPY and TDEQUANT instructions, reorganize ops-development sidebar into an 11-group functional hierarchy with stub landing pages Created-by: zhhywang Commit-by: zhywang Merged-by: cann-robot Description: Created-by: zhywang Commit-by: zhywang Merged-by: cann-robot Description: 新增 TAXPY(原位缩放累加 AXPY:dst = scalar·src0 + dst)与 TDEQUANT(量化 Tile 仿射反量化 S8/S16 → FP32,dst = (src − offset)·scale,TQUANT 的逆运算)两条指令并集成进对应索引;同时按操作语义重构 docs/menu_ops_development.md 侧边栏为 11 个顶层分组 / 23 个子分组 / 120 个叶子指令的分层导航,并新增 23 个 docs/menu/*_zh.md 标题占位页使每个子分组链接可解析。 ## 描述 本次提交以「新增 TAXPY + TDEQUANT 两条指令 + 侧边栏菜单分层重构」为核心: 1. 新增 TAXPY 指令页(docs/isa/TAXPY.md / TAXPY_zh.md,各 86 行): - 语义:对 Tile 做**原位缩放累加**(AXPY,$a \cdot x + y$):dst = scalar · src0 + dst。 - dst 为读-改-写(RMW):旧值作为累加基 $y$ 读入,写回 scalar·x + y,**调用前必须已初始化**;src0($x$)只读;scalar($a$)为标量(TileDataSrc::DType)。 - 支持 dtype:dst/src0 ∈ {half, float}——同型路径直接 vaxpy;dst=float/src0=half 时将半精度拓宽到 FP32 后累加(A5 经 UNPK_B16 + vcvt,A2/A3 由 vaxpy 原生处理 4-block src / 8-block dst);half dst + float src0 非法(实现内 static_assert 拒绝)。 - 实现要点:运行于向量流水线 PIPE_V,使用 vaxpy 向量内联函数;dst/src0 必须同为 TileType::Vec 且有效形状一致;A2/A3 按 repeat-stride 是否溢出与行列关系选择 count/norm 模式覆盖任意合法形状。 - 编码:manifest 归类为 Tile-Scalar / Tile-Immediate,diagram_template: scalar,操作数 dst, src0, scalar。 - 章节齐全:Introduction / Math Interpretation / C++ Intrinsics / Tile Sizes & dtypes / Supported Input Dtypes / Implementation Notes / Constraints / Examples;示例指向 tests/npu/a5|a2a3|kirin9030/src/st/testcase/taxpy/ 与 tests/cpu/st/testcase/taxpy/。 2. 新增 TDEQUANT 指令页(docs/isa/TDEQUANT.md / TDEQUANT_zh.md,各 109 行): - 语义:对量化整数码 Tile(S8 / S16)做**逐行仿射反量化**,输出 FP32:dst = (src − offset) · scale,是 TQUANT(q = round(x/scale) + offset)整数仿射量化的逆运算。 - scale / offset 为**逐行** FP32 参数(沿列广播,paraCol = min(j, paraCols−1)),为 ISA 可见 Tile 操作数(非编译器 scratch);典型形态每行一个标量。 - 支持 dtype:S8 → FP32(UNPK4_B8 解包)、S16 → FP32(UNPK_B16 解包);dst/scale/offset 必须 dtype 一致且均为 FP32。 - 实现要点:运行于 PIPE_V,vsub 减零点 → vmul 重新缩放,无需 tmp scratch(区别于 A2/A3 上 TQUANT 的 5 级 cast 链)。 - 编码:manifest 归类为 Complex,diagram_template: elementwise,操作数 dst, src, scale, offset;指令页 Encoding 章节给出 TEPL 复杂变换编码(Mode=3、Function=11、TileOp=0x6B、BSTART.TEPL TDEQUANT …)。 - 章节齐全:Introduction / Math Interpretation / C++ Intrinsics / Tile Sizes & dtypes / Supported Input Dtypes / Implementation Notes / Encoding / Constraints / Examples;示例指向 tests/npu/a5|a2a3/src/st/testcase/tdequant/ 与 tests/cpu/st/testcase/tdequant/。 3. 两条指令集成进源同步索引(中英文一一对应;**两条指令索引落地范围不同**): - docs/isa/manifest.yaml:TAXPY 新增 Tile-Scalar / Tile-Immediate 条目(scalar 模板,dst, src0, scalar);TDEQUANT 新增 Complex 条目(elementwise 模板,dst, src, scale, offset),均含中英 summary。 - docs/isa/README.md / README_zh.md:各新增 TAXPY、TDEQUANT 两个列表条目(各 2 处)。 - docs/mkdocs/mkdocs.yml:nav 新增 TAXPY 与 TDEQUANT(各 1 处)。 - docs/PTOISA.md / PTOISA_zh.md:Complex 表新增 TDEQUANT 行(各 1 处);TAXPY 因归类为 Tile-Scalar 未进 PTOISA 表。 - docs/mkdocs/src/manual/appendix-d-instruction-family-matrix.md / _zh.md:指令族矩阵新增 TDEQUANT 一行(elementwise / dst, src, scale, offset,各 1 处);TAXPY 未进该矩阵。 - include/README.md / README_zh.md:将既有 TAXPY 行的空链接 []() 补为 ../docs/isa/TAXPY.md(链接修复);TDEQUANT 未进后端可用性表。 4. docs/menu_ops_development.md 按操作语义**整体重写**(旧 247 行 → 新 156 行): - 新结构:**11 个顶层分组**([分组名]() 空链接作导航父节点,0/2/4 空格缩进)+ **23 个子分组**([子组名](menu/xxx_zh.md) 链接)+ **120 个叶子指令**,按操作语义重新归类——逐元素双目运算 / 逐元素单目运算 / 逐元素超越函数 / 逐元素标量运算 / 归约运算 / 广播扩展运算 / 矩阵乘 / 数据搬运与访存 / 复杂变换 / 系统与控制 / 通信。 - TAXPY 置于「逐元素标量运算 > 标量算术」;TQUANT / TDEQUANT 置于「复杂变换 > 数据类型转换」(与 TCVT 同组)。 - 注:11 个顶层分组名采用空链接 []()(仅作分类父节点、无独立落地页),23 个子分组各自指向占位页。 5. **新增 23 个 docs/menu/*_zh.md 占位文件**(与 23 个子分组一一对应),每个文件仅含一行中文标题(如 # 算术运算、# 数据类型转换、# 流通信(FIFO)),用于使菜单的每个子分组链接可解析、构建分层导航骨架(当前仅标题、无正文内容);均为 _zh.md,无英文对应文件。 ## 关联的Issue ## 测试 - 指令页:TAXPY.md / TAXPY_zh.md 各 86 行;TDEQUANT.md / TDEQUANT_zh.md 各 109 行;EN/ZH 结构对称、行数一致。TDEQUANT 语义与 TQUANT 互逆一致(q=round(x/scale)+offset ⇔ x=(q−offset)·scale);TAXPY 为原位 RMW 累加,调用前需初始化 dst。 - 索引集成: - TAXPY 落地 manifest / isa/README(_zh) / mkdocs.yml nav / include/README(_zh)(链接修复)共 7 处;未进 PTOISA(_zh) 与指令族矩阵(归类为 Tile-Scalar,符合各表收录范围)。 - TDEQUANT 落地 manifest / PTOISA(_zh) / isa/README(_zh) / mkdocs.yml nav / 指令族矩阵(_zh) 共 8 处;未进 include/README 后端可用性表。 - manifest 字段:TAXPY(category=Tile-Scalar/Tile-Immediate、diagram_template=scalar、operands=dst, src0, scalar)、TDEQUANT(category=Complex、diagram_template=elementwise、operands=dst, src, scale, offset),均与各自指令页 Encoding/Operands 一致。 - 菜单:新文件 156 行;缩进仅 0/2/4 空格(无旧 8 空格残留);23 处 menu/ 引用全部指向新增占位页;120 处 isa/ 叶子链接;11 个顶层分组保留空链接 []()(分类父节点,预期行为)。 - 占位页:23 个 docs/menu/*_zh.md 各含一行中文标题(无正文),仅用于链接可解析。 - 中英文同步:所有指令页与索引页的 _zh 版本与 EN 版本改动一一对应(菜单占位页与 menu_ops_development.md 为纯中文页,无 EN 对应)。 ## 文档更新 - docs/isa/TAXPY.md / TAXPY_zh.md:新增指令页(原位缩放累加 AXPY,half/float + 半精度拓宽) - docs/isa/TDEQUANT.md / TDEQUANT_zh.md:新增指令页(仿射反量化 S8/S16 → FP32) - docs/isa/manifest.yaml:新增 TAXPY(Tile-Scalar/scalar)与 TDEQUANT(Complex/elementwise)条目 - docs/isa/README.md / README_zh.md:列表新增 TAXPY、TDEQUANT 条目 - docs/mkdocs/mkdocs.yml:nav 新增 TAXPY、TDEQUANT - docs/PTOISA.md / PTOISA_zh.md:Complex 索引表新增 TDEQUANT 行 - docs/mkdocs/src/manual/appendix-d-instruction-family-matrix.md / _zh.md:指令族矩阵新增 TDEQUANT 行 - include/README.md / README_zh.md:补全 TAXPY 行空链接指向 ../docs/isa/TAXPY.md - docs/menu_ops_development.md:API 参考侧边栏按 11 类功能分类法整体重构(旧 247 行 → 新 156 行),子分组链接全部指向占位页 - docs/menu/*_zh.md(23 个):新增分层占位跳转文件,各含一行中文标题,用于链接可解析 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/pto-isa!1307 | 1 个月前 |