已合并
资料修改L12GM通路&&标题修改 #5030
资料修改L12GM通路&&标题修改 #5030
已合并
treefei创建于 8月11日
共 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_MTE164+PIPE_MTE3
65 65 
66## 约束说明66## 约束说明
67 67 
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:0c3a9b8c0df27b369b774d42beaa8d86d614650098383db5db0c14157e9242662+oid sha256:da87b8c7ab0faf51f0c22c373c7b02eaa5c85e161501f32cea4a9364a0167400
3-size 724633+size 295822
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:175c39433832dcfc47e13958a3d5e689de60487c7f9947a4bfd648baeec17da92+oid sha256:1c3840894085ca05ce83aaa7dd84cb4f0152e0ec74e2f6b7644efcc0e7b46df9
3-size 804083+size 294466
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:853cf5537e960a20a501adb3f90cfb12fa8562b7589fca542aeae73e99bd54482+oid sha256:b6384111bb5fba3881645403255962042f98ddb1a566e7d0bec9a2d609d39ea8
3-size 836743+size 298743
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:dd5c466fa7e2f0e3e224b3f0a3a5cc3c668dc87334791ba04a8783f3b84394a12+oid sha256:4f82791667cfb476175c891e7df35644285181c58b58f0ee942175e4fe727afe
3-size 843173+size 300255
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:9329110035b717a1091f4e8d2ba0e78a3246c30891143a4873110c5ff40038c92+oid sha256:d402979b7d2ad83d6b655c15b869a7c0deb4e7388e1ef23314dd424b97566183
3-size 913693+size 326402
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:483d0cf99080e459e0a2cd0be87675b6714e2fed103b2ce983ce4e6c6aacf6a12+oid sha256:65083e66929f83e36fbd3a999f214ecb12a4722fdf7ec6e9083570ecaac4d2af
3-size 523833+size 204873
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:9329110035b717a1091f4e8d2ba0e78a3246c30891143a4873110c5ff40038c92+oid sha256:d402979b7d2ad83d6b655c15b869a7c0deb4e7388e1ef23314dd424b97566183
3-size 913693+size 326402
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:cd2a02a7f4e886974c6c5cc5ad93dbb2eb1bbc13ca4e47aa1e3b0dff53aac0922+oid sha256:4927dc60c9bb87ad75e6c09a5a2814a4a71b3472cab8a5d5dc696e4cb8ef3eed
3-size 841303+size 316010
@@ -1,3 +1,3 @@
1version https://git-lfs.github.com/spec/v11version https://git-lfs.github.com/spec/v1
2-oid sha256:2b09b9dfada8a3d8255fd57a93e313c5da74ac42721b7daf35227f105c3d9ae22+oid sha256:da87b8c7ab0faf51f0c22c373c7b02eaa5c85e161501f32cea4a9364a0167400
3-size 798803+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/>
@@ -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 -&gt; GM</li></ul>192+<a name="ul43441132124411"></a><a name="ul43441132124411"></a><ul id="ul43441132124411"><li>UB -&gt; GM</li><li>L1-&gt;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→GM218 - GM →L1→L0A/L0B →Cube →L0C→FixPipe→GM
219- - GM →L1→L0A/L0B →Cube →L0C→FixPipe→L1219+ - GM →L1→L0A/L0B →Cube →L0C→FixPipe→L1→GM
220 220 
221 ![](../../../figures/sep_arch_11.png)221 ![](../../../figures/sep_arch_11.png)
222 222 
@@ -242,4 +242,3 @@ AI处理器中的计算资源要想发挥强劲算力,必要条件是保证输
242Ascend C提供同步控制API,开发者可以使用这类API来自行完成同步控制。需要注意的是,通常情况下,开发者基于[编程模型](../../programming_model/programming_model_overview.md)中介绍的编程模型和范式进行编程时不需要关注同步,编程模型帮助开发者完成了同步控制;使用编程模型和范式是我们推荐的编程方式,自行同步控制可能会带来一定的编程复杂度。242Ascend 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>