已合并
资料修改L12GM通路&&标题修改 #5030
treefei创建于 8月11日
资料修改L12GM通路&&标题修改 #5030
已合并
共 18 个文件变更+29-28
| @@ -65,6 +65,8 @@ AI Core是昇腾处理器的核心计算单元,以[NPU架构版本2201](../../ | |||
| 65 | | UB | L1 Buffer | MTE3 | 将UB中的非对齐数据搬运到L1 Buffer,并对边界无效区域做Padding填充。 | DataCopyPad | | 65 | | UB | L1 Buffer | MTE3 | 将UB中的非对齐数据搬运到L1 Buffer,并对边界无效区域做Padding填充。 | DataCopyPad | |
| 66 | | L1 Buffer | UB | MTE3 | 将L1 Buffer中的数据连续搬运至UB。 | DataCopyL1ToUB | | 66 | | L1 Buffer | UB | MTE3 | 将L1 Buffer中的数据连续搬运至UB。 | DataCopyL1ToUB | |
| 67 | | L1 Buffer | UB | MTE3 | 将L1 Buffer中的数据通过高维切分方式搬运至UB。 | DataCopyL1ToUB | | 67 | | L1 Buffer | UB | MTE3 | 将L1 Buffer中的数据通过高维切分方式搬运至UB。 | DataCopyL1ToUB | |
| 68 | +| L1 Buffer | Global Memory | MTE3 | 将L1 Buffer中的数据连续搬运至Global Memory。 | DataCopy | | ||
| 69 | +| L1 Buffer | Global Memory | MTE3 | 将L1 Buffer中的数据通过高维切分方式搬运至Global Memory。 | DataCopy | | ||
| 68 | | L1 Buffer | L0A Buffer | MTE1 | 将L1 Buffer中的2D格式分形矩阵搬运至L0A Buffer作为Cube矩阵乘的左矩阵输入。 | LoadData(2D矩阵搬运) | | 70 | | L1 Buffer | L0A Buffer | MTE1 | 将L1 Buffer中的2D格式分形矩阵搬运至L0A Buffer作为Cube矩阵乘的左矩阵输入。 | LoadData(2D矩阵搬运) | |
| 69 | | L1 Buffer | L0A Buffer | MTE1 | 将L1 Buffer中的2D格式分形矩阵搬运至L0A Buffer作为Cube矩阵乘的左矩阵输入。 | LoadData(2D矩阵搬运V2) | | 71 | | L1 Buffer | L0A Buffer | MTE1 | 将L1 Buffer中的2D格式分形矩阵搬运至L0A Buffer作为Cube矩阵乘的左矩阵输入。 | LoadData(2D矩阵搬运V2) | |
| 70 | | L1 Buffer | L0A Buffer | MTE1 | 将L1 Buffer中的2D格式分形矩阵搬运至L0A Buffer作为Cube矩阵乘的左矩阵输入。 | LoadData(MX矩阵搬运) | | 72 | | L1 Buffer | L0A Buffer | MTE1 | 将L1 Buffer中的2D格式分形矩阵搬运至L0A Buffer作为Cube矩阵乘的左矩阵输入。 | LoadData(MX矩阵搬运) | |
| @@ -50,7 +50,7 @@ AI Core内部并行的指令流水类型和解释如下所示: | |||
| 50 | | PIPE_M | 矩阵计算流水 | | 50 | | PIPE_M | 矩阵计算流水 | |
| 51 | | PIPE_MTE1 | L1 Buffer ->L0A Buffer、L1 Buffer->L0B Buffer数据搬运流水 | | 51 | | PIPE_MTE1 | L1 Buffer ->L0A Buffer、L1 Buffer->L0B Buffer数据搬运流水 | |
| 52 | | PIPE_MTE2 | GM->L1 Buffer、GM->UB等数据搬运流水 | | 52 | | PIPE_MTE2 | GM->L1 Buffer、GM->UB等数据搬运流水 | |
| 53 | -| PIPE_MTE3 | UB->GM等数据搬运流水 | | 53 | +| PIPE_MTE3 | UB->GM、L1 Buffer->GM等数据搬运流水 | |
| 54 | | PIPE_FIX | L0C Buffer->GM、L0C Buffer ->L1等数据搬运流水 | | 54 | | PIPE_FIX | L0C Buffer->GM、L0C Buffer ->L1等数据搬运流水 | |
| 55 | 55 | ||
| 56 | ## 核内同步分类<a name="zh-cn_topic_0000002542725361_section2167161594419"></a> | 56 | ## 核内同步分类<a name="zh-cn_topic_0000002542725361_section2167161594419"></a> |
| @@ -44,7 +44,7 @@ NPU内部有不同的计算单元,在计算时往往需要把计算数据搬 | |||
| 44 | - PIPE_M:矩阵计算流水线。 | 44 | - PIPE_M:矩阵计算流水线。 |
| 45 | - PIPE_MTE1:搬运操作。包括从L1 Buffer到L0A Buffer或L0B Buffer,从L1 Buffer到Unified Buffer(UB)的搬运操作和L0A Buffer或L0B Buffer的初始化操作。 | 45 | - PIPE_MTE1:搬运操作。包括从L1 Buffer到L0A Buffer或L0B Buffer,从L1 Buffer到Unified Buffer(UB)的搬运操作和L0A Buffer或L0B Buffer的初始化操作。 |
| 46 | - PIPE_MTE2:搬运操作。包括从GM到L1 Buffer、从GM到L0A Buffer或L0B Buffer、从GM到UB的搬运操作和L1 Buffer的初始化操作。 | 46 | - PIPE_MTE2:搬运操作。包括从GM到L1 Buffer、从GM到L0A Buffer或L0B Buffer、从GM到UB的搬运操作和L1 Buffer的初始化操作。 |
| 47 | -- PIPE_MTE3:搬运操作。包括从UB到GM、从UB到L1 Buffer的操作和从UB到UB的搬运操作。 | 47 | +- PIPE_MTE3:搬运操作。包括从UB到GM、从UB到L1 Buffer、从L1 Buffer到GM的操作和从UB到UB的搬运操作。 |
| 48 | - PIPE_FIX:Fixpipe流水线。 | 48 | - PIPE_FIX:Fixpipe流水线。 |
| 49 | - PIPE_ALL:所有流水线。 | 49 | - PIPE_ALL:所有流水线。 |
| 50 | 50 | ||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | ## 流水类型 | 62 | ## 流水类型 |
| 63 | 63 | ||
| 64 | -PIPE_MTE1 | 64 | +PIPE_MTE3 |
| 65 | 65 | ||
| 66 | ## 约束说明 | 66 | ## 约束说明 |
| 67 | 67 | ||
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:0c3a9b8c0df27b369b774d42beaa8d86d614650098383db5db0c14157e924266 | 2 | +oid sha256:da87b8c7ab0faf51f0c22c373c7b02eaa5c85e161501f32cea4a9364a0167400 |
| 3 | -size 72463 | 3 | +size 295822 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:175c39433832dcfc47e13958a3d5e689de60487c7f9947a4bfd648baeec17da9 | 2 | +oid sha256:1c3840894085ca05ce83aaa7dd84cb4f0152e0ec74e2f6b7644efcc0e7b46df9 |
| 3 | -size 80408 | 3 | +size 294466 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:853cf5537e960a20a501adb3f90cfb12fa8562b7589fca542aeae73e99bd5448 | 2 | +oid sha256:b6384111bb5fba3881645403255962042f98ddb1a566e7d0bec9a2d609d39ea8 |
| 3 | -size 83674 | 3 | +size 298743 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:dd5c466fa7e2f0e3e224b3f0a3a5cc3c668dc87334791ba04a8783f3b84394a1 | 2 | +oid sha256:4f82791667cfb476175c891e7df35644285181c58b58f0ee942175e4fe727afe |
| 3 | -size 84317 | 3 | +size 300255 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:9329110035b717a1091f4e8d2ba0e78a3246c30891143a4873110c5ff40038c9 | 2 | +oid sha256:d402979b7d2ad83d6b655c15b869a7c0deb4e7388e1ef23314dd424b97566183 |
| 3 | -size 91369 | 3 | +size 326402 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:483d0cf99080e459e0a2cd0be87675b6714e2fed103b2ce983ce4e6c6aacf6a1 | 2 | +oid sha256:65083e66929f83e36fbd3a999f214ecb12a4722fdf7ec6e9083570ecaac4d2af |
| 3 | -size 52383 | 3 | +size 204873 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:9329110035b717a1091f4e8d2ba0e78a3246c30891143a4873110c5ff40038c9 | 2 | +oid sha256:d402979b7d2ad83d6b655c15b869a7c0deb4e7388e1ef23314dd424b97566183 |
| 3 | -size 91369 | 3 | +size 326402 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:cd2a02a7f4e886974c6c5cc5ad93dbb2eb1bbc13ca4e47aa1e3b0dff53aac092 | 2 | +oid sha256:4927dc60c9bb87ad75e6c09a5a2814a4a71b3472cab8a5d5dc696e4cb8ef3eed |
| 3 | -size 84130 | 3 | +size 316010 |
| @@ -1,3 +1,3 @@ | |||
| 1 | version https://git-lfs.github.com/spec/v1 | 1 | version https://git-lfs.github.com/spec/v1 |
| 2 | -oid sha256:2b09b9dfada8a3d8255fd57a93e313c5da74ac42721b7daf35227f105c3d9ae2 | 2 | +oid sha256:da87b8c7ab0faf51f0c22c373c7b02eaa5c85e161501f32cea4a9364a0167400 |
| 3 | -size 79880 | 3 | +size 295822 |
| @@ -95,7 +95,7 @@ CANN基于分层架构设计,实现了上层应用与底层硬件的无缝衔 | |||
| 95 | </div> | 95 | </div> |
| 96 | <div style=" margin: 5px 0; padding: 8px; background: #fff; border-left: 3px solid #3b82f6; border-radius: 4px;"> | 96 | <div style=" margin: 5px 0; padding: 8px; background: #fff; border-left: 3px solid #3b82f6; border-radius: 4px;"> |
| 97 | <strong style="color: #1a1a1a;"><a href="../programming_guide/debug_and_tuning/overview.md" style="color: #3b82f6; text-decoration: none;">🔧 调试与调优</a></strong><br/> | 97 | <strong style="color: #1a1a1a;"><a href="../programming_guide/debug_and_tuning/overview.md" style="color: #3b82f6; text-decoration: none;">🔧 调试与调优</a></strong><br/> |
| 98 | -<a href="../programming_guide/debug_and_tuning/functional_debug/cpu_twin_debug.md" style="color: #3b82f6; font-size: 14px;">功能调试</a> <span style="color: #999; font-size: 13px;">(<a href="../programming_guide/debug_and_tuning/functional_debug/cpu_twin_debug.md" style="color: #3b82f6; font-size: 13px;">CPU域孪生调试</a> | <a href="../programming_guide/debug_and_tuning/functional_debug/npu_board_debug.md" style="color: #3b82f6; font-size: 13px;">NPU域孪生调试</a>)</span> | <a href="../programming_guide/debug_and_tuning/performance_tuning.md" style="color: #3b82f6; font-size: 14px;">性能调试</a> | 98 | +<a href="../programming_guide/debug_and_tuning/functional_debug/cpu_twin_debug.md" style="color: #3b82f6; font-size: 14px;">功能调试</a> <span style="color: #999; font-size: 13px;">(<a href="../programming_guide/debug_and_tuning/functional_debug/cpu_twin_debug.md" style="color: #3b82f6; font-size: 13px;">CPU域孪生调试</a> | <a href="../programming_guide/debug_and_tuning/functional_debug/npu_board_debug.md" style="color: #3b82f6; font-size: 13px;">NPU域上板调试</a>)</span> | <a href="../programming_guide/debug_and_tuning/performance_tuning.md" style="color: #3b82f6; font-size: 14px;">性能调试</a> |
| 99 | </div> | 99 | </div> |
| 100 | <div style=" margin: 5px 0; padding: 8px; background: #fff; border-left: 3px solid #3b82f6; border-radius: 4px;"> | 100 | <div style=" margin: 5px 0; padding: 8px; background: #fff; border-left: 3px solid #3b82f6; border-radius: 4px;"> |
| 101 | <strong style="color: #1a1a1a;">📦 算子部署</strong><br/> | 101 | <strong style="color: #1a1a1a;">📦 算子部署</strong><br/> |
Mdocs/zh/guide/programming_guide/advanced_programming/hardware_implementation/basic_architecture.md+2-3
| @@ -189,7 +189,7 @@ AI处理器中的计算资源要想发挥强劲算力,必要条件是保证输 | |||
| 189 | <tr id="row153848520214"><td class="cellrowborder" valign="top" width="30.049999999999997%" headers="mcps1.2.3.1.1 "><p id="p121221999218"><a name="p121221999218"></a><a name="p121221999218"></a>MTE3</p> | 189 | <tr id="row153848520214"><td class="cellrowborder" valign="top" width="30.049999999999997%" headers="mcps1.2.3.1.1 "><p id="p121221999218"><a name="p121221999218"></a><a name="p121221999218"></a>MTE3</p> |
| 190 | </td> | 190 | </td> |
| 191 | <td class="cellrowborder" valign="top" width="69.95%" headers="mcps1.2.3.1.2 "><p id="p1683722417444"><a name="p1683722417444"></a><a name="p1683722417444"></a>负责如下通路的数据搬运:</p> | 191 | <td class="cellrowborder" valign="top" width="69.95%" headers="mcps1.2.3.1.2 "><p id="p1683722417444"><a name="p1683722417444"></a><a name="p1683722417444"></a>负责如下通路的数据搬运:</p> |
| 192 | -<a name="ul43441132124411"></a><a name="ul43441132124411"></a><ul id="ul43441132124411"><li>UB -> GM</li></ul> | 192 | +<a name="ul43441132124411"></a><a name="ul43441132124411"></a><ul id="ul43441132124411"><li>UB -> GM</li><li>L1->GM</li></ul> |
| 193 | </td> | 193 | </td> |
| 194 | </tr> | 194 | </tr> |
| 195 | <tr id="row217791862110"><td class="cellrowborder" valign="top" width="30.049999999999997%" headers="mcps1.2.3.1.1 "><p id="p61776186219"><a name="p61776186219"></a><a name="p61776186219"></a>FixPipe</p> | 195 | <tr id="row217791862110"><td class="cellrowborder" valign="top" width="30.049999999999997%" headers="mcps1.2.3.1.1 "><p id="p61776186219"><a name="p61776186219"></a><a name="p61776186219"></a>FixPipe</p> |
| @@ -216,7 +216,7 @@ AI处理器中的计算资源要想发挥强劲算力,必要条件是保证输 | |||
| 216 | - Cube计算典型的数据流如下: | 216 | - Cube计算典型的数据流如下: |
| 217 | 217 | ||
| 218 | - GM →L1→L0A/L0B →Cube →L0C→FixPipe→GM | 218 | - GM →L1→L0A/L0B →Cube →L0C→FixPipe→GM |
| 219 | - - GM →L1→L0A/L0B →Cube →L0C→FixPipe→L1 | 219 | + - GM →L1→L0A/L0B →Cube →L0C→FixPipe→L1→GM |
| 220 | 220 | ||
| 221 |  | 221 |  |
| 222 | 222 | ||
| @@ -242,4 +242,3 @@ AI处理器中的计算资源要想发挥强劲算力,必要条件是保证输 | |||
| 242 | Ascend C提供同步控制API,开发者可以使用这类API来自行完成同步控制。需要注意的是,通常情况下,开发者基于[编程模型](../../programming_model/programming_model_overview.md)中介绍的编程模型和范式进行编程时不需要关注同步,编程模型帮助开发者完成了同步控制;使用编程模型和范式是我们推荐的编程方式,自行同步控制可能会带来一定的编程复杂度。 | 242 | Ascend C提供同步控制API,开发者可以使用这类API来自行完成同步控制。需要注意的是,通常情况下,开发者基于[编程模型](../../programming_model/programming_model_overview.md)中介绍的编程模型和范式进行编程时不需要关注同步,编程模型帮助开发者完成了同步控制;使用编程模型和范式是我们推荐的编程方式,自行同步控制可能会带来一定的编程复杂度。 |
| 243 | 243 | ||
| 244 | 但是我们仍然希望开发者可以理解同步的基本原理,便于后续更好的理解设计并行计算程序;同时少数情况需要开发者手动插入同步,您可以通过[什么时候需要开发者手动插入同步](../../../../api/SIMD-API/basic_api/sync_control/intra_core_sync/intra_core_sync_overview.md)来了解具体内容。 | 244 | 但是我们仍然希望开发者可以理解同步的基本原理,便于后续更好的理解设计并行计算程序;同时少数情况需要开发者手动插入同步,您可以通过[什么时候需要开发者手动插入同步](../../../../api/SIMD-API/basic_api/sync_control/intra_core_sync/intra_core_sync_overview.md)来了解具体内容。 |
| 245 | - | ||
| @@ -218,7 +218,7 @@ AI Core上的执行单元分别属于不同的执行流水,同步即是保证 | |||
| 218 | | **PIPE_M** | 矩阵计算流水 | | 218 | | **PIPE_M** | 矩阵计算流水 | |
| 219 | | **PIPE_MTE1** | L1 Buffer→L0A Buffer、L1 Buffer→L0B Buffer数据搬运流水 | | 219 | | **PIPE_MTE1** | L1 Buffer→L0A Buffer、L1 Buffer→L0B Buffer数据搬运流水 | |
| 220 | | **PIPE_MTE2** | GM→L1 Buffer、GM→UB等数据搬运流水 | | 220 | | **PIPE_MTE2** | GM→L1 Buffer、GM→UB等数据搬运流水 | |
| 221 | -| **PIPE_MTE3** | UB→GM等数据搬运流水 | | 221 | +| **PIPE_MTE3** | UB→GM、L1 Buffer→GM等数据搬运流水 | |
| 222 | | **PIPE_FIX** | L0C Buffer→GM、L0C Buffer→L1等数据搬运流水 | | 222 | | **PIPE_FIX** | L0C Buffer→GM、L0C Buffer→L1等数据搬运流水 | |
| 223 | 223 | ||
| 224 | 为确保流水线间正确执行,AI Core针对不同应用场景提供了多种同步机制,开发者可根据实际需求灵活选择合适的同步方式来实现算子功能。 | 224 | 为确保流水线间正确执行,AI Core针对不同应用场景提供了多种同步机制,开发者可根据实际需求灵活选择合适的同步方式来实现算子功能。 |
| @@ -253,7 +253,7 @@ AI Core上的执行单元分别属于不同的执行流水,同步即是保证 | |||
| 253 | | **PIPE_M** | 矩阵计算流水 | | 253 | | **PIPE_M** | 矩阵计算流水 | |
| 254 | | **PIPE_MTE1** | L1 Buffer→L0A Buffer、L1 Buffer→L0B Buffer数据搬运流水 | | 254 | | **PIPE_MTE1** | L1 Buffer→L0A Buffer、L1 Buffer→L0B Buffer数据搬运流水 | |
| 255 | | **PIPE_MTE2** | GM→L1 Buffer、GM→UB等数据搬运流水 | | 255 | | **PIPE_MTE2** | GM→L1 Buffer、GM→UB等数据搬运流水 | |
| 256 | -| **PIPE_MTE3** | UB→GM等数据搬运流水 | | 256 | +| **PIPE_MTE3** | UB→GM、L1 Buffer→GM数据搬运流水 | |
| 257 | | **PIPE_FIX** | L0C Buffer→GM、L0C Buffer→L1等数据搬运流水 | | 257 | | **PIPE_FIX** | L0C Buffer→GM、L0C Buffer→L1等数据搬运流水 | |
| 258 | 258 | ||
| 259 | 为确保流水线间正确执行,AI Core针对不同应用场景提供了多种同步机制,开发者可根据实际需求灵活选择合适的同步方式来实现算子功能。 | 259 | 为确保流水线间正确执行,AI Core针对不同应用场景提供了多种同步机制,开发者可根据实际需求灵活选择合适的同步方式来实现算子功能。 |
| @@ -308,7 +308,7 @@ | |||
| 308 | </tr> | 308 | </tr> |
| 309 | <tr id="row112041123578"><td class="cellrowborder" valign="top" width="22.978822978822976%" headers="mcps1.2.3.1.1 "><p id="p183901322511"><a name="p183901322511"></a><a name="p183901322511"></a>MTE3</p> | 309 | <tr id="row112041123578"><td class="cellrowborder" valign="top" width="22.978822978822976%" headers="mcps1.2.3.1.1 "><p id="p183901322511"><a name="p183901322511"></a><a name="p183901322511"></a>MTE3</p> |
| 310 | </td> | 310 | </td> |
| 311 | -<td class="cellrowborder" valign="top" width="77.02117702117702%" headers="mcps1.2.3.1.2 "><p id="p203651128105117"><a name="p203651128105117"></a><a name="p203651128105117"></a>Memory Transfer Engine 3,AI Core的数据传递引擎,负责将数据从UB搬运到Global Memory、L1 Buffer等。注意:不同硬件能力可能有差异。</p> | 311 | +<td class="cellrowborder" valign="top" width="77.02117702117702%" headers="mcps1.2.3.1.2 "><p id="p203651128105117"><a name="p203651128105117"></a><a name="p203651128105117"></a>Memory Transfer Engine 3,AI Core的数据传递引擎,负责将数据从UB搬运到Global Memory、L1 Buffer以及从L1 Buffer搬运到Global Memory等等。注意:不同硬件能力可能有差异。</p> |
| 312 | </td> | 312 | </td> |
| 313 | </tr> | 313 | </tr> |
| 314 | <tr id="row682759181911"><td class="cellrowborder" valign="top" width="22.978822978822976%" headers="mcps1.2.3.1.1 "><p id="p039117217510"><a name="p039117217510"></a><a name="p039117217510"></a>NC1HWC0</p> | 314 | <tr id="row682759181911"><td class="cellrowborder" valign="top" width="22.978822978822976%" headers="mcps1.2.3.1.1 "><p id="p039117217510"><a name="p039117217510"></a><a name="p039117217510"></a>NC1HWC0</p> |