已合并
fix(docs): Updata the doc menu title. #5992
lyz0328创建于 9月7日
fix(docs): Updata the doc menu title. #5992
已合并
lyz0328创建于 9月7日
共 19 个文件变更+663-394
@@ -1,4 +1,4 @@
1-# SIMT执行1+# 执行模型
2 2 
3```{toctree}3```{toctree}
4:maxdepth: 14:maxdepth: 1
@@ -1,4 +1,4 @@
1-# 标量计算接口1+# 标量计算
2 2 
3```{toctree}3```{toctree}
4:maxdepth: 14:maxdepth: 1
@@ -1,4 +1,4 @@
1-# 调测接口1+# 调测API
2 2 
3```{toctree}3```{toctree}
4:maxdepth: 14:maxdepth: 1
@@ -1,4 +1,4 @@
1-# PyPTO Pro API参考1+# PyPTO Pro API
2 2 
3```{toctree}3```{toctree}
4:maxdepth: 14:maxdepth: 1
@@ -1,4 +1,4 @@
1-# PyPTO Tensor API参考1+# PyPTO Tensor API
2 2 
3```{toctree}3```{toctree}
4:maxdepth: 24:maxdepth: 2
@@ -1,56 +1,92 @@
1# PyPTO算子开发1# PyPTO算子开发
2 2 
3-- [简介](./introduction.md)3+- [简介](introduction.md)
4- [环境准备](../install/prepare_environment_hiascend.md)4- [环境准备](../install/prepare_environment_hiascend.md)
5-- [快速入门](./quick_start/index.md)5+- [快速入门](quick_start/index.md)
6-- [编程范式](./programming_guide/tensor/program_paradigms.md)6+ - [PyPTO Tensor编程](quick_start/tensor/index.md)
7-- [算子开发](./programming_guide/tensor/development/index.md)7+ - [Softmax算子快速入门](quick_start/tensor/quick_start.md)
8- - [Tensor的创建](./programming_guide/tensor/development/tensor_creation.md)8+ - [PyPTO Pro编程](quick_start/pro/index.md)
9- - [Tensor的操作](./programming_guide/tensor/development/tensor_operation.md)9+ - [HelloWorld(SIMD)](quick_start/pro/helloworld_simd.md)
10- - [Tiling配置](./programming_guide/tensor/development/tiling.md)10+ - [Add算子快速入门(SIMD)](quick_start/pro/add_simd.md)
11- - [编译与执行](./programming_guide/tensor/development/compile.md)11+ - [Matmul算子快速入门(SIMD)](quick_start/pro/matmul_simd.md)
12- - [循环和数据切分](./programming_guide/tensor/development/loops.md)12+ - [CV融合算子快速入门(SIMD)](quick_start/pro/cv_fused_simd.md)
13- - [条件与分支](./programming_guide/tensor/development/conditions.md)13+ - [Add算子快速入门(SIMT)](quick_start/pro/add_simt.md)
14-- [调试调优](./programming_guide/tensor/debug/index.md)14+- [编程指南](programming_guide/index.md)
15- - [功能调试](./programming_guide/tensor/debug/debug.md)15+ - [PyPTO Tensor编程指南](programming_guide/tensor/index.md)
16- - [精度调试](./programming_guide/tensor/debug/precision.md)16+ - [编程范式](programming_guide/tensor/program_paradigms.md)
17- - [性能调优](./programming_guide/tensor/debug/performance.md)17+ - [算子开发](programming_guide/tensor/development/index.md)
18- - [Matmul高性能编程](./programming_guide/tensor/debug/matmul_performance_guide.md)18+ - [Tensor的创建](programming_guide/tensor/development/tensor_creation.md)
19- - [ffn_shared_expert_quant算子NPU上板调试案例](./programming_guide/tensor/debug/debug_case_ffn.md)19+ - [Tensor的操作](programming_guide/tensor/development/tensor_operation.md)
20- - [QuantIndexerProlog算子性能优化案例](./programming_guide/tensor/debug/performance_case_quantindexerprolog.md)20+ - [Tiling配置](programming_guide/tensor/development/tiling.md)
21- - [GatedDeltaRule算子性能优化案例](./programming_guide/tensor/debug/performance_case_GDR.md)21+ - [编译与执行](programming_guide/tensor/development/compile.md)
22-- [PyTorch集成和接入](./programming_guide/tensor/pytorch_integration.md)22+ - [循环和数据切分](programming_guide/tensor/development/loops.md)
23-- [附录](./appendix/index.md)23+ - [条件与分支](programming_guide/tensor/development/conditions.md)
24- - [术语表](./appendix/glossary.md)24+ - [调试调优](programming_guide/tensor/debug/index.md)
25- - [常见问题](./appendix/faq/index.md)25+ - [功能调试](programming_guide/tensor/debug/debug.md)
26- - [kernel函数出参未写回导致计算不生效](./appendix/faq/kernel-output-not-written-back.md)26+ - [精度调试](programming_guide/tensor/debug/precision.md)
27- - [未设置执行算子的设备ID](./appendix/faq/device-id-not-set.md)27+ - [性能调优](programming_guide/tensor/debug/performance.md)
28- - [CANN包不兼容](./appendix/faq/cann-package-incompatible.md)28+ - [Matmul性能调优指导](programming_guide/tensor/debug/matmul_performance_guide.md)
29- - [TileShape与Tensor维度不匹配](./appendix/faq/tileshape-dimension-mismatch.md)29+ - [ffn_shared_expert_quant算子NPU上板调试案例](programming_guide/tensor/debug/debug_case_ffn.md)
30- - [view未传入valid_shape导致精度问题](./appendix/faq/view-valid-shape-precision.md)30+ - [QuantIndexerProlog算子性能优化案例](programming_guide/tensor/debug/performance_case_quantindexerprolog.md)
31- - [set_xxx_tile_shapes最后一维未32字节对齐](./appendix/faq/tileshape-32byte-alignment.md)31+ - [GatedDeltaRule算子性能优化案例](programming_guide/tensor/debug/performance_case_GDR.md)
32- - [算子编译报堆栈溢出错误](./appendix/faq/stack-overflow-compilation.md)32+ - [PyTorch集成和接入](programming_guide/tensor/pytorch_integration.md)
33- - [循环中使用Python print函数打印](./appendix/faq/python-print-in-loop.md)33+ - [PyPTO Pro编程指南](programming_guide/pro/index.md)
34- - [local Tensor无producer时被读取触发device侧断言](./appendix/faq/local-tensor-no-producer.md)34+ - [编程范式](programming_guide/pro/programming_paradigm/index.md)
35- - [Loop原理及其描述](./appendix/faq/loop-principle.md)35+ - [编程范式概述](programming_guide/pro/programming_paradigm/programming_paradigm_overview.md)
36- - [使用未初始化的Tensor](./appendix/faq/uninitialized-tensor.md)36+ - [SIMT编程模型](programming_guide/pro/programming_paradigm/simt_programming.md)
37- - [同一个Tensor进行View和Assemble导致图成环报错](./appendix/faq/view-assemble-cycle.md)37+ - [抽象硬件架构](programming_guide/pro/programming_paradigm/abstract_hardware_architecture.md)
38- - [SymbolicScalar不支持循环内自增](./appendix/faq/symbolic-scalar-no-increment.md)38+ - [算子开发](programming_guide/pro/development/index.md)
39- - [错误码参考](./appendix/trouble_shooting/index.md)39+ - [Tile核函数](programming_guide/pro/development/kernel_function.md)
40- - [简介](./appendix/trouble_shooting/README.md)40+ - [基于Tile的Python编程](programming_guide/pro/development/tile_based_python_programming/index.md)
41- - [F20000-F3FFFF](./appendix/trouble_shooting/function.md)41+ - [Python语言编程概述](programming_guide/pro/development/tile_based_python_programming/Python_programming_overview.md)
42- - [F4XXXX-F5XXXX](./appendix/trouble_shooting/pass.md)42+ - [Tile矢量计算编程](programming_guide/pro/development/tile_based_python_programming/Tile_vector_computation.md)
43- - [F6XXXX](./appendix/trouble_shooting/codegen.md)43+ - [Reg矢量计算编程](programming_guide/pro/development/tile_based_python_programming/Reg_vector_computation.md)
44- - [F7XXXX-F8XXXX](./appendix/trouble_shooting/machine.md)44+ - [Cube矩阵计算编程](programming_guide/pro/development/tile_based_python_programming/Cube_matrix_computation.md)
45- - [F9XXXX](./appendix/trouble_shooting/simulation.md)45+ - [尾块处理](programming_guide/pro/development/tile_based_python_programming/tail_block_handling.md)
46- - [FC0XXX-FC2XXX](./appendix/trouble_shooting/vector.md)46+ - [多核切分与Tiling:把数据分到多个逻辑AI Core](programming_guide/pro/development/tile_based_python_programming/multi_core_partitioning_and_Tiling.md)
47- - [FC3XXX-FC5XXX](./appendix/trouble_shooting/matmul.md)47+ - [TilingData](programming_guide/pro/development/tile_based_python_programming/TilingData.md)
48- - [FC6XXX-FC8XXX](./appendix/trouble_shooting/conv.md)48+ - [TilingKey](programming_guide/pro/development/tile_based_python_programming/tiling_key.md)
49- - [环境变量参考](./appendix/env_vars/index.md)49+ - [编译与运行](programming_guide/pro/development/compilation_and_execution/index.md)
50- - [PTO_TILE_LIB_CODE_PATH](./appendix/env_vars/PTO_TILE_LIB_CODE_PATH.md)50+ - [AI Core算子JIT编译基本用法](programming_guide/pro/development/compilation_and_execution/JIT_compilation.md)
51- - [TILE_FWK_DEVICE_ID](./appendix/env_vars/TILE_FWK_DEVICE_ID.md)51+ - [AI Core算子离线二进制编译基本用法](programming_guide/pro/development/compilation_and_execution/offline_binary_compilation.md)
52- - [DUMP_DEVICE_PERF](./appendix/env_vars/DUMP_DEVICE_PERF.md)52+ - [高级编程](programming_guide/pro/advanced_programming/index.md)
53- - [PYPTO_PROF_PMU_EVENT_TYPE](./appendix/env_vars/PYPTO_PROF_PMU_EVENT_TYPE.md)53+ - [自动CV并行流水](programming_guide/pro/advanced_programming/auto_parallel_pipeline.md)
54- - [PYPTO_LAUNCH_SCHED_SAME_CLUSTER](./appendix/env_vars/PYPTO_LAUNCH_SCHED_SAME_CLUSTER.md)54+ - [调试调优](programming_guide/pro/debug/index.md)
55- - [PYPTO_DATADUMP_ENABLE](./appendix/env_vars/PYPTO_DATADUMP_ENABLE.md)55+ - [功能调试](programming_guide/pro/debug/functional_debugging.md)
56- - [PYPTO_THIRD_PARTY_PATH](./appendix/env_vars/PYPTO_THIRD_PARTY_PATH.md)56+ - [性能调优](programming_guide/pro/debug/performance_optimization.md)
57+- [附录](appendix/index.md)
58+ - [术语表](appendix/glossary.md)
59+ - [常见问题](appendix/faq/index.md)
60+ - [kernel函数出参未写回导致计算不生效](appendix/faq/kernel-output-not-written-back.md)
61+ - [未设置执行算子的设备ID](appendix/faq/device-id-not-set.md)
62+ - [CANN包不兼容](appendix/faq/cann-package-incompatible.md)
63+ - [TileShape与Tensor维度不匹配](appendix/faq/tileshape-dimension-mismatch.md)
64+ - [view未传入valid_shape导致精度问题](appendix/faq/view-valid-shape-precision.md)
65+ - [set_xxx_tile_shapes最后一维未32字节对齐](appendix/faq/tileshape-32byte-alignment.md)
66+ - [算子编译报堆栈溢出错误](appendix/faq/stack-overflow-compilation.md)
67+ - [循环中使用Python print函数打印](appendix/faq/python-print-in-loop.md)
68+ - [local Tensor无producer时被读取触发device侧断言](appendix/faq/local-tensor-no-producer.md)
69+ - [Loop原理及其描述](appendix/faq/loop-principle.md)
70+ - [使用未初始化的Tensor](appendix/faq/uninitialized-tensor.md)
71+ - [同一个Tensor进行View和Assemble导致图成环报错](appendix/faq/view-assemble-cycle.md)
72+ - [SymbolicScalar不支持循环内自增](appendix/faq/symbolic-scalar-no-increment.md)
73+ - [AICore kernel执行异常](appendix/faq/aicore-exception.md)
74+ - [泳道图问题](appendix/faq/swimlane-issue.md)
75+ - [错误码参考](appendix/trouble_shooting/index.md)
76+ - [简介](appendix/trouble_shooting/README.md)
77+ - [F20000-F3FFFF](appendix/trouble_shooting/function.md)
78+ - [F4XXXX-F5XXXX](appendix/trouble_shooting/pass.md)
79+ - [F6XXXX](appendix/trouble_shooting/codegen.md)
80+ - [F7XXXX-F8XXXX](appendix/trouble_shooting/machine.md)
81+ - [F9XXXX](appendix/trouble_shooting/simulation.md)
82+ - [FC0XXX-FC2XXX](appendix/trouble_shooting/vector.md)
83+ - [FC3XXX-FC5XXX](appendix/trouble_shooting/matmul.md)
84+ - [FC6XXX-FC8XXX](appendix/trouble_shooting/conv.md)
85+ - [环境变量参考](appendix/env_vars/index.md)
86+ - [PTO_TILE_LIB_CODE_PATH](appendix/env_vars/PTO_TILE_LIB_CODE_PATH.md)
87+ - [TILE_FWK_DEVICE_ID](appendix/env_vars/TILE_FWK_DEVICE_ID.md)
88+ - [PYPTO_THIRD_PARTY_PATH](appendix/env_vars/PYPTO_THIRD_PARTY_PATH.md)
89+ - [DUMP_DEVICE_PERF](appendix/env_vars/DUMP_DEVICE_PERF.md)
90+ - [PYPTO_PROF_PMU_EVENT_TYPE](appendix/env_vars/PYPTO_PROF_PMU_EVENT_TYPE.md)
91+ - [PYPTO_LAUNCH_SCHED_SAME_CLUSTER](appendix/env_vars/PYPTO_LAUNCH_SCHED_SAME_CLUSTER.md)
92+ - [PYPTO_DATADUMP_ENABLE](appendix/env_vars/PYPTO_DATADUMP_ENABLE.md)
@@ -82,7 +82,7 @@ PyPTO Pro当前支持以下产品型号:
82建议按照以下路径学习PyPTO Pro:82建议按照以下路径学习PyPTO Pro:
83 83 
841. **环境准备**:参考[环境准备](../install/prepare_environment.md)完成基础环境搭建。841. **环境准备**:参考[环境准备](../install/prepare_environment.md)完成基础环境搭建。
85-2. **快速入门**:从[HelloWorld](quick_start/pro/SIMD/HelloWorld.md)开始,了解Kernel函数定义、JIT编译和运行的基本流程;再通过[Add算子(SIMD)快速入门](quick_start/pro/SIMD/Add_operator.md)学习主要的Tile配置、数据搬运和向量计算方式。需要逐线程编程时,可进一步参考[Add算子(SIMT)快速入门](quick_start/pro/SIMT/Add_operator.md)。85+2. **快速入门**:从[HelloWorld](quick_start/pro/helloworld_simd.md)开始,了解Kernel函数定义、JIT编译和运行的基本流程;再通过[Add算子(SIMD)快速入门](quick_start/pro/add_simd.md)学习主要的Tile配置、数据搬运和向量计算方式。需要逐线程编程时,可进一步参考[Add算子(SIMT)快速入门](quick_start/pro/add_simt.md)。
863. **编程范式**:阅读[编程范式概述](programming_guide/pro/programming_paradigm/programming_paradigm_overview.md),理解SPMD编程、Tile抽象和流水机制。863. **编程范式**:阅读[编程范式概述](programming_guide/pro/programming_paradigm/programming_paradigm_overview.md),理解SPMD编程、Tile抽象和流水机制。
874. **算子开发**:深入学习[基于Tile的Python编程](programming_guide/pro/development/tile_based_python_programming/Python_programming_overview.md),掌握Tensor、Tile、TileGroup等核心数据结构的使用。874. **算子开发**:深入学习[基于Tile的Python编程](programming_guide/pro/development/tile_based_python_programming/Python_programming_overview.md),掌握Tensor、Tile、TileGroup等核心数据结构的使用。
885. **API参考**:查阅[SIMD API](../api/pro_api/SIMD-API/index.md)、[SIMT API](../api/pro_api/SIMT-API/index.md)和[Utils API](../api/pro_api/Utils-API/index.md),了解各接口的详细用法。885. **API参考**:查阅[SIMD API](../api/pro_api/SIMD-API/index.md)、[SIMT API](../api/pro_api/SIMT-API/index.md)和[Utils API](../api/pro_api/Utils-API/index.md),了解各接口的详细用法。
@@ -495,7 +495,7 @@ with pl.section_cube():
495 ...495 ...
496```496```
497 497 
498-完整、可执行的`K=128`示例参见[Matmul算子(SIMD)快速入门](../../../../quick_start/pro/SIMD/Matmul_operator.md)。`K`大于单个K Tile时,需要沿K轴循环并使用累加语义。498+完整、可执行的`K=128`示例参见[Matmul算子(SIMD)快速入门](../../../../quick_start/pro/matmul_simd.md)。`K`大于单个K Tile时,需要沿K轴循环并使用累加语义。
499 499 
500多核、TilingData与尾块处理的组合用法参见[TilingData](TilingData.md)和500多核、TilingData与尾块处理的组合用法参见[TilingData](TilingData.md)和
501[尾块处理](tail_block_handling.md)。501[尾块处理](tail_block_handling.md)。
@@ -181,7 +181,7 @@ Host端使用transform_kernel\[None, 4\](...)启动该Kernel时,当前Vector
181 181 
182## 相关文档182## 相关文档
183 183 
184-- [Add算子(SIMT)快速入门](../../../quick_start/pro/SIMT/Add_operator.md)184+- [Add算子(SIMT)快速入门](../../../quick_start/pro/add_simt.md)
185- [SIMT API](../../../../api/index.md)185- [SIMT API](../../../../api/index.md)
186- [simt.launch](../../../../api/pro_api/SIMT-API/execution/launch.md)186- [simt.launch](../../../../api/pro_api/SIMT-API/execution/launch.md)
187- [SIMT执行](../../../../api/index.md)187- [SIMT执行](../../../../api/index.md)
@@ -1,11 +0,0 @@
1-# SIMD 快速入门
2- 
3-```{toctree}
4-:maxdepth: 1
5-:titlesonly:
6- 
7-HelloWorld
8-Add_operator
9-Matmul_operator
10-CV_fused_operator
11-```
@@ -1,8 +0,0 @@
1-# SIMT 快速入门
2- 
3-```{toctree}
4-:maxdepth: 1
5-:titlesonly:
6- 
7-Add_operator
8-```
Rdocs/zh/guide/quick_start/pro/SIMD/Add_operator.md→docs/zh/guide/quick_start/pro/add_simd.md+8-8
@@ -1,6 +1,6 @@
1-# Add算子快速入门1+# Add算子快速入门(SIMD)
2 2 
3-本示例是一个入门实践,基于PyPTO Pro SIMD实现Add算子,帮助您快速上手。它完整呈现了Kernel函数定义、Tile配置、数据搬运、计算及运行的全流程,助您建立整体认知。开始前,请先参考[环境准备](../../../../install/prepare_environment.md)完成基础环境搭建。3+本示例是一个入门实践,基于PyPTO Pro SIMD实现Add算子,帮助您快速上手。它完整呈现了Kernel函数定义、Tile配置、数据搬运、计算及运行的全流程,助您建立整体认知。开始前,请先参考[环境准备](../../../install/prepare_environment.md)完成基础环境搭建。
4 4 
5## Add算子5## Add算子
6 6 
@@ -11,11 +11,11 @@
11| 模块 | 说明 |11| 模块 | 说明 |
12|:---|:---|12|:---|:---|
13| Kernel函数定义 | 通过`@pl.jit(auto_mutex=True)`声明JIT编译目标,开启自动同步 |13| Kernel函数定义 | 通过`@pl.jit(auto_mutex=True)`声明JIT编译目标,开启自动同步 |
14-| Tile定义 | 使用[`pl.TileType`](../../../../api/pro_api/SIMD-API/basic_data_structures/TileType.md)定义片上Tile的形状、数据类型和目标内存空间 |14+| Tile定义 | 使用[`pl.TileType`](../../../api/pro_api/SIMD-API/basic_data_structures/TileType.md)定义片上Tile的形状、数据类型和目标内存空间 |
15-| Tile分配 | 使用[`pl.make_tile_group`](../../../../api/pro_api/SIMD-API/operation/resource_management/make_tile_group.md)分配片上内存,通过`mutex_ids`指定互斥缓冲,框架自动插入同步 |15+| Tile分配 | 使用[`pl.make_tile_group`](../../../api/pro_api/SIMD-API/operation/resource_management/make_tile_group.md)分配片上内存,通过`mutex_ids`指定互斥缓冲,框架自动插入同步 |
16-| 数据搬入 | 通过[`pl.load`](../../../../api/pro_api/SIMD-API/operation/memory_data_movement/load.md)将GM数据搬入UB Tile |16+| 数据搬入 | 通过[`pl.load`](../../../api/pro_api/SIMD-API/operation/memory_data_movement/load.md)将GM数据搬入UB Tile |
17-| 数据计算 | 通过[`pl.add`](../../../../api/pro_api/SIMD-API/operation/memory_vector_computation/elementwise/add.md)完成逐元素加法 |17+| 数据计算 | 通过[`pl.add`](../../../api/pro_api/SIMD-API/operation/memory_vector_computation/elementwise/add.md)完成逐元素加法 |
18-| 数据搬出 | 通过[`pl.store`](../../../../api/pro_api/SIMD-API/operation/memory_data_movement/store.md)将UB Tile结果写回GM |18+| 数据搬出 | 通过[`pl.store`](../../../api/pro_api/SIMD-API/operation/memory_data_movement/store.md)将UB Tile结果写回GM |
19 19 
20## 算子代码实现20## 算子代码实现
21 21 
@@ -67,4 +67,4 @@ print("Add kernel passed!")
67> - `tile_group.current()`获取当前可用缓冲。67> - `tile_group.current()`获取当前可用缓冲。
68> - `pl.section_vector()`标记后续代码在Vector流水单元上执行。68> - `pl.section_vector()`标记后续代码在Vector流水单元上执行。
69> - 昇腾NPU对FP16和BF16有原生硬件加速,建议在算子开发中优先考虑这些数据类型。69> - 昇腾NPU对FP16和BF16有原生硬件加速,建议在算子开发中优先考虑这些数据类型。
70-> - 如需进一步了解PyPTO Pro的SIMD编程模型,请参阅[编程范式概述](../../../programming_guide/pro/programming_paradigm/programming_paradigm_overview.md)。70+> - 如需进一步了解PyPTO Pro的SIMD编程模型,请参阅[编程范式概述](../../programming_guide/pro/programming_paradigm/programming_paradigm_overview.md)。
Rdocs/zh/guide/quick_start/pro/SIMT/Add_operator.md→docs/zh/guide/quick_start/pro/add_simt.md+8-8
@@ -1,6 +1,6 @@
1-# Add算子快速入门1+# Add算子快速入门(SIMT)
2 2 
3-本示例是一个入门实践,基于PyPTO Pro SIMT实现Add算子,帮助您快速上手。它完整呈现了Kernel函数定义、SIMT函数定义、Tile配置、数据搬运、计算及运行的全流程,助您建立整体认知。开始前,请先参考[环境准备](../../../../install/prepare_environment.md)完成基础环境搭建。3+本示例是一个入门实践,基于PyPTO Pro SIMT实现Add算子,帮助您快速上手。它完整呈现了Kernel函数定义、SIMT函数定义、Tile配置、数据搬运、计算及运行的全流程,助您建立整体认知。开始前,请先参考[环境准备](../../../install/prepare_environment.md)完成基础环境搭建。
4 4 
5## Add算子5## Add算子
6 6 
@@ -12,12 +12,12 @@
12|:---|:---|12|:---|:---|
13| Kernel函数定义 | 通过@pl.jit声明JIT编译目标 |13| Kernel函数定义 | 通过@pl.jit声明JIT编译目标 |
14| SIMT函数定义 | 通过@pl.simt.function定义SIMT入口函数,并通过max_threads设置单个线程块的最大线程数 |14| SIMT函数定义 | 通过@pl.simt.function定义SIMT入口函数,并通过max_threads设置单个线程块的最大线程数 |
15-| Tile定义 | 使用[pl.TileType](../../../../api/pro_api/SIMD-API/basic_data_structures/TileType.md)定义片上Tile的形状、数据类型和目标内存空间 |15+| Tile定义 | 使用[pl.TileType](../../../api/pro_api/SIMD-API/basic_data_structures/TileType.md)定义片上Tile的形状、数据类型和目标内存空间 |
16-| Tile分配 | 使用[pl.make_tile](../../../../api/pro_api/SIMD-API/operation/resource_management/make_tile.md)分配片上内存 |16+| Tile分配 | 使用[pl.make_tile](../../../api/pro_api/SIMD-API/operation/resource_management/make_tile.md)分配片上内存 |
17-| 数据搬入 | 通过[pl.load](../../../../api/pro_api/SIMD-API/operation/memory_data_movement/load.md)将GM数据搬入UB Tile |17+| 数据搬入 | 通过[pl.load](../../../api/pro_api/SIMD-API/operation/memory_data_movement/load.md)将GM数据搬入UB Tile |
18-| 数据计算 | 通过[pl.simt.launch](../../../../api/pro_api/SIMT-API/execution/launch.md)启动一维线程块,每个线程通过[pl.simt.thread_idx](../../../../api/pro_api/SIMT-API/execution/thread_idx.md)获取线程编号并更新一个Tile元素 |18+| 数据计算 | 通过[pl.simt.launch](../../../api/pro_api/SIMT-API/execution/launch.md)启动一维线程块,每个线程通过[pl.simt.thread_idx](../../../api/pro_api/SIMT-API/execution/thread_idx.md)获取线程编号并更新一个Tile元素 |
19| 流水同步 | 通过pl.system.sync_src和pl.system.sync_dst描述MTE2、SIMT Vector流水和MTE3之间的数据依赖 |19| 流水同步 | 通过pl.system.sync_src和pl.system.sync_dst描述MTE2、SIMT Vector流水和MTE3之间的数据依赖 |
20-| 数据搬出 | 通过[pl.store](../../../../api/pro_api/SIMD-API/operation/memory_data_movement/store.md)将UB Tile结果写回GM |20+| 数据搬出 | 通过[pl.store](../../../api/pro_api/SIMD-API/operation/memory_data_movement/store.md)将UB Tile结果写回GM |
21 21 
22## 算子代码实现22## 算子代码实现
23 23 
@@ -88,4 +88,4 @@ print("SIMT kernel passed!")
88> - pl.simt.thread_idx().x返回当前线程在线程块X维的编号,取值范围为[0, 256),每个线程访问Tile中的一个元素。88> - pl.simt.thread_idx().x返回当前线程在线程块X维的编号,取值范围为[0, 256),每个线程访问Tile中的一个元素。
89> - pl.load通过MTE2流水将输入搬入UB,pl.simt.launch在SIMT Vector流水上更新Tile,pl.store通过MTE3流水将结果搬回GM。89> - pl.load通过MTE2流水将输入搬入UB,pl.simt.launch在SIMT Vector流水上更新Tile,pl.store通过MTE3流水将结果搬回GM。
90> - 不同流水之间存在数据依赖,因此需要成对调用pl.system.sync_src和pl.system.sync_dst显式同步。90> - 不同流水之间存在数据依赖,因此需要成对调用pl.system.sync_src和pl.system.sync_dst显式同步。
91-> - 如需进一步了解PyPTO Pro的SIMT编程模型,请参阅[SIMT编程模型](../../../programming_guide/pro/programming_paradigm/simt_programming.md)。91+> - 如需进一步了解PyPTO Pro的SIMT编程模型,请参阅[SIMT编程模型](../../programming_guide/pro/programming_paradigm/simt_programming.md)。
Rdocs/zh/guide/quick_start/pro/SIMD/CV_fused_operator.md→docs/zh/guide/quick_start/pro/cv_fused_simd.md+7-7
@@ -1,10 +1,10 @@
1-# CV融合算子快速入门1+# CV融合算子快速入门(SIMD)
2 2 
3-本示例是一个入门实践,基于PyPTO Pro SIMD实现Matmul+Softmax融合算子,帮助您快速上手Cube与Vector流水线协同的融合算子开发。它完整呈现了矩阵乘(Cube流水)与行向Softmax(Vector流水)在同一Kernel中的协作流程,助您建立多流水融合的整体认知。开始前,请先参考[环境准备](../../../../install/prepare_environment.md)完成基础环境搭建。3+本示例是一个入门实践,基于PyPTO Pro SIMD实现Matmul+Softmax融合算子,帮助您快速上手Cube与Vector流水线协同的融合算子开发。它完整呈现了矩阵乘(Cube流水)与行向Softmax(Vector流水)在同一Kernel中的协作流程,助您建立多流水融合的整体认知。开始前,请先参考[环境准备](../../../install/prepare_environment.md)完成基础环境搭建。
4 4 
5## Matmul+Softmax融合算子5## Matmul+Softmax融合算子
6 6 
7-**功能介绍**:该融合算子将矩阵乘法与Softmax激活融合到一个Kernel中,数学表达式为 $out = \text{Softmax}(A \times B)$。其中矩阵乘法 $S = A \times B$ 在Cube流水线上执行,Softmax按行归一化在Vector流水线上执行,中间结果通过Global Memory的workspace中转,Cube与Vector之间通过[`set_cross_core`](../../../../api/pro_api/SIMD-API/operation/synchronization/set_cross_core.md)和[`wait_cross_core`](../../../../api/pro_api/SIMD-API/operation/synchronization/wait_cross_core.md)进行流水线同步。7+**功能介绍**:该融合算子将矩阵乘法与Softmax激活融合到一个Kernel中,数学表达式为 $out = \text{Softmax}(A \times B)$。其中矩阵乘法 $S = A \times B$ 在Cube流水线上执行,Softmax按行归一化在Vector流水线上执行,中间结果通过Global Memory的workspace中转,Cube与Vector之间通过[`set_cross_core`](../../../api/pro_api/SIMD-API/operation/synchronization/set_cross_core.md)和[`wait_cross_core`](../../../api/pro_api/SIMD-API/operation/synchronization/wait_cross_core.md)进行流水线同步。
8 8 
9- Softmax按行归一化的数学表达式为:9- Softmax按行归一化的数学表达式为:
10 10 
@@ -206,7 +206,7 @@ print("Matmul-Softmax kernel passed!")
206> [!NOTE]说明206> [!NOTE]说明
207>207>
208> - 该融合算子在同一个Kernel内同时使用`section_cube()`和`section_vector()`,Cube流水执行矩阵乘法,Vector流水执行Softmax,体现了AI Core多流水线协同计算的能力。208> - 该融合算子在同一个Kernel内同时使用`section_cube()`和`section_vector()`,Cube流水执行矩阵乘法,Vector流水执行Softmax,体现了AI Core多流水线协同计算的能力。
209-> - 本示例按单个1:2 CV执行组设计,因此`block_dim`设置为1。扩展为多个执行组时,需要通过`pypto_pro.language.get_block_idx()`划分各执行组处理的输入、workspace和输出范围。`block_dim`的完整说明参见[Kernel函数](../../../programming_guide/pro/development/kernel_function.md#blockdim的含义与设置)。209+> - 本示例按单个1:2 CV执行组设计,因此`block_dim`设置为1。扩展为多个执行组时,需要通过`pypto_pro.language.get_block_idx()`划分各执行组处理的输入、workspace和输出范围。`block_dim`的完整说明参见[Kernel函数](../../programming_guide/pro/development/kernel_function.md#blockDim的含义与设置)。
210> - M/N为`pypto_pro.language.DYNAMIC`,GM维度在运行时通过`a.shape[0]`和`b.shape[1]`获取;K固定为128。本示例在一个Cube Tile内处理M,支持`1 <= M <= 64`;N按64分块,循环次数由运行时N计算,因此同一Kernel可处理1024、4096等不同N值。210> - M/N为`pypto_pro.language.DYNAMIC`,GM维度在运行时通过`a.shape[0]`和`b.shape[1]`获取;K固定为128。本示例在一个Cube Tile内处理M,支持`1 <= M <= 64`;N按64分块,循环次数由运行时N计算,因此同一Kernel可处理1024、4096等不同N值。
211> - Cube段沿N轴分块。每个N块完整载入K = 128的A/B子块并执行一次`pypto_pro.language.matmul`;L0C在矩阵乘前设置`valid_shape([valid_m, valid_n])`,使M/N尾块使用当前有效尺寸。211> - Cube段沿N轴分块。每个N块完整载入K = 128的A/B子块并执行一次`pypto_pro.language.matmul`;L0C在矩阵乘前设置`valid_shape([valid_m, valid_n])`,使M/N尾块使用当前有效尺寸。
212> - `valid_shape=[-1, -1]`在`TileType`中声明Tile的有效区域为运行时动态,后续通过`pypto_pro.language.set_validshape`在运行时设置。Left/Right/Acc上的`compact=1`使L1到L0的分形重排和L0C到GM的存储按当前有效尺寸使用紧凑步长,用于处理M/N不整除Tile尺寸的尾块。212> - `valid_shape=[-1, -1]`在`TileType`中声明Tile的有效区域为运行时动态,后续通过`pypto_pro.language.set_validshape`在运行时设置。Left/Right/Acc上的`compact=1`使L1到L0的分形重排和L0C到GM的存储按当前有效尺寸使用紧凑步长,用于处理M/N不整除Tile尺寸的尾块。
@@ -215,15 +215,15 @@ print("Matmul-Softmax kernel passed!")
215> - Vector不把完整N轴放入一个Tile,而是按64列读取S。第一遍得到完整N轴最大值,第二遍得到基于该最大值的完整N轴分母,第三遍逐块归一化并直接写回。`[M半块, N块]`视图沿`dim=0`归约后得到`[M半块, 1]`的DN结果,供`expand_sub`和`expand_div`按行广播;跨N块的最大值与分母通过同一UB地址上的`[1, M半块]`行主序别名执行`maximum`和`add`,不需要额外搬运。215> - Vector不把完整N轴放入一个Tile,而是按64列读取S。第一遍得到完整N轴最大值,第二遍得到基于该最大值的完整N轴分母,第三遍逐块归一化并直接写回。`[M半块, N块]`视图沿`dim=0`归约后得到`[M半块, 1]`的DN结果,供`expand_sub`和`expand_div`按行广播;跨N块的最大值与分母通过同一UB地址上的`[1, M半块]`行主序别名执行`maximum`和`add`,不需要额外搬运。
216> - 调用示例将标准正态随机输入缩小到0.1倍,避免未缩放点积使Softmax进入高度饱和区,从而放大NPU计算结果与PyTorch参考结果之间的浮点舍入差异;该缩放仅用于测试数据,不属于Kernel计算。216> - 调用示例将标准正态随机输入缩小到0.1倍,避免未缩放点积使Softmax进入高度饱和区,从而放大NPU计算结果与PyTorch参考结果之间的浮点舍入差异;该缩放仅用于测试数据,不属于Kernel计算。
217> - `auto_mutex=True`自动管理各Tile的mutex锁,开发者无需手写`mutex_lock`/`mutex_unlock`。217> - `auto_mutex=True`自动管理各Tile的mutex锁,开发者无需手写`mutex_lock`/`mutex_unlock`。
218-> - 如需进一步了解PyPTO Pro的SIMD编程模型,请参阅[编程范式概述](../../../programming_guide/pro/programming_paradigm/programming_paradigm_overview.md)。218+> - 如需进一步了解PyPTO Pro的SIMD编程模型,请参阅[编程范式概述](../../programming_guide/pro/programming_paradigm/programming_paradigm_overview.md)。
219 219 
220### 基于VF(Vector Function)的寄存器级实现220### 基于VF(Vector Function)的寄存器级实现
221 221 
222-VF(Vector Function,向量函数)是PyPTO Pro中用于描述寄存器级向量计算的函数。VF函数使用`@pypto_pro.language.vector_function`定义,并通过[`vf.*`接口](../../../../api/index.md)将UB中的数据加载到向量寄存器,完成计算后再写回UB。外层Kernel仍使用Tile API负责Cube计算、GM与UB之间的数据搬运、UB转置和流水同步。222+VF(Vector Function,向量函数)是PyPTO Pro中用于描述寄存器级向量计算的函数。VF函数使用`@pypto_pro.language.vector_function`定义,并通过[`vf.*`接口](../../../api/index.md)将UB中的数据加载到向量寄存器,完成计算后再写回UB。外层Kernel仍使用Tile API负责Cube计算、GM与UB之间的数据搬运、UB转置和流水同步。
223 223 
224本节保持输入、输出以及三遍Softmax算法不变,仅将Vector段的Softmax计算改为VF实现。当前`[M半块,N块]`先通过`pypto_pro.language.transpose`转换为UB中的`[N块,64]`物理块,使VF寄存器的每个FP32 lane对应一个M行;随后遍历N轴数据,逐lane更新该行的最大值、指数和及归一化结果。224本节保持输入、输出以及三遍Softmax算法不变,仅将Vector段的Softmax计算改为VF实现。当前`[M半块,N块]`先通过`pypto_pro.language.transpose`转换为UB中的`[N块,64]`物理块,使VF寄存器的每个FP32 lane对应一个M行;随后遍历N轴数据,逐lane更新该行的最大值、指数和及归一化结果。
225 225 
226-首次接触VF编程时,建议先阅读[Reg矢量计算编程](../../../programming_guide/pro/development/tile_based_python_programming/Reg_vector_computation.md)。226+首次接触VF编程时,建议先阅读[Reg矢量计算编程](../../programming_guide/pro/development/tile_based_python_programming/Reg_vector_computation.md)。
227 227 
228| 模块 | 说明 |228| 模块 | 说明 |
229|:---|:---|229|:---|:---|
Rdocs/zh/guide/quick_start/pro/SIMD/HelloWorld.md→docs/zh/guide/quick_start/pro/helloworld_simd.md+4-4
@@ -1,6 +1,6 @@
1-# HelloWorld1+# HelloWorld(SIMD)
2 2 
3-本入门示例基于PyPTO Pro SIMD实现Hello World算子,带你快速上手实践,涵盖Kernel函数定义、JIT编译以及运行的完整流程,帮助开发者建立整体认知。开始前请参考[环境准备](../../../../install/prepare_environment.md)完成基础环境搭建。3+本入门示例基于PyPTO Pro SIMD实现Hello World算子,带你快速上手实践,涵盖Kernel函数定义、JIT编译以及运行的完整流程,帮助开发者建立整体认知。开始前请参考[环境准备](../../../install/prepare_environment.md)完成基础环境搭建。
4 4 
5## Hello World5## Hello World
6 6 
@@ -8,7 +8,7 @@
8 8 
9## Kernel函数实现9## Kernel函数实现
10 10 
11-通过`@pypto_pro.language.jit()`装饰器定义Kernel函数,使用[`pypto_pro.language.printf`](../../../../api/pro_api/Utils-API/debugging/printf.md)在Device端打印字符串。[`pypto_pro.language.section_vector()`](../../../../api/pro_api/SIMD-API/operation/controlflow/section_vector.md)用于声明该段代码在Vector核上执行,其中`pypto_pro.language.printf`由Scalar流水执行。11+通过`@pypto_pro.language.jit()`装饰器定义Kernel函数,使用[`pypto_pro.language.printf`](../../../api/pro_api/Utils-API/debugging/printf.md)在Device端打印字符串。[`pypto_pro.language.section_vector()`](../../../api/pro_api/SIMD-API/operation/controlflow/section_vector.md)用于声明该段代码在Vector核上执行,其中`pypto_pro.language.printf`由Scalar流水执行。
12 12 
13```python13```python
14import pypto_pro.language as pl14import pypto_pro.language as pl
@@ -58,4 +58,4 @@ python3 hello_world.py
58 58 
59> [!NOTE]说明59> [!NOTE]说明
60>60>
61-> 如需进一步了解PyPTO Pro的SIMD编程模型,请参阅[编程范式概述](../../../programming_guide/pro/programming_paradigm/programming_paradigm_overview.md)。61+> 如需进一步了解PyPTO Pro的SIMD编程模型,请参阅[编程范式概述](../../programming_guide/pro/programming_paradigm/programming_paradigm_overview.md)。
@@ -1,11 +1,12 @@
1# PyPTO Pro编程1# PyPTO Pro编程
2 2 
3-本节通过具体示例帮助您快速了解PyPTO Pro的编程方式。其中,建议先通过SIMD示例掌握主要的Tile编程流程;需要逐线程编程时,再参考SIMT示例。
4- 
5```{toctree}3```{toctree}
6:maxdepth: 24:maxdepth: 2
7:titlesonly:5:titlesonly:
8 6 
9-SIMD/index7+helloworld_simd
10-SIMT/index8+add_simd
9+matmul_simd
10+cv_fused_simd
11+add_simt
11```12```
Rdocs/zh/guide/quick_start/pro/SIMD/Matmul_operator.md→docs/zh/guide/quick_start/pro/matmul_simd.md+3-3
@@ -1,4 +1,4 @@
1-# Matmul算子快速入门1+# Matmul算子快速入门(SIMD)
2 2 
3## 任务与目标3## 任务与目标
4 4 
@@ -31,9 +31,9 @@
31 31 
32- 使用的主要接口32- 使用的主要接口
33 33 
34- 基础搬运接口:[`load_tile`](../../../../api/pro_api/SIMD-API/operation/memory_data_movement/load_tile.md)、[`store_tile`](../../../../api/pro_api/SIMD-API/operation/memory_data_movement/store_tile.md)、[`move`](../../../../api/pro_api/SIMD-API/operation/memory_data_movement/move.md)34+ 基础搬运接口:[`load_tile`](../../../api/pro_api/SIMD-API/operation/memory_data_movement/load_tile.md)、[`store_tile`](../../../api/pro_api/SIMD-API/operation/memory_data_movement/store_tile.md)、[`move`](../../../api/pro_api/SIMD-API/operation/memory_data_movement/move.md)
35 35 
36- 基础计算接口:[`matmul`](../../../../api/pro_api/SIMD-API/operation/matrix_computation/matmul.md)36+ 基础计算接口:[`matmul`](../../../api/pro_api/SIMD-API/operation/matrix_computation/matmul.md)
37 37 
38## 导入PyPTO Pro模块38## 导入PyPTO Pro模块
39 39 
@@ -1,4 +1,4 @@
1-# 快速入门1+# Softmax算子快速入门
2 2 
3## 任务与目标3## 任务与目标
4 4