已合并
fix(docs): Updata the doc menu title. #5992
lyz0328创建于 9月7日
fix(docs): Updata the doc menu title. #5992
已合并
共 19 个文件变更+663-394
| @@ -1,4 +1,4 @@ | |||
| 1 | -# SIMT执行 | 1 | +# 执行模型 |
| 2 | 2 | ||
| 3 | ```{toctree} | 3 | ```{toctree} |
| 4 | :maxdepth: 1 | 4 | :maxdepth: 1 |
| @@ -1,4 +1,4 @@ | |||
| 1 | -# 标量计算接口 | 1 | +# 标量计算 |
| 2 | 2 | ||
| 3 | ```{toctree} | 3 | ```{toctree} |
| 4 | :maxdepth: 1 | 4 | :maxdepth: 1 |
| @@ -1,4 +1,4 @@ | |||
| 1 | -# 调测接口 | 1 | +# 调测API |
| 2 | 2 | ||
| 3 | ```{toctree} | 3 | ```{toctree} |
| 4 | :maxdepth: 1 | 4 | :maxdepth: 1 |
| @@ -1,4 +1,4 @@ | |||
| 1 | -# PyPTO Pro API参考 | 1 | +# PyPTO Pro API |
| 2 | 2 | ||
| 3 | ```{toctree} | 3 | ```{toctree} |
| 4 | :maxdepth: 1 | 4 | :maxdepth: 1 |
| @@ -1,4 +1,4 @@ | |||
| 1 | -# PyPTO Tensor API参考 | 1 | +# PyPTO Tensor API |
| 2 | 2 | ||
| 3 | ```{toctree} | 3 | ```{toctree} |
| 4 | :maxdepth: 2 | 4 | :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 | ||
| 84 | 1. **环境准备**:参考[环境准备](../install/prepare_environment.md)完成基础环境搭建。 | 84 | 1. **环境准备**:参考[环境准备](../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)。 |
| 86 | 3. **编程范式**:阅读[编程范式概述](programming_guide/pro/programming_paradigm/programming_paradigm_overview.md),理解SPMD编程、Tile抽象和流水机制。 | 86 | 3. **编程范式**:阅读[编程范式概述](programming_guide/pro/programming_paradigm/programming_paradigm_overview.md),理解SPMD编程、Tile抽象和流水机制。 |
| 87 | 4. **算子开发**:深入学习[基于Tile的Python编程](programming_guide/pro/development/tile_based_python_programming/Python_programming_overview.md),掌握Tensor、Tile、TileGroup等核心数据结构的使用。 | 87 | 4. **算子开发**:深入学习[基于Tile的Python编程](programming_guide/pro/development/tile_based_python_programming/Python_programming_overview.md),掌握Tensor、Tile、TileGroup等核心数据结构的使用。 |
| 88 | 5. **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),了解各接口的详细用法。 | 88 | 5. **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 | -``` | ||
| @@ -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)。 |
| @@ -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 | -# HelloWorld | 1 | +# 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 World | 5 | ## 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 | ```python | 13 | ```python |
| 14 | import pypto_pro.language as pl | 14 | import 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: 2 | 4 | :maxdepth: 2 |
| 7 | :titlesonly: | 5 | :titlesonly: |
| 8 | 6 | ||
| 9 | -SIMD/index | 7 | +helloworld_simd |
| 10 | -SIMT/index | 8 | +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 | ||