Merged
统一C API文档格式 #6641
统一C API文档格式 #6641
Merged
GRJ_XIDUOAdd on 28 days ago
Total: 249 files changed+1401-1230
@@ -6,7 +6,7 @@
6 6 
7![](../../../figures/atomic_operation_pipelined_data_movement_effect.png "数据搬运随路原子累加效果")7![](../../../figures/atomic_operation_pipelined_data_movement_effect.png "数据搬运随路原子累加效果")
8 8 
9-**表1** 数据搬运随路原子操作接口<a id="datamove_atomic_operation_interface"></a>9+**表1** 数据搬运随路原子操作接口<a id="datamove_atomic_operation_interface"></a>
10 10 
11| 对应接口 | 接口功能描述 |11| 对应接口 | 接口功能描述 |
12| --- | --- |12| --- | --- |
@@ -28,7 +28,7 @@ Scalar原子操作接口,能够在指定GM地址上进行单点原子计算操
28 28 
29![](../../../figures/scalar_atomic_operation_diagram.png "标量原子累加效果")29![](../../../figures/scalar_atomic_operation_diagram.png "标量原子累加效果")
30 30 
31-**表2** Scalar原子操作接口<a id="scalar_atomic_operation_interface"></a>31+**表2** Scalar原子操作接口<a id="scalar_atomic_operation_interface"></a>
32 32 
33| 对应接口 | 接口功能描述 |33| 对应接口 | 接口功能描述 |
34| --- | --- |34| --- | --- |
@@ -126,7 +126,7 @@ if (block_idx == 0) {
126 126 
127搬运指令和开启原子操作的指令流水类型如下表所示,当上述指令在同一个核内执行时,开发者按需插入[asc_sync_pipe](../sync/intra_core_sync/asc_sync_pipe.md)或者[asc_sync_notify](../sync/intra_core_sync/asc_sync_notify.md)与[asc_sync_wait](../sync/intra_core_sync/asc_sync_wait.md)。127搬运指令和开启原子操作的指令流水类型如下表所示,当上述指令在同一个核内执行时,开发者按需插入[asc_sync_pipe](../sync/intra_core_sync/asc_sync_pipe.md)或者[asc_sync_notify](../sync/intra_core_sync/asc_sync_notify.md)与[asc_sync_wait](../sync/intra_core_sync/asc_sync_wait.md)。
128 128 
129-**表1** 原子操作确定性计算相关指令的流水类型129+**表1** 原子操作确定性计算相关指令的流水类型
130 130 
131| 指令名称 | 流水类型 |131| 指令名称 | 流水类型 |
132| --- | --- |132| --- | --- |
@@ -39,7 +39,7 @@ __aicore__ inline <dtype> asc_atomic_add(__gm__ <dtype>* address,
39 39 
40### dtype支持数据类型40### dtype支持数据类型
41 41 
42-dtype支持的数据类型为`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。42+`dtype`取值为:`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。
43 43 
44### 函数原型典型示例44### 函数原型典型示例
45 45 
@@ -39,7 +39,7 @@ __aicore__ inline <dtype> asc_atomic_and(__gm__ <dtype>* address,
39 39 
40### dtype支持数据类型40### dtype支持数据类型
41 41 
42-dtype支持的数据类型为`int32_t`、`uint32_t`、`int64_t`、`uint64_t`。42+`dtype`取值为:`int32_t`、`uint32_t`、`int64_t`、`uint64_t`。
43 43 
44### 函数原型典型示例44### 函数原型典型示例
45 45 
@@ -46,7 +46,7 @@ __aicore__ inline <dtype> asc_atomic_cas(__gm__ <dtype>* address,
46 46 
47### dtype支持数据类型47### dtype支持数据类型
48 48 
49-dtype支持的数据类型为`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。49+`dtype`取值为:`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。
50 50 
51### 函数原型典型示例51### 函数原型典型示例
52 52 
@@ -45,7 +45,7 @@ __aicore__ inline <dtype> asc_atomic_dec(__gm__ <dtype>* address,
45 45 
46### dtype支持数据类型46### dtype支持数据类型
47 47 
48-dtype支持的数据类型为`uint32_t`、`uint64_t`。48+`dtype`取值为:`uint32_t`、`uint64_t`。
49 49 
50### 函数原型典型示例50### 函数原型典型示例
51 51 
@@ -39,7 +39,7 @@ __aicore__ inline <dtype> asc_atomic_exch(__gm__ <dtype>* address,
39 39 
40### dtype支持数据类型40### dtype支持数据类型
41 41 
42-dtype支持的数据类型为`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。42+`dtype`取值为:`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。
43 43 
44### 函数原型典型示例44### 函数原型典型示例
45 45 
@@ -45,7 +45,7 @@ __aicore__ inline <dtype> asc_atomic_inc(__gm__ <dtype>* address,
45 45 
46### dtype支持数据类型46### dtype支持数据类型
47 47 
48-dtype支持的数据类型为`uint32_t`、`uint64_t`。48+`dtype`取值为:`uint32_t`、`uint64_t`。
49 49 
50### 函数原型典型示例50### 函数原型典型示例
51 51 
@@ -8,7 +8,7 @@
8 8 
9标量原子操作接口如表1所示,各接口支持的数据类型如表2所示。其中`old_value`为`address`指向的GM地址上的旧值,`new_value`为写回该地址的新值,表1中的原子计算接口均返回`old_value`。9标量原子操作接口如表1所示,各接口支持的数据类型如表2所示。其中`old_value`为`address`指向的GM地址上的旧值,`new_value`为写回该地址的新值,表1中的原子计算接口均返回`old_value`。
10 10 
11-**表1** 标量原子操作接口11+**表1** 标量原子操作接口
12 12 
13| 对应接口 | 接口功能描述 | 计算公式 |13| 对应接口 | 接口功能描述 | 计算公式 |
14| --- | --- | --- |14| --- | --- | --- |
@@ -32,7 +32,7 @@
32- [asc_set_store_atomic_config_v1](asc_set_store_atomic_config_v1.md):仅Atlas A2系列产品、Atlas A3系列产品支持,Ascend 950PR&950DT系列产品不支持,在Ascend 950PR&950DT系列产品可使用[asc_atomic_add](asc_atomic_add.md)实现原子累加。32- [asc_set_store_atomic_config_v1](asc_set_store_atomic_config_v1.md):仅Atlas A2系列产品、Atlas A3系列产品支持,Ascend 950PR&950DT系列产品不支持,在Ascend 950PR&950DT系列产品可使用[asc_atomic_add](asc_atomic_add.md)实现原子累加。
33- [asc_get_store_atomic_config](asc_get_store_atomic_config.md):Atlas A2系列产品、Atlas A3系列产品、Ascend 950PR&950DT系列产品均支持,但在Ascend 950PR&950DT系列产品上已废弃,该系列产品可直接使用[asc_atomic_add](asc_atomic_add.md)实现原子累加。33- [asc_get_store_atomic_config](asc_get_store_atomic_config.md):Atlas A2系列产品、Atlas A3系列产品、Ascend 950PR&950DT系列产品均支持,但在Ascend 950PR&950DT系列产品上已废弃,该系列产品可直接使用[asc_atomic_add](asc_atomic_add.md)实现原子累加。
34 34 
35-**表2** 标量原子操作接口支持的数据类型35+**表2** 标量原子操作接口支持的数据类型
36 36 
37| 对应接口 | `dtype`支持的数据类型 |37| 对应接口 | `dtype`支持的数据类型 |
38| --- | --- |38| --- | --- |
@@ -18,7 +18,7 @@ Cache(缓存)的主要作用是在搬运单元或Scalar单元与外部存储
18![](../../../figures/atlas_a2_a3_cache_architecture_diagram.png "atlas_a2_a3_cache_architecture_diagram")18![](../../../figures/atlas_a2_a3_cache_architecture_diagram.png "atlas_a2_a3_cache_architecture_diagram")
19<!-- end id2 -->19<!-- end id2 -->
20 20 
21-**表1** Cache类型及功能说明<a name="table_cache_type"></a>21+**表1** Cache类型及功能说明<a name="table_cache_type"></a>
22 22 
23| Cache类型 | 说明 |23| Cache类型 | 说明 |
24|------------|------|24|------------|------|
@@ -34,7 +34,7 @@ Cache(缓存)的主要作用是在搬运单元或Scalar单元与外部存储
34 34 
35表2介绍了缓存的四种基础操作及其核心功能。35表2介绍了缓存的四种基础操作及其核心功能。
36 36 
37-**表2** Cache操作及功能说明37+**表2** Cache操作及功能说明
38 38 
39| 操作名称 | 功能说明 |39| 操作名称 | 功能说明 |
40|---------|---------|40|---------|---------|
@@ -95,7 +95,7 @@ Cache一致性是多核中确保数据正确性的核心机制。简单来说,
95 95 
96表3按照Cache类型(L2 Cache、DCache、ICache、NDDMA Cache)汇总了与缓存控制相关的接口及其功能说明。96表3按照Cache类型(L2 Cache、DCache、ICache、NDDMA Cache)汇总了与缓存控制相关的接口及其功能说明。
97 97 
98-**表3** 缓存控制接口汇总98+**表3** 缓存控制接口汇总
99 99 
100| Cache类型 | 接口名称 | 功能简述 |100| Cache类型 | 接口名称 | 功能简述 |
101|-----------|---------|---------|101|-----------|---------|---------|
@@ -98,7 +98,7 @@ __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix,
98 bool disable_gemv)98 bool disable_gemv)
99```99```
100 100 
101-**dtype支持的数据类型:**101+#### dtype支持数据类型
102 102 
103`c_dtype`、`a_dtype`、`b_dtype`的取值组合见下表:103`c_dtype`、`a_dtype`、`b_dtype`的取值组合见下表:
104 104 
@@ -116,7 +116,7 @@ __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix,
116| `bfloat16_t` | `bfloat16_t` | `float` | `float` |116| `bfloat16_t` | `bfloat16_t` | `float` | `float` |
117| `float` | `float` | `float` | `float` |117| `float` | `float` | `float` | `float` |
118 118 
119-**典型示例:**119+#### 函数原型典型示例
120 120 
121```c121```c
122// 不显式传入Bias起始地址122// 不显式传入Bias起始地址
@@ -151,25 +151,60 @@ __aicore__ inline void asc_mmad(__cc__ float* c_matrix,
151 151 
152 ```c152 ```c
153 // 占位符形式153 // 占位符形式
154- __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix, __ca__ <a_dtype>* a_matrix, __cb__ <b_dtype>* b_matrix, uint16_t m, uint16_t k, uint16_t n, asc_unit_flag_mode unit_flag_mode, bool k_direction_align, bool c_matrix_source, bool c_matrix_init_val)154+ __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix,
155+ __ca__ <a_dtype>* a_matrix,
156+ __cb__ <b_dtype>* b_matrix,
157+ uint16_t m,
158+ uint16_t k,
159+ uint16_t n,
160+ asc_unit_flag_mode unit_flag_mode,
161+ bool k_direction_align,
162+ bool c_matrix_source,
163+ bool c_matrix_init_val)
155 ```164 ```
156 165 
157- `c_dtype`、`a_dtype`、`b_dtype`的取值组合见下表:166+#### dtype支持数据类型
158 167 
159- **表** 支持的数据类型组合([NPU架构版本2201](../../../../../guide/programming_guide/language_extension/simd_builtin_keywords.md))168+`c_dtype`、`a_dtype`、`b_dtype`的取值组合见下表:
160 169 
161- | a_dtype | b_dtype | c_dtype | Bias数据类型 |170+**表** 支持的数据类型组合([NPU架构版本2201](../../../../../guide/programming_guide/language_extension/simd_builtin_keywords.md))
162- | --- | --- | --- | --- |171+ 
163- | `int8_t` | `int8_t` | `int32_t` | `int32_t` |172+| a_dtype | b_dtype | c_dtype | Bias数据类型 |
164- | `half` | `half` | `float` | `float` |173+| --- | --- | --- | --- |
165- | `bfloat16_t` | `bfloat16_t` | `float` | `float` |174+| `int8_t` | `int8_t` | `int32_t` | `int32_t` |
166- | `float` | `float` | `float` | `float` |175+| `half` | `half` | `float` | `float` |
176+| `bfloat16_t` | `bfloat16_t` | `float` | `float` |
177+| `float` | `float` | `float` | `float` |
167 178 
168- asc_mmad_s4接口,当输入矩阵数据类型为`int4b_t`时调用此类接口:179- asc_mmad_s4接口,当输入矩阵数据类型为`int4b_t`时调用此类接口:
169 180 
170 ```c181 ```c
171- __aicore__ inline void asc_mmad_s4(__cc__ int32_t* c_matrix, __ca__ int4b_t* a_matrix, __cb__ int4b_t* b_matrix, uint16_t m, uint16_t k, uint16_t n, asc_unit_flag_mode unit_flag_mode, bool k_direction_align, bool c_matrix_source, bool c_matrix_init_val)182+ __aicore__ inline void asc_mmad_s4(__cc__ int32_t* c_matrix,
183+ __ca__ int4b_t* a_matrix,
184+ __cb__ int4b_t* b_matrix,
185+ uint16_t m,
186+ uint16_t k,
187+ uint16_t n,
188+ asc_unit_flag_mode unit_flag_mode,
189+ bool k_direction_align,
190+ bool c_matrix_source,
191+ bool c_matrix_init_val)
172 ```192 ```
193+ 
194+#### 函数原型典型示例
195+ 
196+```c
197+__aicore__ inline void asc_mmad(__cc__ float* c_matrix,
198+ __ca__ bfloat16_t* a_matrix,
199+ __cb__ bfloat16_t* b_matrix,
200+ uint16_t m,
201+ uint16_t k,
202+ uint16_t n,
203+ asc_unit_flag_mode unit_flag_mode,
204+ bool k_direction_align,
205+ bool c_matrix_source,
206+ bool c_matrix_init_val)
207+```
173<!-- end id13 -->208<!-- end id13 -->
174 209 
175## 参数说明210## 参数说明
@@ -60,29 +60,29 @@ $$
60```c60```c
61// 不显式传入Bias起始地址,通过参数控制C矩阵初始化方式(占位符形式)61// 不显式传入Bias起始地址,通过参数控制C矩阵初始化方式(占位符形式)
62__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,62__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,
63- __ca__ <a_dtype>* a_matrix,63+ __ca__ <a_dtype>* a_matrix,
64- __cb__ <b_dtype>* b_matrix,64+ __cb__ <b_dtype>* b_matrix,
65- uint16_t m,65+ uint16_t m,
66- uint16_t k,66+ uint16_t k,
67- uint16_t n,67+ uint16_t n,
68- asc_unit_flag_mode unit_flag_mode,68+ asc_unit_flag_mode unit_flag_mode,
69- bool disable_gemv,69+ bool disable_gemv,
70- bool c_matrix_source,70+ bool c_matrix_source,
71- bool c_matrix_init_val)71+ bool c_matrix_init_val)
72 72 
73// 显式传入Bias起始地址,C矩阵使用Bias矩阵初始化(占位符形式)73// 显式传入Bias起始地址,C矩阵使用Bias矩阵初始化(占位符形式)
74__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,74__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,
75- __ca__ <a_dtype>* a_matrix,75+ __ca__ <a_dtype>* a_matrix,
76- __cb__ <b_dtype>* b_matrix,76+ __cb__ <b_dtype>* b_matrix,
77- uint64_t bias,77+ uint64_t bias,
78- uint16_t m,78+ uint16_t m,
79- uint16_t k,79+ uint16_t k,
80- uint16_t n,80+ uint16_t n,
81- asc_unit_flag_mode unit_flag_mode,81+ asc_unit_flag_mode unit_flag_mode,
82- bool disable_gemv)82+ bool disable_gemv)
83```83```
84 84 
85-**dtype支持的数据类型:**85+### dtype支持数据类型
86 86 
87`a_dtype`、`b_dtype`的取值组合见下表:87`a_dtype`、`b_dtype`的取值组合见下表:
88 88 
@@ -99,31 +99,31 @@ __aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,
99| `fp8_e5m2_t` | `fp8_e4m3fn_t` | `fp8_e8m0_t` | `float` | `float` |99| `fp8_e5m2_t` | `fp8_e4m3fn_t` | `fp8_e8m0_t` | `float` | `float` |
100| `fp8_e5m2_t` | `fp8_e5m2_t` | `fp8_e8m0_t` | `float` | `float` |100| `fp8_e5m2_t` | `fp8_e5m2_t` | `fp8_e8m0_t` | `float` | `float` |
101 101 
102-**典型示例:**102+### 函数原型典型示例
103 103 
104```c104```c
105// 不显式传入Bias起始地址105// 不显式传入Bias起始地址
106__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,106__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,
107- __ca__ fp4x2_e1m2_t* a_matrix,107+ __ca__ fp4x2_e1m2_t* a_matrix,
108- __cb__ fp4x2_e2m1_t* b_matrix,108+ __cb__ fp4x2_e2m1_t* b_matrix,
109- uint16_t m,109+ uint16_t m,
110- uint16_t k,110+ uint16_t k,
111- uint16_t n,111+ uint16_t n,
112- asc_unit_flag_mode unit_flag_mode,112+ asc_unit_flag_mode unit_flag_mode,
113- bool disable_gemv,113+ bool disable_gemv,
114- bool c_matrix_source,114+ bool c_matrix_source,
115- bool c_matrix_init_val)115+ bool c_matrix_init_val)
116 116 
117// 显式传入Bias起始地址117// 显式传入Bias起始地址
118__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,118__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,
119- __ca__ fp4x2_e1m2_t* a_matrix,119+ __ca__ fp4x2_e1m2_t* a_matrix,
120- __cb__ fp4x2_e2m1_t* b_matrix,120+ __cb__ fp4x2_e2m1_t* b_matrix,
121- uint64_t bias,121+ uint64_t bias,
122- uint16_t m,122+ uint16_t m,
123- uint16_t k,123+ uint16_t k,
124- uint16_t n,124+ uint16_t n,
125- asc_unit_flag_mode unit_flag_mode,125+ asc_unit_flag_mode unit_flag_mode,
126- bool disable_gemv)126+ bool disable_gemv)
127```127```
128 128 
129## 参数说明129## 参数说明
@@ -38,7 +38,6 @@
38__aicore__ inline void asc_mmad_sparse(__cc__ int32_t* c, __ca__ int8_t* a, __cb__ int8_t* b, uint16_t m, uint16_t k, uint16_t n, asc_unit_flag_mode unit_flag_mode, bool c_matrix_source, bool c_matrix_init_val)38__aicore__ inline void asc_mmad_sparse(__cc__ int32_t* c, __ca__ int8_t* a, __cb__ int8_t* b, uint16_t m, uint16_t k, uint16_t n, asc_unit_flag_mode unit_flag_mode, bool c_matrix_source, bool c_matrix_init_val)
39```39```
40 40 
41- 
42## 参数说明41## 参数说明
43 42 
44**表1** 参数说明43**表1** 参数说明
@@ -55,7 +54,6 @@ __aicore__ inline void asc_mmad_sparse(__cc__ int32_t* c, __ca__ int8_t* a, __cb
55| c_matrix_source | 输入 | 配置C矩阵初始值是否来源于BiasTable Buffer(存放Bias的硬件缓存区)。取值说明如下: <br>&bull; true:来源于BiasTable Buffer。 <br>&bull; false:来源于L0C Buffer。 |54| c_matrix_source | 输入 | 配置C矩阵初始值是否来源于BiasTable Buffer(存放Bias的硬件缓存区)。取值说明如下: <br>&bull; true:来源于BiasTable Buffer。 <br>&bull; false:来源于L0C Buffer。 |
56| c_matrix_init_val | 输入 | 配置C矩阵初始值是否为0。取值说明如下: <br>&bull; true:C矩阵初始值为0。 <br>&bull; false:C矩阵初始值通过c_matrix_source参数进行配置。 | 55| c_matrix_init_val | 输入 | 配置C矩阵初始值是否为0。取值说明如下: <br>&bull; true:C矩阵初始值为0。 <br>&bull; false:C矩阵初始值通过c_matrix_source参数进行配置。 |
57 56 
58- 
59## 返回值说明57## 返回值说明
60 58 
61无59无
@@ -36,8 +36,6 @@
36 36 
37## 函数原型37## 函数原型
38 38 
39-### 模板原型
40- 
41```cpp39```cpp
42// 占位符形式40// 占位符形式
43__aicore__ inline void asc_copy_gm2l1(__cbuf__ <dtype>* dst,41__aicore__ inline void asc_copy_gm2l1(__cbuf__ <dtype>* dst,
@@ -45,14 +43,14 @@ __aicore__ inline void asc_copy_gm2l1(__cbuf__ <dtype>* dst,
45 uint32_t m_start_position,43 uint32_t m_start_position,
46 uint32_t k_start_position,44 uint32_t k_start_position,
47 uint16_t dst_stride,45 uint16_t dst_stride,
48- uint16_t m_step,46+ uint16_t m_step,
49- uint16_t k_step,47+ uint16_t k_step,
50- asc_load_l2_cache_mode l2_cache_mode)48+ asc_load_l2_cache_mode l2_cache_mode)
51```49```
52 50 
53-### dtype支持的数据类型51+### dtype支持数据类型
54 52 
55-dtype支持的数据类型为`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`void`。53+`dtype`取值为:`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`void`。
56 54 
57### 函数原型典型示例55### 函数原型典型示例
58 56 
@@ -63,9 +61,9 @@ __aicore__ inline void asc_copy_gm2l1(__cbuf__ bfloat16_t* dst,
63 uint32_t m_start_position,61 uint32_t m_start_position,
64 uint32_t k_start_position,62 uint32_t k_start_position,
65 uint16_t dst_stride,63 uint16_t dst_stride,
66- uint16_t m_step,64+ uint16_t m_step,
67- uint16_t k_step,65+ uint16_t k_step,
68- asc_load_l2_cache_mode l2_cache_mode)66+ asc_load_l2_cache_mode l2_cache_mode)
69```67```
70 68 
71## 参数说明69## 参数说明
@@ -70,19 +70,19 @@
70// 占位符形式70// 占位符形式
71__aicore__ inline void asc_copy_gm2l1_align(__cbuf__ <dtype>* dst,71__aicore__ inline void asc_copy_gm2l1_align(__cbuf__ <dtype>* dst,
72 __gm__ <dtype>* src,72 __gm__ <dtype>* src,
73- uint32_t burst_count,73+ uint32_t burst_count,
74- uint32_t burst_len,74+ uint32_t burst_len,
75 uint8_t left_padding_count,75 uint8_t left_padding_count,
76 uint8_t right_padding_count,76 uint8_t right_padding_count,
77- bool enable_data_select,77+ bool enable_data_select,
78- asc_load_l2_cache_mode l2_cache_mode,78+ asc_load_l2_cache_mode l2_cache_mode,
79- uint64_t src_stride,79+ uint64_t src_stride,
80- uint32_t dst_stride)80+ uint32_t dst_stride)
81```81```
82 82 
83-### dtype支持的数据类型83+### dtype支持数据类型
84 84 
85-dtype取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。85+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
86 86 
87### 函数原型典型示例87### 函数原型典型示例
88 88 
@@ -90,14 +90,14 @@ dtype取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`int16_t`、`uint16_t`、
90// 示例:int8_t类型的搬运90// 示例:int8_t类型的搬运
91__aicore__ inline void asc_copy_gm2l1_align(__cbuf__ int8_t* dst,91__aicore__ inline void asc_copy_gm2l1_align(__cbuf__ int8_t* dst,
92 __gm__ int8_t* src,92 __gm__ int8_t* src,
93- uint32_t burst_count,93+ uint32_t burst_count,
94- uint32_t burst_len,94+ uint32_t burst_len,
95 uint8_t left_padding_count,95 uint8_t left_padding_count,
96 uint8_t right_padding_count,96 uint8_t right_padding_count,
97- bool enable_data_select,97+ bool enable_data_select,
98- asc_load_l2_cache_mode l2_cache_mode,98+ asc_load_l2_cache_mode l2_cache_mode,
99- uint64_t src_stride,99+ uint64_t src_stride,
100- uint32_t dst_stride)100+ uint32_t dst_stride)
101```101```
102 102 
103## 参数说明103## 参数说明
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/cube_compute_load/asc_copy_gm2l1_dn2nz.md+10-12File content is under review, please try again later
@@ -47,17 +47,17 @@
47```cpp47```cpp
48__aicore__ inline void asc_copy_gm2l1_nd2nz(__cbuf__ <dtype>* dst,48__aicore__ inline void asc_copy_gm2l1_nd2nz(__cbuf__ <dtype>* dst,
49 __gm__ <dtype>* src,49 __gm__ <dtype>* src,
50- uint64_t src_d_value,50+ uint64_t src_d_value,
51- asc_load_l2_cache_mode l2_cache_mode,51+ asc_load_l2_cache_mode l2_cache_mode,
52- uint16_t n_value,52+ uint16_t n_value,
53- uint32_t d_value,53+ uint32_t d_value,
54- uint64_t src_nd_matrix_stride,54+ uint64_t src_nd_matrix_stride,
55- bool enable_small_c0)55+ bool enable_small_c0)
56```56```
57 57 
58-### dtype支持的数据类型58+### dtype支持数据类型
59 59 
60-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。60+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
61 61 
62### 函数原型典型示例62### 函数原型典型示例
63 63 
@@ -65,12 +65,12 @@ dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`
65// 示例:half类型的ND到Nz格式搬运。65// 示例:half类型的ND到Nz格式搬运。
66__aicore__ inline void asc_copy_gm2l1_nd2nz(__cbuf__ half* dst,66__aicore__ inline void asc_copy_gm2l1_nd2nz(__cbuf__ half* dst,
67 __gm__ half* src,67 __gm__ half* src,
68- uint64_t src_d_value,68+ uint64_t src_d_value,
69- asc_load_l2_cache_mode l2_cache_mode,69+ asc_load_l2_cache_mode l2_cache_mode,
70- uint16_t n_value,70+ uint16_t n_value,
71- uint32_t d_value,71+ uint32_t d_value,
72- uint64_t src_nd_matrix_stride,72+ uint64_t src_nd_matrix_stride,
73- bool enable_small_c0)73+ bool enable_small_c0)
74```74```
75 75 
76## 参数说明76## 参数说明
@@ -144,8 +144,6 @@ repeatMode =1的时候filter窗口中读取数据的位置保持不变,每个r
144 144 
145![ ](../../figures/load3d_05.png)145![ ](../../figures/load3d_05.png)
146 146 
147- 
148- 
149## 调用示例147## 调用示例
150 148 
151```cpp149```cpp
@@ -60,9 +60,9 @@ __aicore__ inline void asc_copy_l12l0b(__cb__ <dtype>* dst,
60 uint16_t channel_size)60 uint16_t channel_size)
61```61```
62 62 
63-### dtype支持的数据类型63+### dtype支持数据类型
64 64 
65-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。65+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
66 66 
67### 函数原型典型示例67### 函数原型典型示例
68 68 
@@ -141,8 +141,6 @@ repeatMode =1的时候filter窗口中读取数据的位置保持不变,每个r
141 141 
142![ ](../../figures/load3d_05.png)142![ ](../../figures/load3d_05.png)
143 143 
144- 
145- 
146## 调用示例144## 调用示例
147 145 
148```cpp146```cpp
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/cube_compute_load/asc_copy_l12l0b_mx.md+1-1File content is under review, please try again later
@@ -106,8 +106,6 @@ __aicore__ inline void asc_copy_l12l0b_trans(__cb__ float* dst, __cbuf__ float*
106| enable_addr_decrement | 输入| 控制地址更新方式。<br>false: 递增,每次迭代在前一个地址的基础上加上src_stride。<br>true: 递减,每次迭代在前一个地址的基础上减去src_stride。 |106| enable_addr_decrement | 输入| 控制地址更新方式。<br>false: 递增,每次迭代在前一个地址的基础上加上src_stride。<br>true: 递减,每次迭代在前一个地址的基础上减去src_stride。 |
107| dst_frac_gap | 输入 | 每个迭代内目的操作数转置前一个分形结束地址与后一个分形起始地址的间隔,单位为512B,仅在数据类型为float/int32_t/uint32_t/uint8_t/int8_t时有效。|107| dst_frac_gap | 输入 | 每个迭代内目的操作数转置前一个分形结束地址与后一个分形起始地址的间隔,单位为512B,仅在数据类型为float/int32_t/uint32_t/uint8_t/int8_t时有效。|
108 108 
109- 
110- 
111## 返回值说明109## 返回值说明
112 110 
113无111无
@@ -79,7 +79,7 @@
79 - src_stride = 1,表示相邻迭代间,源操作数前一个方块矩阵与后一个方块矩阵起始地址的间隔为1(单位:64\*64\*0.5B),这里的单位实际上是拼接后的方块矩阵的大小;79 - src_stride = 1,表示相邻迭代间,源操作数前一个方块矩阵与后一个方块矩阵起始地址的间隔为1(单位:64\*64\*0.5B),这里的单位实际上是拼接后的方块矩阵的大小;
80 - dst_gap = 1,表示相邻迭代间,目的操作数前一个迭代第一个分形的结束地址到下一个迭代第一个分形起始地址的间隔为1(单位:512B);80 - dst_gap = 1,表示相邻迭代间,目的操作数前一个迭代第一个分形的结束地址到下一个迭代第一个分形起始地址的间隔为1(单位:512B);
81 - dst_frac_gap = 0,表示每个迭代内目的操作数前一个分形的结束地址与后一个分形起始地址的间隔为0(单位:512B)。81 - dst_frac_gap = 0,表示每个迭代内目的操作数前一个分形的结束地址与后一个分形起始地址的间隔为0(单位:512B)。
82- 82+ 
83 ![](../../figures/asc_copy_l12l0_trans_b4_example1.png)83 ![](../../figures/asc_copy_l12l0_trans_b4_example1.png)
84 84 
85 如下图示例:85 如下图示例:
@@ -108,9 +108,9 @@ __aicore__ inline void asc_copy_l12l0b_trans(__cb__ <dtype>* dst,
108 uint16_t src_frac_gap)108 uint16_t src_frac_gap)
109```109```
110 110 
111-### dtype支持的数据类型111+### dtype支持数据类型
112 112 
113-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。113+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
114 114 
115### 函数原型典型示例115### 函数原型典型示例
116 116 
@@ -55,7 +55,6 @@
55 55 
56## 参数说明56## 参数说明
57 57 
58- 
59**表1** 参数说明58**表1** 参数说明
60 59 
61| 参数名 | 输入/输出 | 描述 |60| 参数名 | 输入/输出 | 描述 |
@@ -63,7 +63,6 @@ Scalar量化参数通过[asc_set_l0c_copy_prequant(uint64_t config)](../cube_sto
63 63 
64## 参数说明64## 参数说明
65 65 
66- 
67**表1** 参数说明66**表1** 参数说明
68 67 
69| 参数名 | 输入/输出 | 描述 |68| 参数名 | 输入/输出 | 描述 |
@@ -80,8 +80,6 @@
80 80 
81## 函数原型81## 函数原型
82 82 
83-### 模板原型
84- 
85```cpp83```cpp
86// 占位符形式84// 占位符形式
87__aicore__ inline void asc_copy_l0c2ub(__ubuf__ <dst_dtype>* dst,85__aicore__ inline void asc_copy_l0c2ub(__ubuf__ <dst_dtype>* dst,
@@ -101,7 +99,7 @@ __aicore__ inline void asc_copy_l0c2ub(__ubuf__ <dst_dtype>* dst,
101 bool enable_clip_relu_pre)99 bool enable_clip_relu_pre)
102```100```
103 101 
104-### dtype支持的数据类型102+### dtype支持数据类型
105 103 
106src dtype与dst dtype支持以下组合:104src dtype与dst dtype支持以下组合:
107 105 
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/cube_compute_store/asc_copy_l12gm.md+0-1File content is under review, please try again later
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/cube_load_aux_config/asc_fill_l1.md+1-1File content is under review, please try again later
@@ -105,7 +105,6 @@ bisheng example.asc -o main --npu-arch=dav-3510 && ./main
105 105 
106示例中每次搬运一个16×16的`half`类型ND矩阵。目的Nz矩阵的相邻行起始地址偏移为1个32B块,相邻Z矩阵起始地址偏移为16个32B块;由于每次只搬运一个矩阵,相邻Nz矩阵起始地址偏移配置为0。106示例中每次搬运一个16×16的`half`类型ND矩阵。目的Nz矩阵的相邻行起始地址偏移为1个32B块,相邻Z矩阵起始地址偏移为16个32B块;由于每次只搬运一个矩阵,相邻Nz矩阵起始地址偏移配置为0。
107 107 
108- 
109```cpp108```cpp
110#include <cstdint>109#include <cstdint>
111#include <iostream>110#include <iostream>
@@ -39,9 +39,9 @@ __aicore__ inline void asc_set_gm2l1_padding(<dtype> padding_value)
39__aicore__ inline void asc_set_gm2l1_padding(uint64_t config)39__aicore__ inline void asc_set_gm2l1_padding(uint64_t config)
40```40```
41 41 
42-### dtype支持的数据类型42+### dtype支持数据类型
43 43 
44-dtype支持的数据类型为`int8_t`、`uint8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。44+`dtype`取值为:`int8_t`、`uint8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
45 45 
46### 函数原型典型示例46### 函数原型典型示例
47 47 
@@ -39,9 +39,9 @@ __aicore__ inline void asc_set_l12l0a_3d_padding(<dtype> padding_value)
39__aicore__ inline void asc_set_l12l0a_3d_padding(uint64_t config)39__aicore__ inline void asc_set_l12l0a_3d_padding(uint64_t config)
40```40```
41 41 
42-### dtype支持的数据类型42+### dtype支持数据类型
43 43 
44-dtype支持的数据类型为`int8_t`、`uint8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。44+`dtype`取值为:`int8_t`、`uint8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
45 45 
46### 函数原型典型示例46### 函数原型典型示例
47 47 
@@ -39,9 +39,9 @@ __aicore__ inline void asc_set_l12l0b_3d_padding(<dtype> padding_value)
39__aicore__ inline void asc_set_l12l0b_3d_padding(uint64_t config)39__aicore__ inline void asc_set_l12l0b_3d_padding(uint64_t config)
40```40```
41 41 
42-### dtype支持的数据类型42+### dtype支持数据类型
43 43 
44-dtype支持的数据类型为`int8_t`、`uint8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。44+`dtype`取值为:`int8_t`、`uint8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
45 45 
46### 函数原型典型示例46### 函数原型典型示例
47 47 
@@ -59,8 +59,6 @@ PIPE_S
59- 如果asc_copy_l12l0a/asc_copy_l12l0b的3D格式搬运接口的源操作数在L1 Buffer上的地址超出设置的边界值(value),则会从L1 Buffer起始地址开始读取数据。59- 如果asc_copy_l12l0a/asc_copy_l12l0b的3D格式搬运接口的源操作数在L1 Buffer上的地址超出设置的边界值(value),则会从L1 Buffer起始地址开始读取数据。
60- 操作数地址对齐约束请参考[存储单元说明](../../general_description_and_constraints.md#存储单元说明)。60- 操作数地址对齐约束请参考[存储单元说明](../../general_description_and_constraints.md#存储单元说明)。
61 61 
62- 
63- 
64## 调用示例62## 调用示例
65 63 
66```cpp64```cpp
@@ -38,8 +38,8 @@
38 38 
39```c39```c
40__aicore__ inline void asc_set_l0c_copy_nz_para(uint16_t matrix_num,40__aicore__ inline void asc_set_l0c_copy_nz_para(uint16_t matrix_num,
41- uint16_t src_nz_matrix_stride,41+ uint16_t src_nz_matrix_stride,
42- uint32_t dst_matrix_stride)42+ uint32_t dst_matrix_stride)
43```43```
44 44 
45## 参数说明45## 参数说明
@@ -43,7 +43,6 @@ Ascend 950PR&950DT系列产品使用[asc_set_l0c_copy_nz_para](asc_set_l0c_copy_
43__aicore__ inline void asc_set_l0c_copy_params(uint16_t nd_num, uint16_t src_nd_stride, uint16_t dst_nd_stride)43__aicore__ inline void asc_set_l0c_copy_params(uint16_t nd_num, uint16_t src_nd_stride, uint16_t dst_nd_stride)
44```44```
45 45 
46- 
47## 参数说明46## 参数说明
48 47 
49**表1** 参数说明48**表1** 参数说明
@@ -54,9 +53,6 @@ __aicore__ inline void asc_set_l0c_copy_params(uint16_t nd_num, uint16_t src_nd_
54| src_nd_stride | 输入 | 以分形大小为单位的源步长,源相邻nz矩阵的起始地址间的偏移。<br> src_nd_stride∈[1, 512],单位:fractal_size 1024B。|53| src_nd_stride | 输入 | 以分形大小为单位的源步长,源相邻nz矩阵的起始地址间的偏移。<br> src_nd_stride∈[1, 512],单位:fractal_size 1024B。|
55| dst_nd_stride | 输入 | 目的相邻ND矩阵的起始地址间的偏移。单位为元素。 <br> dst_nd_stride∈[1, 65535]。 |54| dst_nd_stride | 输入 | 目的相邻ND矩阵的起始地址间的偏移。单位为元素。 <br> dst_nd_stride∈[1, 65535]。 |
56 55 
57- 
58- 
59- 
60## 返回值说明56## 返回值说明
61 57 
62无58无
@@ -61,8 +61,6 @@ def asc_bfloat162float_v2(dst, src, mask):
61 61 
62## 函数原型62## 函数原型
63 63 
64-### 模板原型
65- 
66```c64```c
67// 占位符形式65// 占位符形式
68__simd_callee__ inline void asc_bfloat162float<position_mode>(vector_float& dst,66__simd_callee__ inline void asc_bfloat162float<position_mode>(vector_float& dst,
@@ -63,8 +63,6 @@ def asc_bfloat162int32_rn_v2(dst, src, mask):
63 63 
64## 函数原型64## 函数原型
65 65 
66-### 模板原型
67- 
68```c66```c
69// 占位符形式67// 占位符形式
70__simd_callee__ inline void asc_bfloat162int32_<round_mode><sat_mode><position_mode>(vector_int32_t& dst,68__simd_callee__ inline void asc_bfloat162int32_<round_mode><sat_mode><position_mode>(vector_int32_t& dst,
@@ -36,8 +36,6 @@
36 36 
37## 函数原型37## 函数原型
38 38 
39-### 模板原型
40- 
41```cpp39```cpp
42// 占位符形式40// 占位符形式
43__aicore__ inline void asc_copy_gm2l1(__cbuf__ <dtype>* dst,41__aicore__ inline void asc_copy_gm2l1(__cbuf__ <dtype>* dst,
@@ -60,9 +58,9 @@ __aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ <dtype>* dst,
60 uint8_t l2_cache_ctl)58 uint8_t l2_cache_ctl)
61```59```
62 60 
63-### dtype支持的数据类型61+### dtype支持数据类型
64 62 
65-dtype支持的数据类型为`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`void`。63+`dtype`取值为:`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`void`。
66 64 
67### 函数原型典型示例65### 函数原型典型示例
68 66 
@@ -91,9 +91,9 @@ __aicore__ inline void asc_copy_gm2l1_align_sync(__cbuf__ <dtype>* dst,
91 uint32_t burst_dst_stride)91 uint32_t burst_dst_stride)
92```92```
93 93 
94-### dtype支持的数据类型94+### dtype支持数据类型
95 95 
96-dtype取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。96+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
97 97 
98### 函数原型典型示例98### 函数原型典型示例
99 99 
@@ -80,9 +80,9 @@ __aicore__ inline void asc_copy_gm2l1_align_sync(__cbuf__ <dtype>* dst,
80 uint32_t burst_dst_stride)80 uint32_t burst_dst_stride)
81```81```
82 82 
83-### dtype支持的数据类型83+### dtype支持数据类型
84 84 
85-dtype取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。85+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
86 86 
87## 参数说明87## 参数说明
88 88 
@@ -44,8 +44,6 @@
44 44 
45## 函数原型45## 函数原型
46 46 
47-### 模板原型
48- 
49```cpp47```cpp
50// 占位符形式48// 占位符形式
51__aicore__ inline void asc_copy_gm2l1_dn2nz(__cbuf__ <dtype>* dst,49__aicore__ inline void asc_copy_gm2l1_dn2nz(__cbuf__ <dtype>* dst,
@@ -66,9 +64,9 @@ __aicore__ inline void asc_copy_gm2l1_dn2nz_sync(__cbuf__ <dtype>* dst,
66 bool smallc0_en)64 bool smallc0_en)
67```65```
68 66 
69-### dtype支持的数据类型67+### dtype支持数据类型
70 68 
71-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。69+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
72 70 
73### 典型示例71### 典型示例
74 72 
@@ -44,8 +44,6 @@
44 44 
45## 函数原型45## 函数原型
46 46 
47-### 模板原型
48- 
49```cpp47```cpp
50// 占位符形式48// 占位符形式
51__aicore__ inline void asc_copy_gm2l1_dn2nz_sync(__cbuf__ <dtype>* dst,49__aicore__ inline void asc_copy_gm2l1_dn2nz_sync(__cbuf__ <dtype>* dst,
@@ -58,9 +56,9 @@ __aicore__ inline void asc_copy_gm2l1_dn2nz_sync(__cbuf__ <dtype>* dst,
58 bool smallc0_en)56 bool smallc0_en)
59```57```
60 58 
61-### dtype支持的数据类型59+### dtype支持数据类型
62 60 
63-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。61+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
64 62 
65## 参数说明63## 参数说明
66 64 
@@ -54,18 +54,18 @@ __aicore__ inline void asc_copy_gm2l1_nd2nz(__cbuf__ <dtype>* dst,
54 uint64_t loop4_src_stride,54 uint64_t loop4_src_stride,
55 bool enable_small_c0)55 bool enable_small_c0)
56__aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ <dtype>* dst,56__aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ <dtype>* dst,
57- __gm__ <dtype>* src,57+ __gm__ <dtype>* src,
58- uint64_t loop1_src_stride,58+ uint64_t loop1_src_stride,
59- uint8_t l2_cache_ctl,59+ uint8_t l2_cache_ctl,
60- uint16_t n_value,60+ uint16_t n_value,
61- uint32_t d_value,61+ uint32_t d_value,
62- uint64_t loop4_src_stride,62+ uint64_t loop4_src_stride,
63- bool enable_small_c0)63+ bool enable_small_c0)
64```64```
65 65 
66-### dtype支持的数据类型66+### dtype支持数据类型
67 67 
68-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。68+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
69 69 
70### 函数原型典型示例70### 函数原型典型示例
71 71 
@@ -65,7 +65,6 @@
65 65 
66## 参数说明66## 参数说明
67 67 
68- 
69**表1** 参数说明68**表1** 参数说明
70 69 
71| 参数名 | 输入/输出 | 描述 |70| 参数名 | 输入/输出 | 描述 |
@@ -46,18 +46,18 @@
46 46 
47```cpp47```cpp
48__aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ <dtype>* dst,48__aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ <dtype>* dst,
49- __gm__ <dtype>* src,49+ __gm__ <dtype>* src,
50- uint64_t loop1_src_stride,50+ uint64_t loop1_src_stride,
51- uint8_t l2_cache_ctl,51+ uint8_t l2_cache_ctl,
52- uint16_t n_value,52+ uint16_t n_value,
53- uint32_t d_value,53+ uint32_t d_value,
54- uint64_t loop4_src_stride,54+ uint64_t loop4_src_stride,
55- bool enable_small_c0)55+ bool enable_small_c0)
56```56```
57 57 
58-### dtype支持的数据类型58+### dtype支持数据类型
59 59 
60-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。60+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
61 61 
62### 函数原型典型示例62### 函数原型典型示例
63 63 
@@ -36,8 +36,6 @@
36 36 
37## 函数原型37## 函数原型
38 38 
39-### 模板原型
40- 
41```cpp39```cpp
42// 占位符形式40// 占位符形式
43__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ <dtype>* dst,41__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ <dtype>* dst,
@@ -51,9 +49,9 @@ __aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ <dtype>* dst,
51 uint8_t l2_cache_ctl)49 uint8_t l2_cache_ctl)
52```50```
53 51 
54-### dtype支持的数据类型52+### dtype支持数据类型
55 53 
56-dtype支持的数据类型为`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`void`。54+`dtype`取值为:`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`void`。
57 55 
58## 参数说明56## 参数说明
59 57 
@@ -68,7 +68,6 @@
68 __aicore__ inline void asc_copy_gm2ub_align(__ubuf__ float* dst, __gm__ float* src, uint16_t n_burst, uint32_t len_burst, uint8_t left_padding_num, uint8_t right_padding_num, bool enable_constant_pad, uint8_t l2_cache_mode, uint64_t src_stride, uint32_t dst_stride)68 __aicore__ inline void asc_copy_gm2ub_align(__ubuf__ float* dst, __gm__ float* src, uint16_t n_burst, uint32_t len_burst, uint8_t left_padding_num, uint8_t right_padding_num, bool enable_constant_pad, uint8_t l2_cache_mode, uint64_t src_stride, uint32_t dst_stride)
69 ```69 ```
70 70 
71- 
72## 参数说明71## 参数说明
73 72 
74**表1** 参数说明73**表1** 参数说明
@@ -103,29 +103,29 @@ __aicore__ inline void asc_copy_l0c2gm(__gm__ <dst_dtype>* dst,
103 bool broadcast_en,103 bool broadcast_en,
104 bool enable_nz2dn)104 bool enable_nz2dn)
105__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ <dst_dtype>* dst,105__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ <dst_dtype>* dst,
106- __cc__ <src_dtype>* src,106+ __cc__ <src_dtype>* src,
107- uint16_t n_size,107+ uint16_t n_size,
108- uint16_t m_size,108+ uint16_t m_size,
109- uint32_t dst_stride,109+ uint32_t dst_stride,
110- uint16_t src_stride,110+ uint16_t src_stride,
111- uint8_t l2_cache_mode,111+ uint8_t l2_cache_mode,
112- uint8_t enable_clip_relu_pre,112+ uint8_t enable_clip_relu_pre,
113- uint8_t unit_flag_mode,113+ uint8_t unit_flag_mode,
114- uint64_t quant_pre_mode,114+ uint64_t quant_pre_mode,
115- uint8_t relu_pre_mode,115+ uint8_t relu_pre_mode,
116- bool enable_channel_split,116+ bool enable_channel_split,
117- bool enable_nz2nd,117+ bool enable_nz2nd,
118- uint64_t quant_post,118+ uint64_t quant_post,
119- uint8_t relu_post,119+ uint8_t relu_post,
120- bool clip_relu_post,120+ bool clip_relu_post,
121- uint8_t eltwise_op,121+ uint8_t eltwise_op,
122- bool eltwise_antq_en,122+ bool eltwise_antq_en,
123- bool c0_pad_en,123+ bool c0_pad_en,
124- bool broadcast_en,124+ bool broadcast_en,
125- bool enable_nz2dn)125+ bool enable_nz2dn)
126```126```
127 127 
128-### dtype支持的数据类型128+### dtype支持数据类型
129 129 
130src dtype与dst dtype支持以下组合:130src dtype与dst dtype支持以下组合:
131 131 
@@ -71,75 +71,62 @@ quant_pre_mode量化模式参数支持的枚举值如下:
71## 函数原型71## 函数原型
72 72 
73```cpp73```cpp
74-__aicore__ inline void asc_copy_l0c2l1(74+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ half* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
75- __cbuf__ half* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,75+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
76- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,76+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
77- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,77+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
78- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)78+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ bfloat16_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
79-__aicore__ inline void asc_copy_l0c2l1(79+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
80- __cbuf__ bfloat16_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,80+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
81- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,81+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
82- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,82+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ int8_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
83- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)83+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
84-__aicore__ inline void asc_copy_l0c2l1(84+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
85- __cbuf__ int8_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,85+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
86- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,86+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ uint8_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
87- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,87+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
88- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)88+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
89-__aicore__ inline void asc_copy_l0c2l1(89+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
90- __cbuf__ uint8_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,90+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ float* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
91- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,91+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
92- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,92+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
93- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)93+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
94-__aicore__ inline void asc_copy_l0c2l1(94+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ half* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
95- __cbuf__ float* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,95+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
96- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,96+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
97- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,97+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
98- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)98+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ int8_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
99-__aicore__ inline void asc_copy_l0c2l1(99+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
100- __cbuf__ half* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,100+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
101- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,101+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
102- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,102+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ uint8_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
103- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)103+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
104-__aicore__ inline void asc_copy_l0c2l1(104+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
105- __cbuf__ int8_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,105+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
106- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,106+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ int32_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
107- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,107+ uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,
108- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)108+ uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,
109-__aicore__ inline void asc_copy_l0c2l1(109+ uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)
110- __cbuf__ uint8_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,110+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ int4b_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
111- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,111+ uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,
112- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,112+ uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,
113- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)113+ uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,
114-__aicore__ inline void asc_copy_l0c2l1(114+ bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)
115- __cbuf__ int32_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,115+__aicore__ inline void asc_copy_l0c2l1_sync(__cbuf__ int4b_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
116- uint16_t src_stride, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode, uint64_t quant_pre_mode,116+ uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,
117- uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd, uint64_t quant_post,117+ uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,
118- uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op, uint8_t eltwise_antq_en, bool c0_pad_en)118+ uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,
119-__aicore__ inline void asc_copy_l0c2l1(119+ bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)
120- __cbuf__ int4b_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,120+__aicore__ inline void asc_copy_l0c2l1(__cbuf__ int4b_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
121- uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,121+ uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,
122- uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,122+ uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,
123- uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,123+ uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,
124- bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)124+ bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)
125-__aicore__ inline void asc_copy_l0c2l1_sync(125+__aicore__ inline void asc_copy_l0c2l1_sync(__cbuf__ int4b_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
126- __cbuf__ int4b_t* dst, __cc__ float* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,126+ uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,
127- uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,127+ uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,
128- uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,128+ uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,
129- uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,129+ bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)
130- bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)
131-__aicore__ inline void asc_copy_l0c2l1(
132- __cbuf__ int4b_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
133- uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,
134- uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,
135- uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,
136- bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)
137-__aicore__ inline void asc_copy_l0c2l1_sync(
138- __cbuf__ int4b_t* dst, __cc__ int32_t* src, uint16_t n_size, uint16_t m_size, uint32_t dst_stride,
139- uint16_t src_stride, uint8_t l2_cache_mode, uint8_t enable_clip_relu_pre, uint8_t unit_flag_mode,
140- uint64_t quant_pre_mode, uint8_t relu_pre_mode, bool enable_channel_split, bool enable_nz2nd,
141- uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, uint8_t eltwise_op,
142- bool eltwise_antq_en, bool c0_pad_en, bool broadcast_en, bool enable_nz2dn)
143```130```
144 131 
145## 参数说明132## 参数说明
@@ -61,7 +61,6 @@
61 61 
62## 参数说明62## 参数说明
63 63 
64- 
65**表1** 参数说明64**表1** 参数说明
66 65 
67| 参数名 | 输入/输出 | 描述 |66| 参数名 | 输入/输出 | 描述 |
@@ -95,7 +95,7 @@ __aicore__ inline void asc_copy_l0c2l1_sync(__cbuf__ int4b_t* dst,
95 bool enable_nz2dn)95 bool enable_nz2dn)
96```96```
97 97 
98-### dtype支持的数据类型98+### dtype支持数据类型
99 99 
100`src_dtype`支持`int32_t`、`float`。100`src_dtype`支持`int32_t`、`float`。
101 101 
@@ -80,8 +80,6 @@
80 80 
81## 函数原型81## 函数原型
82 82 
83-### 模板原型
84- 
85```cpp83```cpp
86// 占位符形式84// 占位符形式
87__aicore__ inline void asc_copy_l0c2ub(__ubuf__ <dst_dtype>* dst,85__aicore__ inline void asc_copy_l0c2ub(__ubuf__ <dst_dtype>* dst,
@@ -130,7 +128,7 @@ __aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ <dst_dtype>* dst,
130 bool enable_nz2dn)128 bool enable_nz2dn)
131```129```
132 130 
133-### dtype支持的数据类型131+### dtype支持数据类型
134 132 
135src dtype与dst dtype支持以下组合:133src dtype与dst dtype支持以下组合:
136 134 
@@ -41,9 +41,9 @@ __aicore__ inline void asc_copy_l12bt_sync(uint64_t dst,
41 uint32_t size)41 uint32_t size)
42```42```
43 43 
44-### dtype支持的数据类型44+### dtype支持数据类型
45 45 
46-dtype支持的数据类型为`half`、`bfloat16_t`、`int32_t`、`float`。46+`dtype`取值为:`half`、`bfloat16_t`、`int32_t`、`float`。
47 47 
48## 参数说明48## 参数说明
49 49 
@@ -42,7 +42,6 @@
42 42 
43## 参数说明43## 参数说明
44 44 
45- 
46**表1** 参数说明45**表1** 参数说明
47 46 
48| 参数名 | 输入/输出 | 描述 |47| 参数名 | 输入/输出 | 描述 |
@@ -56,9 +56,9 @@ __aicore__ inline void asc_copy_l12l0a_sync(__ca__ <dtype>* dst,
56 uint16_t dst_stride)56 uint16_t dst_stride)
57```57```
58 58 
59-### dtype支持的数据类型59+#### dtype支持数据类型
60 60 
61-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。61+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
62 62 
63### 2D转置搬运模式63### 2D转置搬运模式
64 64 
@@ -73,9 +73,9 @@ __aicore__ inline void asc_copy_l12l0a_transpose_sync(__ca__ <dtype>* dst,
73 uint16_t dst_stride)73 uint16_t dst_stride)
74```74```
75 75 
76-### dtype支持的数据类型76+#### dtype支持数据类型
77 77 
78-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。78+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
79 79 
80## 参数说明80## 参数说明
81 81 
@@ -66,9 +66,9 @@ __aicore__ inline void asc_copy_l12l0a_sync(__ca__ <dtype>* dst,
66 uint16_t channel_size)66 uint16_t channel_size)
67```67```
68 68 
69-#### dtype支持的数据类型69+#### dtype支持数据类型
70 70 
71-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。71+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
72 72 
73## 参数说明73## 参数说明
74 74 
@@ -142,8 +142,6 @@ repeatMode =1的时候filter窗口中读取数据的位置保持不变,每个r
142 142 
143![ ](../figures/load3d_05.png)143![ ](../figures/load3d_05.png)
144 144 
145- 
146- 
147## 调用示例145## 调用示例
148 146 
149```cpp147```cpp
@@ -58,7 +58,7 @@ __aicore__ inline void asc_copy_l12l0b_mx_sync(uint64_t dst,
58 58 
59## 参数说明59## 参数说明
60 60 
61-**表1** 参数说明61+**表1** 参数说明
62 62 
63| 参数名 | 输入/输出 | 含义 |63| 参数名 | 输入/输出 | 含义 |
64| --- | --- | --- |64| --- | --- | --- |
@@ -56,9 +56,9 @@ __aicore__ inline void asc_copy_l12l0b_sync(__cb__ <dtype>* dst,
56 uint16_t dst_stride)56 uint16_t dst_stride)
57```57```
58 58 
59-### dtype支持的数据类型59+#### dtype支持数据类型
60 60 
61-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。61+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
62 62 
63### 2D转置搬运模式63### 2D转置搬运模式
64 64 
@@ -73,13 +73,13 @@ __aicore__ inline void asc_copy_l12l0b_transpose_sync(__cb__ <dtype>* dst,
73 uint16_t dst_stride)73 uint16_t dst_stride)
74```74```
75 75 
76-### dtype支持的数据类型76+#### dtype支持数据类型
77 77 
78-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。78+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
79 79 
80## 参数说明80## 参数说明
81 81 
82-**表1** 参数说明82+**表1** 参数说明
83 83 
84| 参数名 | 输入/输出 | 含义 |84| 参数名 | 输入/输出 | 含义 |
85| --- | --- | --- |85| --- | --- | --- |
@@ -60,9 +60,9 @@ __aicore__ inline void asc_copy_l12l0b_sync(__cb__ <dtype>* dst,
60 uint16_t channel_size)60 uint16_t channel_size)
61```61```
62 62 
63-### dtype支持的数据类型63+### dtype支持数据类型
64 64 
65-dtype支持的数据类型为`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。65+`dtype`取值为:`int8_t`、`uint8_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
66 66 
67## 参数说明67## 参数说明
68 68 
@@ -139,8 +139,6 @@ repeatMode =1的时候filter窗口中读取数据的位置保持不变,每个r
139 139 
140![ ](../figures/load3d_05.png)140![ ](../figures/load3d_05.png)
141 141 
142- 
143- 
144## 调用示例142## 调用示例
145 143 
146```cpp144```cpp
@@ -108,9 +108,9 @@ __aicore__ inline void asc_copy_l12l0b_trans_sync(__cb__ <dtype>* dst,
108 uint16_t src_frac_gap)108 uint16_t src_frac_gap)
109```109```
110 110 
111-### dtype支持的数据类型111+### dtype支持数据类型
112 112 
113-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。113+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。
114 114 
115## 参数说明115## 参数说明
116 116 
@@ -55,7 +55,6 @@
55 55 
56## 参数说明56## 参数说明
57 57 
58- 
59**表1** 参数说明58**表1** 参数说明
60 59 
61| 参数名 | 输入/输出 | 描述 |60| 参数名 | 输入/输出 | 描述 |
@@ -68,7 +68,6 @@ PIPE_V
68- dst、src的起始地址需要32字节对齐。68- dst、src的起始地址需要32字节对齐。
69- 操作数地址重叠约束请参考[通用地址重叠约束](../general_description_and_constraints.md#通用地址重叠约束)。69- 操作数地址重叠约束请参考[通用地址重叠约束](../general_description_and_constraints.md#通用地址重叠约束)。
70 70 
71- 
72## 调用示例71## 调用示例
73 72 
74```cpp73```cpp
@@ -42,7 +42,7 @@ __aicore__ inline void asc_fill_l1_sync(__cbuf__ <dst_dtype>* dst,
42 const asc_fill_value_config& config)42 const asc_fill_value_config& config)
43```43```
44 44 
45-### dtype支持的数据类型45+### dtype支持数据类型
46 46 
47dst dtype与value dtype支持以下组合:47dst dtype与value dtype支持以下组合:
48 48 
@@ -67,8 +67,6 @@ def asc_float2bfloat16_rn_v2(dst, src, mask):
67 67 
68## 函数原型68## 函数原型
69 69 
70-### 模板原型
71- 
72```c70```c
73// 占位符形式71// 占位符形式
74__simd_callee__ inline void asc_float2bfloat16_<round_mode><sat_mode><position_mode>(vector_bfloat16_t& dst,72__simd_callee__ inline void asc_float2bfloat16_<round_mode><sat_mode><position_mode>(vector_bfloat16_t& dst,
@@ -24,7 +24,6 @@
24- Atlas训练系列产品:不支持24- Atlas训练系列产品:不支持
25<!-- end id7 -->25<!-- end id7 -->
26 26 
27- 
28## 功能说明27## 功能说明
29 28 
30头文件路径为:`"c_api/reg_compute/reg_convert.h"`。29头文件路径为:`"c_api/reg_compute/reg_convert.h"`。
@@ -42,9 +42,6 @@
42 42 
43* 前n个数据计算43* 前n个数据计算
44 44 
45- 
46- 
47- 
48- 同步计算45- 同步计算
49 46 
50 ```cpp47 ```cpp
@@ -40,10 +40,6 @@
40 40 
41## 函数原型41## 函数原型
42 42 
43- 
44- 
45- 
46- 
47- 同步计算43- 同步计算
48 44 
49 ```cpp45 ```cpp
@@ -61,8 +61,6 @@ def asc_half2float_v2(dst, src, mask):
61 61 
62## 函数原型62## 函数原型
63 63 
64-### 模板原型
65- 
66```c64```c
67// 占位符形式65// 占位符形式
68__simd_callee__ inline void asc_half2float<position_mode>(vector_float& dst,66__simd_callee__ inline void asc_half2float<position_mode>(vector_float& dst,
@@ -36,9 +36,6 @@
36 36 
37* 前n个数据计算37* 前n个数据计算
38 38 
39- 
40- 
41- 
42- 同步计算39- 同步计算
43 40 
44 ```cpp41 ```cpp
@@ -66,8 +66,6 @@ def asc_half2hif8_rna_v2(dst, src, mask):
66 66 
67## 函数原型67## 函数原型
68 68 
69-### 模板原型
70- 
71```c69```c
72// 占位符形式70// 占位符形式
73__simd_callee__ inline void asc_half2hif8_<round_mode><sat_mode><position_mode>(vector_hifloat8_t& dst,71__simd_callee__ inline void asc_half2hif8_<round_mode><sat_mode><position_mode>(vector_hifloat8_t& dst,
@@ -63,8 +63,6 @@ def asc_half2int32_rd_v2(dst, src, mask):
63 63 
64## 函数原型64## 函数原型
65 65 
66-### 模板原型
67- 
68```c66```c
69// 占位符形式67// 占位符形式
70__simd_callee__ inline void asc_half2int32_<round_mode><position_mode>(vector_int32_t& dst,68__simd_callee__ inline void asc_half2int32_<round_mode><position_mode>(vector_int32_t& dst,
@@ -42,9 +42,6 @@
42 42 
43* 前n个数据计算43* 前n个数据计算
44 44 
45- 
46- 
47- 
48- 同步计算45- 同步计算
49 46 
50 ```cpp47 ```cpp
@@ -66,8 +66,6 @@ def asc_half2int8_rd_v2(dst, src, mask):
66 66 
67## 函数原型67## 函数原型
68 68 
69-### 模板原型
70- 
71```c69```c
72// 占位符形式70// 占位符形式
73__simd_callee__ inline void asc_half2int8_<round_mode><sat_mode><position_mode>(vector_int8_t& dst,71__simd_callee__ inline void asc_half2int8_<round_mode><sat_mode><position_mode>(vector_int8_t& dst,
@@ -40,10 +40,6 @@
40 40 
41## 函数原型41## 函数原型
42 42 
43- 
44- 
45- 
46- 
47- 同步计算43- 同步计算
48 44 
49 ```cpp45 ```cpp
@@ -66,8 +66,6 @@ def asc_half2uint8_rd_v2(dst, src, mask):
66 66 
67## 函数原型67## 函数原型
68 68 
69-### 模板原型
70- 
71```c69```c
72// 占位符形式70// 占位符形式
73__simd_callee__ inline void asc_half2uint8_<round_mode><sat_mode><position_mode>(vector_uint8_t& dst,71__simd_callee__ inline void asc_half2uint8_<round_mode><sat_mode><position_mode>(vector_uint8_t& dst,
@@ -66,8 +66,6 @@ def asc_int322int16_v2(dst, src, mask):
66 66 
67## 函数原型67## 函数原型
68 68 
69-### 模板原型
70- 
71```c69```c
72// 占位符形式70// 占位符形式
73__simd_callee__ inline void asc_int322int16<sat_mode><position_mode>(vector_int16_t& dst,71__simd_callee__ inline void asc_int322int16<sat_mode><position_mode>(vector_int16_t& dst,
@@ -61,8 +61,6 @@ def asc_int322int64_v2(dst, src, mask):
61 61 
62## 函数原型62## 函数原型
63 63 
64-### 模板原型
65- 
66```c64```c
67// 占位符形式65// 占位符形式
68__simd_callee__ inline void asc_int322int64<position_mode>(vector_int64_t& dst,66__simd_callee__ inline void asc_int322int64<position_mode>(vector_int64_t& dst,
@@ -66,8 +66,6 @@ def asc_int322uint16_v2(dst, src, mask):
66 66 
67## 函数原型67## 函数原型
68 68 
69-### 模板原型
70- 
71```c69```c
72// 占位符形式70// 占位符形式
73__simd_callee__ inline void asc_int322uint16<sat_mode><position_mode>(vector_uint16_t& dst,71__simd_callee__ inline void asc_int322uint16<sat_mode><position_mode>(vector_uint16_t& dst,
@@ -51,7 +51,6 @@ $$
51 51 
52## 参数说明52## 参数说明
53 53 
54- 
55**表1** 参数说明54**表1** 参数说明
56 55 
57| 参数名 | 输入/输出 | 描述 |56| 参数名 | 输入/输出 | 描述 |
@@ -42,7 +42,6 @@ Atlas A2系列产品
42**入参带有`feat_offset`参数的`asc_mmad`、`asc_mmad_s4`接口以及全部`asc_mmad_sync`、`asc_mmad_s4_sync`接口已废弃。带`feat_offset`参数的接口请改用不带该参数且使用`asc_unit_flag_mode`的对应接口。**42**入参带有`feat_offset`参数的`asc_mmad`、`asc_mmad_s4`接口以及全部`asc_mmad_sync`、`asc_mmad_s4_sync`接口已废弃。带`feat_offset`参数的接口请改用不带该参数且使用`asc_unit_flag_mode`的对应接口。**
43<!-- end id18 -->43<!-- end id18 -->
44 44 
45- 
46本接口是Ascend C面向昇腾AI芯片的矩阵乘加(Mmad)核心计算接口,专为高性能算子开发设计,封装了昇腾NPU硬件的矩阵乘加计算能力,广泛用于神经网络层(如全连接层、卷积层)、数值计算类算子的开发,其计算公式如下:45本接口是Ascend C面向昇腾AI芯片的矩阵乘加(Mmad)核心计算接口,专为高性能算子开发设计,封装了昇腾NPU硬件的矩阵乘加计算能力,广泛用于神经网络层(如全连接层、卷积层)、数值计算类算子的开发,其计算公式如下:
47 46 
48$$47$$
@@ -110,7 +109,7 @@ __aicore__ inline void asc_mmad_sync(__cc__ <c_dtype>* c_matrix,
110 bool c_matrix_init_val)109 bool c_matrix_init_val)
111```110```
112 111 
113-**dtype支持的数据类型:**112+#### dtype支持数据类型
M
Mmunanhw26 days ago

和asc.mmad.md同样的问题

likedislike
114 113 
115`c_dtype`、`a_dtype`、`b_dtype`的取值组合见下表:114`c_dtype`、`a_dtype`、`b_dtype`的取值组合见下表:
116 115 
@@ -128,7 +127,7 @@ __aicore__ inline void asc_mmad_sync(__cc__ <c_dtype>* c_matrix,
128| `bfloat16_t` | `bfloat16_t` | `float` | `float` |127| `bfloat16_t` | `bfloat16_t` | `float` | `float` |
129| `float` | `float` | `float` | `float` |128| `float` | `float` | `float` | `float` |
130 129 
131-**典型示例:**130+#### 函数原型典型示例
132 131 
133```c132```c
134__aicore__ inline void asc_mmad(__cc__ float* c_matrix,133__aicore__ inline void asc_mmad(__cc__ float* c_matrix,
@@ -151,22 +150,169 @@ __aicore__ inline void asc_mmad(__cc__ float* c_matrix,
151- `asc_mmad`及`asc_mmad_sync`:150- `asc_mmad`及`asc_mmad_sync`:
152 151 
153 ```c152 ```c
154- __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix, __ca__ <a_dtype>* a_matrix, __cb__ <b_dtype>* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t unit_flag, bool k_direction_align, bool c_matrix_source, bool c_matrix_init_val)153+ // 占位符形式
155- __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix, __ca__ <a_dtype>* a_matrix, __cb__ <b_dtype>* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t feat_offset, uint8_t smask_offset, uint8_t unit_flag, bool k_direction_align, bool is_weight_offset, bool c_matrix_source, bool c_matrix_init_val)154+ __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix,
156- __aicore__ inline void asc_mmad_sync(__cc__ <c_dtype>* c_matrix, __ca__ <a_dtype>* a_matrix, __cb__ <b_dtype>* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t unit_flag, bool k_direction_align, bool c_matrix_source, bool c_matrix_init_val)155+ __ca__ <a_dtype>* a_matrix,
157- __aicore__ inline void asc_mmad_sync(__cc__ <c_dtype>* c_matrix, __ca__ <a_dtype>* a_matrix, __cb__ <b_dtype>* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t feat_offset, uint8_t smask_offset, uint8_t unit_flag, bool k_direction_align, bool is_weight_offset, bool c_matrix_source, bool c_matrix_init_val)156+ __cb__ <b_dtype>* b_matrix,
157+ uint16_t left_height,
158+ uint16_t n_dim,
159+ uint16_t right_width,
160+ uint8_t unit_flag,
161+ bool k_direction_align,
162+ bool c_matrix_source,
163+ bool c_matrix_init_val)
164+ 
165+ __aicore__ inline void asc_mmad(__cc__ <c_dtype>* c_matrix,
166+ __ca__ <a_dtype>* a_matrix,
167+ __cb__ <b_dtype>* b_matrix,
168+ uint16_t left_height,
169+ uint16_t n_dim,
170+ uint16_t right_width,
171+ uint8_t feat_offset,
172+ uint8_t smask_offset,
173+ uint8_t unit_flag,
174+ bool k_direction_align,
175+ bool is_weight_offset,
176+ bool c_matrix_source,
177+ bool c_matrix_init_val)
178+ 
179+ __aicore__ inline void asc_mmad_sync(__cc__ <c_dtype>* c_matrix,
180+ __ca__ <a_dtype>* a_matrix,
181+ __cb__ <b_dtype>* b_matrix,
182+ uint16_t left_height,
183+ uint16_t n_dim,
184+ uint16_t right_width,
185+ uint8_t unit_flag,
186+ bool k_direction_align,
187+ bool c_matrix_source,
188+ bool c_matrix_init_val)
189+ 
190+ __aicore__ inline void asc_mmad_sync(__cc__ <c_dtype>* c_matrix,
191+ __ca__ <a_dtype>* a_matrix,
192+ __cb__ <b_dtype>* b_matrix,
193+ uint16_t left_height,
194+ uint16_t n_dim,
195+ uint16_t right_width,
196+ uint8_t feat_offset,
197+ uint8_t smask_offset,
198+ uint8_t unit_flag,
199+ bool k_direction_align,
200+ bool is_weight_offset,
201+ bool c_matrix_source,
202+ bool c_matrix_init_val)
158 ```203 ```
159 204 
160- `c_dtype`、`a_dtype`、`b_dtype`支持以下组合:`float/bfloat16_t/bfloat16_t`、`float/half/half`、`float/float/float`和`int32_t/int8_t/int8_t`。205+#### dtype支持数据类型
206+ 
207+`c_dtype`、`a_dtype`、`b_dtype`支持以下组合:`float/bfloat16_t/bfloat16_t`、`float/half/half`、`float/float/float`和`int32_t/int8_t/int8_t`。
161 208 
162- `asc_mmad_s4`及`asc_mmad_s4_sync`:209- `asc_mmad_s4`及`asc_mmad_s4_sync`:
163 210 
164 ```c211 ```c
165- __aicore__ inline void asc_mmad_s4(__cc__ int32_t* c_matrix, __ca__ int4b_t* a_matrix, __cb__ int4b_t* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t unit_flag, bool k_direction_align, bool c_matrix_source, bool c_matrix_init_val)212+ __aicore__ inline void asc_mmad_s4(__cc__ int32_t* c_matrix,
166- __aicore__ inline void asc_mmad_s4(__cc__ int32_t* c_matrix, __ca__ int4b_t* a_matrix, __cb__ int4b_t* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t feat_offset, uint8_t smask_offset, uint8_t unit_flag, bool k_direction_align, bool is_weight_offset, bool c_matrix_source, bool c_matrix_init_val)213+ __ca__ int4b_t* a_matrix,
167- __aicore__ inline void asc_mmad_s4_sync(__cc__ int32_t* c_matrix, __ca__ int4b_t* a_matrix, __cb__ int4b_t* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t unit_flag, bool k_direction_align, bool c_matrix_source, bool c_matrix_init_val)214+ __cb__ int4b_t* b_matrix,
168- __aicore__ inline void asc_mmad_s4_sync(__cc__ int32_t* c_matrix, __ca__ int4b_t* a_matrix, __cb__ int4b_t* b_matrix, uint16_t left_height, uint16_t n_dim, uint16_t right_width, uint8_t feat_offset, uint8_t smask_offset, uint8_t unit_flag, bool k_direction_align, bool is_weight_offset, bool c_matrix_source, bool c_matrix_init_val)215+ uint16_t left_height,
216+ uint16_t n_dim,
217+ uint16_t right_width,
218+ uint8_t unit_flag,
219+ bool k_direction_align,
220+ bool c_matrix_source,
221+ bool c_matrix_init_val)
222+ 
223+ __aicore__ inline void asc_mmad_s4(__cc__ int32_t* c_matrix,
224+ __ca__ int4b_t* a_matrix,
225+ __cb__ int4b_t* b_matrix,
226+ uint16_t left_height,
227+ uint16_t n_dim,
228+ uint16_t right_width,
229+ uint8_t feat_offset,
230+ uint8_t smask_offset,
231+ uint8_t unit_flag,
232+ bool k_direction_align,
233+ bool is_weight_offset,
234+ bool c_matrix_source,
235+ bool c_matrix_init_val)
236+ 
237+ __aicore__ inline void asc_mmad_s4_sync(__cc__ int32_t* c_matrix,
238+ __ca__ int4b_t* a_matrix,
239+ __cb__ int4b_t* b_matrix,
240+ uint16_t left_height,
241+ uint16_t n_dim,
242+ uint16_t right_width,
243+ uint8_t unit_flag,
244+ bool k_direction_align,
245+ bool c_matrix_source,
246+ bool c_matrix_init_val)
247+ 
248+ __aicore__ inline void asc_mmad_s4_sync(__cc__ int32_t* c_matrix,
249+ __ca__ int4b_t* a_matrix,
250+ __cb__ int4b_t* b_matrix,
251+ uint16_t left_height,
252+ uint16_t n_dim,
253+ uint16_t right_width,
254+ uint8_t feat_offset,
255+ uint8_t smask_offset,
256+ uint8_t unit_flag,
257+ bool k_direction_align,
258+ bool is_weight_offset,
259+ bool c_matrix_source,
260+ bool c_matrix_init_val)
169 ```261 ```
262+ 
263+#### 函数原型典型示例
264+ 
265+```c
266+__aicore__ inline void asc_mmad(__cc__ float* c_matrix,
267+ __ca__ bfloat16_t* a_matrix,
268+ __cb__ bfloat16_t* b_matrix,
269+ uint16_t left_height,
270+ uint16_t n_dim,
271+ uint16_t right_width,
272+ uint8_t unit_flag,
273+ bool k_direction_align,
274+ bool c_matrix_source,
275+ bool c_matrix_init_val)
276+ 
277+__aicore__ inline void asc_mmad(__cc__ float* c_matrix,
278+ __ca__ bfloat16_t* a_matrix,
279+ __cb__ bfloat16_t* b_matrix,
280+ uint16_t left_height,
281+ uint16_t n_dim,
282+ uint16_t right_width,
283+ uint8_t feat_offset,
284+ uint8_t smask_offset,
285+ uint8_t unit_flag,
286+ bool k_direction_align,
287+ bool is_weight_offset,
288+ bool c_matrix_source,
289+ bool c_matrix_init_val)
290+ 
291+__aicore__ inline void asc_mmad_sync(__cc__ float* c_matrix,
292+ __ca__ bfloat16_t* a_matrix,
293+ __cb__ bfloat16_t* b_matrix,
294+ uint16_t left_height,
295+ uint16_t n_dim,
296+ uint16_t right_width,
297+ uint8_t unit_flag,
298+ bool k_direction_align,
299+ bool c_matrix_source,
300+ bool c_matrix_init_val)
301+ 
302+__aicore__ inline void asc_mmad_sync(__cc__ float* c_matrix,
303+ __ca__ bfloat16_t* a_matrix,
304+ __cb__ bfloat16_t* b_matrix,
305+ uint16_t left_height,
306+ uint16_t n_dim,
307+ uint16_t right_width,
308+ uint8_t feat_offset,
309+ uint8_t smask_offset,
310+ uint8_t unit_flag,
311+ bool k_direction_align,
312+ bool is_weight_offset,
313+ bool c_matrix_source,
314+ bool c_matrix_init_val)
315+```
170<!-- end id20 -->316<!-- end id20 -->
171 317 
172## 参数说明318## 参数说明
@@ -82,7 +82,7 @@ __aicore__ inline void asc_mmad_mx_sync(__cc__ float* c_matrix,
82 bool c_matrix_init_val)82 bool c_matrix_init_val)
83```83```
84 84 
85-**dtype支持的数据类型:**85+### dtype支持数据类型
86 86 
87`a_dtype`、`b_dtype`的取值组合见下表:87`a_dtype`、`b_dtype`的取值组合见下表:
88 88 
@@ -99,7 +99,7 @@ __aicore__ inline void asc_mmad_mx_sync(__cc__ float* c_matrix,
99| `fp8_e5m2_t` | `fp8_e4m3fn_t` | `fp8_e8m0_t` | `float` | `float` |99| `fp8_e5m2_t` | `fp8_e4m3fn_t` | `fp8_e8m0_t` | `float` | `float` |
100| `fp8_e5m2_t` | `fp8_e5m2_t` | `fp8_e8m0_t` | `float` | `float` |100| `fp8_e5m2_t` | `fp8_e5m2_t` | `fp8_e8m0_t` | `float` | `float` |
101 101 
102-**典型示例:**102+### 函数原型典型示例
103 103 
104```c104```c
105__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,105__aicore__ inline void asc_mmad_mx(__cc__ float* c_matrix,
@@ -79,7 +79,6 @@ PIPE_V
79- dst的起始地址,输入类型为half时需要4字节对齐,输入类型为float时需要8字节对齐。79- dst的起始地址,输入类型为half时需要4字节对齐,输入类型为float时需要8字节对齐。
80- src的起始地址需要32字节对齐。80- src的起始地址需要32字节对齐。
81 81 
82- 
83## 调用示例82## 调用示例
84 83 
85```cpp84```cpp
@@ -79,7 +79,6 @@ PIPE_V
79- dst的起始地址,输入类型为half时需要4字节对齐,输入类型为float时需要8字节对齐。79- dst的起始地址,输入类型为half时需要4字节对齐,输入类型为float时需要8字节对齐。
80- src的起始地址需要32字节对齐。80- src的起始地址需要32字节对齐。
81 81 
82- 
83## 调用示例82## 调用示例
84 83 
85```cpp84```cpp
@@ -69,10 +69,8 @@ PIPE_V
69- dst的起始地址,输入类型为half时需要2字节对齐,输入类型为float时需要4字节对齐。69- dst的起始地址,输入类型为half时需要2字节对齐,输入类型为float时需要4字节对齐。
70- src的起始地址需要32字节对齐。70- src的起始地址需要32字节对齐。
71 71 
72- 
73## 调用示例72## 调用示例
74 73 
75- 
76```cpp74```cpp
77// 示例计算256个half的和,分2次迭代完成,计算结果为2组求和的值75// 示例计算256个half的和,分2次迭代完成,计算结果为2组求和的值
78constexpr uint32_t total_length = 256;76constexpr uint32_t total_length = 256;
@@ -44,7 +44,6 @@
44| 39:32 | 在QS162S16_POST,QF162S16_POST,SHIFT2S16_POST和SHIFT2S32_POST量化模式中表示s17偏移量中的高8位. |44| 39:32 | 在QS162S16_POST,QF162S16_POST,SHIFT2S16_POST和SHIFT2S32_POST量化模式中表示s17偏移量中的高8位. |
45| 44:40 | 在SHIFT2S4_POST,SHIFT2B8_POST,SHIFT2S16_POST和SHIFT2S32_POST量化模式中表示位移值。 |45| 44:40 | 在SHIFT2S4_POST,SHIFT2B8_POST,SHIFT2S16_POST和SHIFT2S32_POST量化模式中表示位移值。 |
46 46 
47- 
48## 函数原型47## 函数原型
49 48 
50```cpp49```cpp
@@ -50,11 +50,11 @@ NCHW格式转换成NC1HWC0格式时,如果是数据类型的位宽为32位或
50 50 
51```cpp51```cpp
52__aicore__ inline void asc_transto5hd_b32_sync(ub_addr8_t dst, ub_addr8_t src, uint8_t repeat,52__aicore__ inline void asc_transto5hd_b32_sync(ub_addr8_t dst, ub_addr8_t src, uint8_t repeat,
53- uint16_t dst_stride, uint16_t src_stride)53+ uint16_t dst_stride, uint16_t src_stride)
54__aicore__ inline void asc_transto5hd_b16_sync(ub_addr8_t dst, ub_addr8_t src, uint8_t repeat,54__aicore__ inline void asc_transto5hd_b16_sync(ub_addr8_t dst, ub_addr8_t src, uint8_t repeat,
55- uint16_t dst_stride, uint16_t src_stride)55+ uint16_t dst_stride, uint16_t src_stride)
56__aicore__ inline void asc_transto5hd_b8_sync(ub_addr8_t dst, ub_addr8_t src, uint8_t repeat,56__aicore__ inline void asc_transto5hd_b8_sync(ub_addr8_t dst, ub_addr8_t src, uint8_t repeat,
57- uint16_t dst_stride, uint16_t src_stride, bool dst_high_half, bool src_high_half)57+ uint16_t dst_stride, uint16_t src_stride, bool dst_high_half, bool src_high_half)
58```58```
59 59 
60## 参数说明60## 参数说明
@@ -24,7 +24,6 @@
24- Atlas训练系列产品:不支持24- Atlas训练系列产品:不支持
25<!-- end id7 -->25<!-- end id7 -->
26 26 
27- 
28## 功能说明27## 功能说明
29 28 
30头文件路径为:`"c_api/reg_compute/reg_convert.h"`。29头文件路径为:`"c_api/reg_compute/reg_convert.h"`。
@@ -33,7 +33,7 @@
33本接口用于获取指定流水线对应发射队列(Issue Queue)当前的空闲槽位数量。空闲槽位表示发射队列还能接收的待发射指令数量,可用于观察队列占用情况。包含以下六个函数,各函数查询的流水线、适用的AI Core和最大空闲槽位数量如下:33本接口用于获取指定流水线对应发射队列(Issue Queue)当前的空闲槽位数量。空闲槽位表示发射队列还能接收的待发射指令数量,可用于观察队列占用情况。包含以下六个函数,各函数查询的流水线、适用的AI Core和最大空闲槽位数量如下:
34 34 
35<a id="table1"></a>35<a id="table1"></a>
36-**表1** 接口、流水线与最大值对应关系36+**表1** 接口、流水线与最大值对应关系
37 37 
38| 函数 | 被查询的流水线 | 适用AI Core | 最大空闲槽位数量 |38| 函数 | 被查询的流水线 | 适用AI Core | 最大空闲槽位数量 |
39| --- | --- | --- | --- |39| --- | --- | --- | --- |
@@ -91,7 +91,7 @@ __simd_callee__ inline void asc_loadalign(vector_bool& dst,
91 91 
92#### dtype支持数据类型92#### dtype支持数据类型
93 93 
94-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。当dtype为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。94+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。当`dtype`为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。
95 95 
96#### 函数原型典型示例96#### 函数原型典型示例
97 97 
@@ -117,7 +117,7 @@ __simd_callee__ inline void asc_loadalign(vector_bool& dst,
117 117 
118#### dtype支持数据类型118#### dtype支持数据类型
119 119 
120-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。当dtype为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。120+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`int64_t`、`uint64_t`。当`dtype`为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。
121 121 
122#### 函数原型典型示例122#### 函数原型典型示例
123 123 
@@ -138,9 +138,9 @@ __simd_callee__ inline void asc_loadalign(vector_<dtype>& dst,
138 vector_bool mask)138 vector_bool mask)
139```139```
140 140 
141-##### dtype支持数据类型141+#### dtype支持数据类型
142 142 
143-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`int64_t`。当dtype为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。143+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`、`int64_t`。当`dtype`为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。
144 144 
145#### 函数原型典型示例145#### 函数原型典型示例
146 146 
@@ -51,7 +51,7 @@ __simd_callee__ inline void asc_loadalign_brc_datablock(vector_<dtype>& dst,
51 51 
52#### dtype支持数据类型52#### dtype支持数据类型
53 53 
54-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当dtype为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。54+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当`dtype`为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。
55 55 
56#### 函数原型典型示例56#### 函数原型典型示例
57 57 
@@ -73,7 +73,7 @@ __simd_callee__ inline void asc_loadalign_brc_datablock(vector_<dtype>& dst,
73 73 
74#### dtype支持数据类型74#### dtype支持数据类型
75 75 
76-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当dtype为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。76+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当`dtype`为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。
77 77 
78#### 函数原型典型示例78#### 函数原型典型示例
79 79 
@@ -94,7 +94,7 @@ __simd_callee__ inline void asc_loadalign_brc_datablock(vector_<dtype>& dst,
94 94 
95#### dtype支持数据类型95#### dtype支持数据类型
96 96 
97-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当dtype为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。97+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当`dtype`为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。
98 98 
99#### 函数原型典型示例99#### 函数原型典型示例
100 100 
@@ -42,7 +42,7 @@ __simd_callee__ inline void asc_loadalign_brc_datablock_postupdate(vector_<dtype
42 42 
43### dtype支持数据类型43### dtype支持数据类型
44 44 
45-dtype支持的数据类型为`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当dtype为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。45+`dtype`取值为:`int4b_t`、`int8_t`、`uint8_t`、`fp4x2_e2m1_t`、`fp4x2_e1m2_t`、`hifloat8_t`、`fp8_e8m0_t`、`fp8_e5m2_t`、`fp8_e4m3fn_t`、`int16_t`、`uint16_t`、`half`、`bfloat16_t`、`int32_t`、`uint32_t`、`float`。当`dtype`为`int4b_t`时,dst的实际类型为`vector_int4x2_t`。
46 46 
47### 函数原型典型示例47### 函数原型典型示例
48 48 
Mdocs/zh/api/SIMD-API/c_api/sync/inter_core_sync/asc_sync_inter_wait.md+1-1File content is under review, please try again later