已合并
doc tools工具修改nn仓 #3533
caiwenwen创建于 4月3日
doc tools工具修改nn仓 #3533
已合并
从已删除 :9.0.0合入到cann/ops-nn9.0.0
共 95 个文件变更+409-398
| @@ -17,5 +17,3 @@ | |||
| 17 | - [ ] 性能优化 | 17 | - [ ] 性能优化 |
| 18 | - [ ] 文档更新 | 18 | - [ ] 文档更新 |
| 19 | - [ ] 其他,请描述: | 19 | - [ ] 其他,请描述: |
| 20 | - | ||
| 21 | - | ||
| @@ -32,5 +32,3 @@ | |||
| 32 | | 调用方式 | 调用样例 | 说明 | | 32 | | 调用方式 | 调用样例 | 说明 | |
| 33 | |--------------|--------------------------------------------------------------|----------------------------------------------------| | 33 | |--------------|--------------------------------------------------------------|----------------------------------------------------| |
| 34 | | 图模式调用 | [test_geir_assert](./examples/test_geir_assert.cpp) | 通过[算子IR](./op_graph/assert_proto.h)构图方式调用Assert算子。 | | 34 | | 图模式调用 | [test_geir_assert](./examples/test_geir_assert.cpp) | 通过[算子IR](./op_graph/assert_proto.h)构图方式调用Assert算子。 | |
| 35 | - | ||
| 36 | - | ||
| @@ -60,4 +60,4 @@ | |||
| 60 | 60 | ||
| 61 | | 调用方式 | 样例代码 | 说明 | | 61 | | 调用方式 | 样例代码 | 说明 | |
| 62 | | ---------------- | --------------------------- | --------------------------------------------------- | | 62 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 63 | -| 图模式调用 | [test_geir_identity](./examples/test_geir_identity.cpp) | 通过[算子IR](./op_graph/identity_proto.h)构图方式调用identity算子。 | | 63 | +| 图模式调用 | [test_geir_identity](./examples/test_geir_identity.cpp) | 通过[算子IR](./op_graph/identity_proto.h)构图方式调用identity算子。 | |
| @@ -1,3 +1,3 @@ | |||
| 1 | # IdentityN | 1 | # IdentityN |
| 2 | 2 | ||
| 3 | -本目录仅包含IdentityN算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 | 3 | +本目录仅包含IdentityN算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 |
| @@ -1,3 +1,3 @@ | |||
| 1 | # Rank | 1 | # Rank |
| 2 | 2 | ||
| 3 | -本目录仅包含Rank算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 | 3 | +本目录仅包含Rank算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 |
| @@ -1,3 +1,3 @@ | |||
| 1 | # Shape | 1 | # Shape |
| 2 | 2 | ||
| 3 | -本目录仅包含Shape算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 | 3 | +本目录仅包含Shape算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 |
| @@ -1,3 +1,3 @@ | |||
| 1 | # ShapeN | 1 | # ShapeN |
| 2 | 2 | ||
| 3 | -本目录仅包含ShapeN算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 | 3 | +本目录仅包含ShapeN算子对应的aclnn接口;如您想要贡献该算子的AscendC实现,请参考[贡献流程](../../CONTRIBUTING.md)。 |
| @@ -209,7 +209,6 @@ | |||
| 209 | 209 | ||
| 210 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 | 210 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 |
| 211 | 211 | ||
| 212 | - | ||
| 213 | ## 调用说明 | 212 | ## 调用说明 |
| 214 | 213 | ||
| 215 | | 调用方式 | 调用样例 | 说明 | | 214 | | 调用方式 | 调用样例 | 说明 | |
| @@ -61,4 +61,3 @@ | |||
| 61 | | 调用方式 | 样例代码 | 说明 | | 61 | | 调用方式 | 样例代码 | 说明 | |
| 62 | | ----------- | ------------------- | ---------- | | 62 | | ----------- | ------------------- | ---------- | |
| 63 | | aclnn接口 | [test_aclnn_conv3d_backprop_filter_v2](examples/test_aclnn_conv3d_backprop_filter_v2.cpp) | 通过[aclnnConvolutionBackward](../convolution_backward/docs/aclnnConvolutionBackward.md)接口方式调用Conv3DBackpropFilterV2算子 | | 63 | | aclnn接口 | [test_aclnn_conv3d_backprop_filter_v2](examples/test_aclnn_conv3d_backprop_filter_v2.cpp) | 通过[aclnnConvolutionBackward](../convolution_backward/docs/aclnnConvolutionBackward.md)接口方式调用Conv3DBackpropFilterV2算子 | |
| 64 | - | ||
| @@ -73,9 +73,8 @@ | |||
| 73 | - N与C的维度必须为1。 | 73 | - N与C的维度必须为1。 |
| 74 | - W、H和D维度的取值范围必须在 [1,255] 之间。 | 74 | - W、H和D维度的取值范围必须在 [1,255] 之间。 |
| 75 | 75 | ||
| 76 | - | ||
| 77 | ## 调用说明 | 76 | ## 调用说明 |
| 78 | 77 | ||
| 79 | | 调用方式 | 样例代码 | 说明 | | 78 | | 调用方式 | 样例代码 | 说明 | |
| 80 | | ----------- | ------------------- | ---------- | | 79 | | ----------- | ------------------- | ---------- | |
| 81 | -| aclnn接口 | [test_aclnn_conv3d_backprop_input_v2](examples/test_aclnn_conv3d_backprop_input_v2.cpp) | 通过[aclnnConvolutionBackward](../convolution_backward/docs/aclnnConvolutionBackward.md)接口方式调用Conv3DBackpropInputV2算子 | | 80 | +| aclnn接口 | [test_aclnn_conv3d_backprop_input_v2](examples/test_aclnn_conv3d_backprop_input_v2.cpp) | 通过[aclnnConvolutionBackward](../convolution_backward/docs/aclnnConvolutionBackward.md)接口方式调用Conv3DBackpropInputV2算子 | |
| @@ -67,7 +67,6 @@ | |||
| 67 | | >1 |FLOAT16/BFLOAT16/FLOAT32| NCDHW | NDHWC | NCDHW | | 67 | | >1 |FLOAT16/BFLOAT16/FLOAT32| NCDHW | NDHWC | NCDHW | |
| 68 | | >1 |FLOAT16/BFLOAT16/FLOAT32| NCDHW | DHWCN | NCDHW | | 68 | | >1 |FLOAT16/BFLOAT16/FLOAT32| NCDHW | DHWCN | NCDHW | |
| 69 | 69 | ||
| 70 | - | ||
| 71 | ## 约束说明 | 70 | ## 约束说明 |
| 72 | 71 | ||
| 73 | * filter | 72 | * filter |
| @@ -83,11 +82,10 @@ | |||
| 83 | - N与C的维度必须为1。 | 82 | - N与C的维度必须为1。 |
| 84 | - W、H和D维度的取值范围必须在 [1,255] 之间。 | 83 | - W、H和D维度的取值范围必须在 [1,255] 之间。 |
| 85 | * output_padding | 84 | * output_padding |
| 86 | - - N和C维度必须为0,仅允许在深度、高度、宽度方向上添加。 | 85 | + - N和C维度必须为0,仅允许在深度、高度、宽度方向上添加。 |
| 87 | - | ||
| 88 | 86 | ||
| 89 | ## 调用说明 | 87 | ## 调用说明 |
| 90 | 88 | ||
| 91 | | 调用方式 | 样例代码 | 说明 | | 89 | | 调用方式 | 样例代码 | 说明 | |
| 92 | | ----------- | ------------------- | ---------- | | 90 | | ----------- | ------------------- | ---------- | |
| 93 | -| aclnn接口 | [test_aclnn_conv3d_transpose_v2](examples/test_aclnn_conv3d_transpose_v2.cpp) | 通过[aclnnConvolution](../convolution_forward/docs/aclnnConvolution.md)接口方式调用Conv3DTransposeV2算子 | | 91 | +| aclnn接口 | [test_aclnn_conv3d_transpose_v2](examples/test_aclnn_conv3d_transpose_v2.cpp) | 通过[aclnnConvolution](../convolution_forward/docs/aclnnConvolution.md)接口方式调用Conv3DTransposeV2算子 | |
| @@ -244,7 +244,6 @@ | |||
| 244 | - 当 `x` 和 `filter` 数据类型是 `HIFLOAT8` 时,`bias` 数据类型会转成 `FLOAT` 参与计算。 | 244 | - 当 `x` 和 `filter` 数据类型是 `HIFLOAT8` 时,`bias` 数据类型会转成 `FLOAT` 参与计算。 |
| 245 | - 不支持 `scale` 参数。 | 245 | - 不支持 `scale` 参数。 |
| 246 | 246 | ||
| 247 | - | ||
| 248 | <table> | 247 | <table> |
| 249 | <tr> | 248 | <tr> |
| 250 | <th style="text-align:center; width:80px">张量</th> | 249 | <th style="text-align:center; width:80px">张量</th> |
| @@ -301,7 +300,6 @@ | |||
| 301 | 300 | ||
| 302 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 | 301 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 |
| 303 | 302 | ||
| 304 | - | ||
| 305 | ## 调用说明 | 303 | ## 调用说明 |
| 306 | 304 | ||
| 307 | | 调用方式 | 调用样例 | 说明 | | 305 | | 调用方式 | 调用样例 | 说明 | |
| @@ -224,7 +224,7 @@ aclnnStatus aclnnConvTbcBackward( | |||
| 224 | <td>输出</td> | 224 | <td>输出</td> |
| 225 | <td>偏置b对L的梯度。</td> | 225 | <td>偏置b对L的梯度。</td> |
| 226 | <td> | 226 | <td> |
| 227 | - <ul><li>支持空Tensor。</li> | 227 | + <ul><li>支持空Tensor。</li></ul> |
| 228 | <li>数据类型与bias类型一致。</li> | 228 | <li>数据类型与bias类型一致。</li> |
| 229 | <li>shape为(C<sub>out</sub>)。</li> | 229 | <li>shape为(C<sub>out</sub>)。</li> |
| 230 | </td> | 230 | </td> |
| @@ -357,7 +357,6 @@ aclnnStatus aclnnConvTbcBackward( | |||
| 357 | </tbody> | 357 | </tbody> |
| 358 | </table> | 358 | </table> |
| 359 | 359 | ||
| 360 | - | ||
| 361 | - **返回值:** | 360 | - **返回值:** |
| 362 | 361 | ||
| 363 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 362 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -119,7 +119,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 119 | <ul><li>支持空Tensor。</li> | 119 | <ul><li>支持空Tensor。</li> |
| 120 | <li>数据类型与input、weight满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推关系</a>和<a href="#约束说明" target="_blank">约束说明</a>)。</li> | 120 | <li>数据类型与input、weight满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推关系</a>和<a href="#约束说明" target="_blank">约束说明</a>)。</li> |
| 121 | <li>shape不支持broadcast,要求和input、weight满足卷积输入输出shape的推导关系。</li> | 121 | <li>shape不支持broadcast,要求和input、weight满足卷积输入输出shape的推导关系。</li> |
| 122 | - <li>数据格式需要与input、gradInput一致。</li> | 122 | + <li>数据格式需要与input、gradInput一致。</li></ul> |
| 123 | </td> | 123 | </td> |
| 124 | <td>FLOAT、FLOAT16、BFLOAT16</td> | 124 | <td>FLOAT、FLOAT16、BFLOAT16</td> |
| 125 | <td>NCL、NCHW、NCDHW</td> | 125 | <td>NCL、NCHW、NCDHW</td> |
| @@ -134,7 +134,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 134 | <ul><li>支持空Tensor。</li> | 134 | <ul><li>支持空Tensor。</li> |
| 135 | <li>数据类型与gradOutput、weight满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推关系</a>和<a href="#约束说明" target="_blank">约束说明</a>)。</li> | 135 | <li>数据类型与gradOutput、weight满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推关系</a>和<a href="#约束说明" target="_blank">约束说明</a>)。</li> |
| 136 | <li>shape不支持broadcast,要求和gradOutput、weight满足卷积输入输出shape的推导关系。</li> | 136 | <li>shape不支持broadcast,要求和gradOutput、weight满足卷积输入输出shape的推导关系。</li> |
| 137 | - <li>数据格式需要与gradOutput、gradInput一致。</li> | 137 | + <li>数据格式需要与gradOutput、gradInput一致。</li></ul> |
| 138 | </td> | 138 | </td> |
| 139 | <td>FLOAT、FLOAT16、BFLOAT16</td> | 139 | <td>FLOAT、FLOAT16、BFLOAT16</td> |
| 140 | <td>NCL、NCHW、NCDHW</td> | 140 | <td>NCL、NCHW、NCDHW</td> |
| @@ -149,7 +149,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 149 | <ul><li>支持空Tensor。</li> | 149 | <ul><li>支持空Tensor。</li> |
| 150 | <li>数据类型与gradOutput、input满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推关系</a>和<a href="#约束说明" target="_blank">约束说明</a>)。</li> | 150 | <li>数据类型与gradOutput、input满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推关系</a>和<a href="#约束说明" target="_blank">约束说明</a>)。</li> |
| 151 | <li>shape不支持broadcast,要求和gradOutput、input满足卷积输入输出shape的推导关系。</li> | 151 | <li>shape不支持broadcast,要求和gradOutput、input满足卷积输入输出shape的推导关系。</li> |
| 152 | - <li>数据格式需要与gradWeight一致。</li> | 152 | + <li>数据格式需要与gradWeight一致。</li></ul> |
| 153 | </td> | 153 | </td> |
| 154 | <td>FLOAT、FLOAT16、BFLOAT16</td> | 154 | <td>FLOAT、FLOAT16、BFLOAT16</td> |
| 155 | <td>NCL、NCHW、NCDHW</td> | 155 | <td>NCL、NCHW、NCDHW</td> |
| @@ -163,7 +163,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 163 | <td> | 163 | <td> |
| 164 | <ul><li>数组长度是1。</li> | 164 | <ul><li>数组长度是1。</li> |
| 165 | <li>在普通卷积中等于[weight.shape[0]],在转置卷积中等于[weight.shape[1] * groups]。</li> | 165 | <li>在普通卷积中等于[weight.shape[0]],在转置卷积中等于[weight.shape[1] * groups]。</li> |
| 166 | - <li>空Tensor场景下,当outputMask指定偏差的梯度需要计算时,biasSizes不能为nullptr。</li> | 166 | + <li>空Tensor场景下,当outputMask指定偏差的梯度需要计算时,biasSizes不能为nullptr。</li></ul> |
| 167 | </td> | 167 | </td> |
| 168 | <td>INT64</td> | 168 | <td>INT64</td> |
| 169 | <td>-</td> | 169 | <td>-</td> |
| @@ -176,7 +176,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 176 | <td>反向传播过程中卷积核在输入上移动的步长。</td> | 176 | <td>反向传播过程中卷积核在输入上移动的步长。</td> |
| 177 | <td> | 177 | <td> |
| 178 | <ul><li>对于一维卷积反向,数组长度必须为1。</li> | 178 | <ul><li>对于一维卷积反向,数组长度必须为1。</li> |
| 179 | - <li>数组长度为weight维度减2,数值必须大于0。</li> | 179 | + <li>数组长度为weight维度减2,数值必须大于0。</li></ul> |
| 180 | </td> | 180 | </td> |
| 181 | <td>INT64</td> | 181 | <td>INT64</td> |
| 182 | <td>-</td> | 182 | <td>-</td> |
| @@ -190,7 +190,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 190 | <td> | 190 | <td> |
| 191 | <ul><li>对于一维卷积反向,数组长度必须为1。</li> | 191 | <ul><li>对于一维卷积反向,数组长度必须为1。</li> |
| 192 | <li>数组长度可以为weight维度减2,在2d场景下数组长度可以为4。</li> | 192 | <li>数组长度可以为weight维度减2,在2d场景下数组长度可以为4。</li> |
| 193 | - <li>数值必须大于等于0。</li> | 193 | + <li>数值必须大于等于0。</li></ul> |
| 194 | </td> | 194 | </td> |
| 195 | <td>INT64</td> | 195 | <td>INT64</td> |
| 196 | <td>-</td> | 196 | <td>-</td> |
| @@ -204,7 +204,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 204 | <td> | 204 | <td> |
| 205 | <ul><li>对于一维卷积反向,数组长度必须为1。</li> | 205 | <ul><li>对于一维卷积反向,数组长度必须为1。</li> |
| 206 | <li>数组长度可以为weight维度减2。</li> | 206 | <li>数组长度可以为weight维度减2。</li> |
| 207 | - <li>数值必须大于0。</li> | 207 | + <li>数值必须大于0。</li></ul> |
| 208 | </td> | 208 | </td> |
| 209 | <td>INT64</td> | 209 | <td>INT64</td> |
| 210 | <td>-</td> | 210 | <td>-</td> |
| @@ -227,7 +227,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 227 | <td>反向传播过程中对于输出填充。</td> | 227 | <td>反向传播过程中对于输出填充。</td> |
| 228 | <td> | 228 | <td> |
| 229 | <ul><li>数组长度可以为weight维度减2,各维度的数值范围满足[0,stride对应维度数值)。</li> | 229 | <ul><li>数组长度可以为weight维度减2,各维度的数值范围满足[0,stride对应维度数值)。</li> |
| 230 | - <li>transposed为False场景下,要求每个元素值为0。</li> | 230 | + <li>transposed为False场景下,要求每个元素值为0。</li></ul> |
| 231 | </td> | 231 | </td> |
| 232 | <td>INT64</td> | 232 | <td>INT64</td> |
| 233 | <td>-</td> | 233 | <td>-</td> |
| @@ -251,7 +251,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 251 | <td>输入</td> | 251 | <td>输入</td> |
| 252 | <td> | 252 | <td> |
| 253 | <ul><li>输出掩码参数, 指定输出中是否包含输入、权重、偏差的梯度。</li> | 253 | <ul><li>输出掩码参数, 指定输出中是否包含输入、权重、偏差的梯度。</li> |
| 254 | - <li>反向传播过程输出掩码参数为True对应位置的梯度。</li> | 254 | + <li>反向传播过程输出掩码参数为True对应位置的梯度。</li></ul> |
| 255 | </td> | 255 | </td> |
| 256 | <td>-</td> | 256 | <td>-</td> |
| 257 | <td>-</td> | 257 | <td>-</td> |
| @@ -269,7 +269,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 269 | <ul><li>0:KEEP_DTYPE,保持输入的数据类型进行计算。</li> | 269 | <ul><li>0:KEEP_DTYPE,保持输入的数据类型进行计算。</li> |
| 270 | <li>1:ALLOW_FP32_DOWN_PRECISION,允许将输入数据降精度计算。</li> | 270 | <li>1:ALLOW_FP32_DOWN_PRECISION,允许将输入数据降精度计算。</li> |
| 271 | <li>2:USE_FP16,允许转换为数据类型FLOAT16进行计算。当输入数据类型是FLOAT,转换为FLOAT16计算。</li> | 271 | <li>2:USE_FP16,允许转换为数据类型FLOAT16进行计算。当输入数据类型是FLOAT,转换为FLOAT16计算。</li> |
| 272 | - <li>3:USE_HF32,允许转换为数据类型HFLOAT32计算。当输入是FLOAT16,仍使用FLOAT16计算。</li> | 272 | + <li>3:USE_HF32,允许转换为数据类型HFLOAT32计算。当输入是FLOAT16,仍使用FLOAT16计算。</li></ul></ul> |
| 273 | </td> | 273 | </td> |
| 274 | <td>-</td> | 274 | <td>-</td> |
| 275 | <td>-</td> | 275 | <td>-</td> |
| @@ -283,7 +283,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 283 | <td> | 283 | <td> |
| 284 | <ul><li>支持空Tensor。</li> | 284 | <ul><li>支持空Tensor。</li> |
| 285 | <li>数据类型与input保持一致。</li> | 285 | <li>数据类型与input保持一致。</li> |
| 286 | - <li>数据格式需要与input、gradOutput一致。</li> | 286 | + <li>数据格式需要与input、gradOutput一致。</li></ul> |
| 287 | </td> | 287 | </td> |
| 288 | <td>FLOAT、FLOAT16、BFLOAT16</td> | 288 | <td>FLOAT、FLOAT16、BFLOAT16</td> |
| 289 | <td>NCL、NCHW、NCDHW</td> | 289 | <td>NCL、NCHW、NCDHW</td> |
| @@ -296,7 +296,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 296 | <td>卷积核权重张量w对L的梯度。</td> | 296 | <td>卷积核权重张量w对L的梯度。</td> |
| 297 | <td> | 297 | <td> |
| 298 | <ul><li>支持空Tensor。</li> | 298 | <ul><li>支持空Tensor。</li> |
| 299 | - <li>数据格式需要与weight一致。</li> | 299 | + <li>数据格式需要与weight一致。</li></ul> |
| 300 | </td> | 300 | </td> |
| 301 | <td>FLOAT、FLOAT16、BFLOAT16</td> | 301 | <td>FLOAT、FLOAT16、BFLOAT16</td> |
| 302 | <td>NCL、NCHW、NCDHW</td> | 302 | <td>NCL、NCHW、NCDHW</td> |
| @@ -309,7 +309,7 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 309 | <td>偏置b对L的梯度。</td> | 309 | <td>偏置b对L的梯度。</td> |
| 310 | <td> | 310 | <td> |
| 311 | <ul><li>支持空Tensor。</li> | 311 | <ul><li>支持空Tensor。</li> |
| 312 | - <li>数据类型与gradOutput一致。</li> | 312 | + <li>数据类型与gradOutput一致。</li></ul> |
| 313 | </td> | 313 | </td> |
| 314 | <td>FLOAT、FLOAT16、BFLOAT16</td> | 314 | <td>FLOAT、FLOAT16、BFLOAT16</td> |
| 315 | <td>ND</td> | 315 | <td>ND</td> |
| @@ -398,7 +398,6 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 398 | 398 | ||
| 399 | </table> | 399 | </table> |
| 400 | 400 | ||
| 401 | - | ||
| 402 | ## aclnnConvolutionBackward | 401 | ## aclnnConvolutionBackward |
| 403 | 402 | ||
| 404 | - **参数说明:** | 403 | - **参数说明:** |
| @@ -435,7 +434,6 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 435 | </tbody> | 434 | </tbody> |
| 436 | </table> | 435 | </table> |
| 437 | 436 | ||
| 438 | - | ||
| 439 | - **返回值:** | 437 | - **返回值:** |
| 440 | 438 | ||
| 441 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 439 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -590,7 +588,6 @@ aclnnStatus aclnnConvolutionBackward( | |||
| 590 | 588 | ||
| 591 | 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击[Link](https://www.hiascend.com/support)获取技术支持。 | 589 | 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击[Link](https://www.hiascend.com/support)获取技术支持。 |
| 592 | 590 | ||
| 593 | - | ||
| 594 | ## 调用示例 | 591 | ## 调用示例 |
| 595 | 592 | ||
| 596 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 593 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| @@ -65,6 +65,7 @@ | |||
| 65 | - cubeMathType 为 1(ALLOW_FP32_DOWN_PRECISION) 时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。 | 65 | - cubeMathType 为 1(ALLOW_FP32_DOWN_PRECISION) 时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。 |
| 66 | - cubeMathType 为 2(USE_FP16) 时,当输入是 BFLOAT16 不支持该选项。 | 66 | - cubeMathType 为 2(USE_FP16) 时,当输入是 BFLOAT16 不支持该选项。 |
| 67 | - cubeMathType 为 3(USE_HF32) 时,当输入是 FLOAT 转换为 HFLOAT32 计算。 | 67 | - cubeMathType 为 3(USE_HF32) 时,当输入是 FLOAT 转换为 HFLOAT32 计算。 |
| 68 | + | ||
| 68 | ## 约束说明 | 69 | ## 约束说明 |
| 69 | 70 | ||
| 70 | * <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>:input, weight, bias 中每一组 tensor 的每一维大小都应不大于 1000000。 | 71 | * <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>:input, weight, bias 中每一组 tensor 的每一维大小都应不大于 1000000。 |
| @@ -93,7 +93,9 @@ aclnnStatus aclnnConvDepthwise2d( | |||
| 93 | <td>kernelSize(aclIntArray*)</td> | 93 | <td>kernelSize(aclIntArray*)</td> |
| 94 | <td>输入</td> | 94 | <td>输入</td> |
| 95 | <td>卷积核尺寸。</td> | 95 | <td>卷积核尺寸。</td> |
| 96 | - <td><ul><li>(INT64, INT64)型元组。</li><li>数值为weight的H、W两维的数值。</li></td> | 96 | + <td><ul> |
| 97 | + <li>(INT64, INT64)型元组。</li><li>数值为weight的H、W两维的数值。</li></ul> | ||
| 98 | + </td> | ||
| 97 | <td>INT64</td> | 99 | <td>INT64</td> |
| 98 | <td>-</td> | 100 | <td>-</td> |
| 99 | <td>-</td> | 101 | <td>-</td> |
| @@ -192,12 +194,11 @@ aclnnStatus aclnnConvDepthwise2d( | |||
| 192 | <col style="width:1050px"> | 194 | <col style="width:1050px"> |
| 193 | </colgroup> | 195 | </colgroup> |
| 194 | <thead> | 196 | <thead> |
| 195 | - | ||
| 196 | <tr> | 197 | <tr> |
| 197 | <td>返回值</td> | 198 | <td>返回值</td> |
| 198 | <td>错误码</td> | 199 | <td>错误码</td> |
| 199 | <td>描述</td> | 200 | <td>描述</td> |
| 200 | - </tr> | 201 | + </tr></thead> |
| 201 | <tr> | 202 | <tr> |
| 202 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> | 203 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> |
| 203 | <td align="left">161001</td> | 204 | <td align="left">161001</td> |
| @@ -305,7 +306,7 @@ aclnnStatus aclnnConvDepthwise2d( | |||
| 305 | <li>为 1(ALLOW_FP32_DOWN_PRECISION)时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。</li> | 306 | <li>为 1(ALLOW_FP32_DOWN_PRECISION)时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。</li> |
| 306 | <li>为 2(USE_FP16)时,当输入是 BFLOAT16 不支持该选项。</li> | 307 | <li>为 2(USE_FP16)时,当输入是 BFLOAT16 不支持该选项。</li> |
| 307 | <li>为 3(USE_HF32)时,当输入是 FLOAT 转换为 HFLOAT32 计算。</li> | 308 | <li>为 3(USE_HF32)时,当输入是 FLOAT 转换为 HFLOAT32 计算。</li> |
| 308 | - <ul> | 309 | + </ul> |
| 309 | </td> | 310 | </td> |
| 310 | <td> | 311 | <td> |
| 311 | <ul> | 312 | <ul> |
| @@ -68,7 +68,7 @@ aclnnStatus aclnnConvTbc( | |||
| 68 | <td>self(aclTensor*)</td> | 68 | <td>self(aclTensor*)</td> |
| 69 | <td>输入</td> | 69 | <td>输入</td> |
| 70 | <td>公式中的 self,表示卷积输入。</td> | 70 | <td>公式中的 self,表示卷积输入。</td> |
| 71 | - <td><ul></li><li>支持空 Tensor。</li><li>数据类型与 weight 的数据类型需满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>)。<li>shape 为(N,C<sub>in</sub>,H<sub>in</sub>)。</li></li><li>N≥0,C≥1,H≥0。</li></ul></td> | 71 | + <td><ul><li>支持空 Tensor。</li><li>数据类型与 weight 的数据类型需满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>)。<li>shape 为(N,C<sub>in</sub>,H<sub>in</sub>)。</li></li><li>N≥0,C≥1,H≥0。</li></ul></td> |
| 72 | <td>FLOAT、FLOAT16、BFLOAT16、HIFLOAT8</td> | 72 | <td>FLOAT、FLOAT16、BFLOAT16、HIFLOAT8</td> |
| 73 | <td>ND、NCL</td> | 73 | <td>ND、NCL</td> |
| 74 | <td>3</td> | 74 | <td>3</td> |
| @@ -158,12 +158,11 @@ aclnnStatus aclnnConvTbc( | |||
| 158 | <col style="width:1050px"> | 158 | <col style="width:1050px"> |
| 159 | </colgroup> | 159 | </colgroup> |
| 160 | <thead> | 160 | <thead> |
| 161 | - | ||
| 162 | <tr> | 161 | <tr> |
| 163 | <td>返回值</td> | 162 | <td>返回值</td> |
| 164 | <td>错误码</td> | 163 | <td>错误码</td> |
| 165 | <td>描述</td> | 164 | <td>描述</td> |
| 166 | - </tr> | 165 | + </tr></thead> |
| 167 | <tr> | 166 | <tr> |
| 168 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> | 167 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> |
| 169 | <td align="left">161001</td> | 168 | <td align="left">161001</td> |
| @@ -290,7 +289,7 @@ aclnnStatus aclnnConvTbc( | |||
| 290 | <li>为 1(ALLOW_FP32_DOWN_PRECISION)时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。</li> | 289 | <li>为 1(ALLOW_FP32_DOWN_PRECISION)时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。</li> |
| 291 | <li>为 2(USE_FP16)时,当输入是 BFLOAT16 不支持该选项。</li> | 290 | <li>为 2(USE_FP16)时,当输入是 BFLOAT16 不支持该选项。</li> |
| 292 | <li>为 3(USE_HF32)时,当输入是 FLOAT 转换为 HFLOAT32 计算。</li> | 291 | <li>为 3(USE_HF32)时,当输入是 FLOAT 转换为 HFLOAT32 计算。</li> |
| 293 | - <ul> | 292 | + </ul> |
| 294 | </td> | 293 | </td> |
| 295 | <td> | 294 | <td> |
| 296 | <ul> | 295 | <ul> |
| @@ -195,7 +195,10 @@ aclnnStatus aclnnConvolution( | |||
| 195 | <td>cubeMathType(int8_t)</td> | 195 | <td>cubeMathType(int8_t)</td> |
| 196 | <td>输入</td> | 196 | <td>输入</td> |
| 197 | <td>用于判断 Cube 单元应该使用哪种计算逻辑进行运算。</td> | 197 | <td>用于判断 Cube 单元应该使用哪种计算逻辑进行运算。</td> |
| 198 | - <td><ul><li>如果输入的数据类型存在<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>,该参数默认对互推导后的数据类型进行处理。</li><li>支持的枚举值如下:</li><ul><li> 0(KEEP_DTYPE):保持输入数据类型进行计算。</li></ul><ul><li> 1(ALLOW_FP32_DOWN_PRECISION):允许 FLOAT 降低精度计算,提升性能。</li></ul><ul><li> 2(USE_FP16):使用 FLOAT16 精度进行计算。</li></ul><ul><li> 3(USE_HF32):使用 HFLOAT32(混合精度)进行计算。</li></ul></td> | 198 | + <td><ul> |
| 199 | + <li>如果输入的数据类型存在<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>,该参数默认对互推导后的数据类型进行处理。</li> | ||
| 200 | + <li>支持的枚举值如下:</li></ul> | ||
| 201 | + <ul><li> 0(KEEP_DTYPE):保持输入数据类型进行计算。</li></ul><ul><li> 1(ALLOW_FP32_DOWN_PRECISION):允许 FLOAT 降低精度计算,提升性能。</li></ul><ul><li> 2(USE_FP16):使用 FLOAT16 精度进行计算。</li></ul><ul><li> 3(USE_HF32):使用 HFLOAT32(混合精度)进行计算。</li></ul></td> | ||
| 199 | <td>INT8</td> | 202 | <td>INT8</td> |
| 200 | <td>-</td> | 203 | <td>-</td> |
| 201 | <td>-</td> | 204 | <td>-</td> |
| @@ -235,12 +238,11 @@ aclnnStatus aclnnConvolution( | |||
| 235 | <col style="width:1050px"> | 238 | <col style="width:1050px"> |
| 236 | </colgroup> | 239 | </colgroup> |
| 237 | <thead> | 240 | <thead> |
| 238 | - | ||
| 239 | <tr> | 241 | <tr> |
| 240 | <td>返回值</td> | 242 | <td>返回值</td> |
| 241 | <td>错误码</td> | 243 | <td>错误码</td> |
| 242 | <td>描述</td> | 244 | <td>描述</td> |
| 243 | - </tr> | 245 | + </tr></thead> |
| 244 | <tr> | 246 | <tr> |
| 245 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> | 247 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> |
| 246 | <td align="left">161001</td> | 248 | <td align="left">161001</td> |
| @@ -414,7 +416,7 @@ aclnnStatus aclnnConvolution( | |||
| 414 | <li>为 1(ALLOW_FP32_DOWN_PRECISION)时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。</li> | 416 | <li>为 1(ALLOW_FP32_DOWN_PRECISION)时,当输入是 FLOAT 允许转换为 HFLOAT32 计算。</li> |
| 415 | <li>为 2(USE_FP16)时,当输入是 BFLOAT16 不支持该选项。</li> | 417 | <li>为 2(USE_FP16)时,当输入是 BFLOAT16 不支持该选项。</li> |
| 416 | <li>为 3(USE_HF32)时,当输入是 FLOAT 转换为 HFLOAT32 计算。</li> | 418 | <li>为 3(USE_HF32)时,当输入是 FLOAT 转换为 HFLOAT32 计算。</li> |
| 417 | - <ul> | 419 | + </ul> |
| 418 | </td> | 420 | </td> |
| 419 | <td> | 421 | <td> |
| 420 | <ul> | 422 | <ul> |
| @@ -430,7 +432,7 @@ aclnnStatus aclnnConvolution( | |||
| 430 | <li>为 1(ALLOW_FP32_DOWN_PRECISION) 时,当输入是 FLOAT 允许转换为 FLOAT16 计算。</li> | 432 | <li>为 1(ALLOW_FP32_DOWN_PRECISION) 时,当输入是 FLOAT 允许转换为 FLOAT16 计算。</li> |
| 431 | <li>为 2(USE_FP16) 时,当输入是 BFLOAT16 不支持该选项。</li> | 433 | <li>为 2(USE_FP16) 时,当输入是 BFLOAT16 不支持该选项。</li> |
| 432 | <li>为 3(USE_HF32) 时暂不支持。</li> | 434 | <li>为 3(USE_HF32) 时暂不支持。</li> |
| 433 | - <ul> | 435 | + </ul> |
| 434 | </td> | 436 | </td> |
| 435 | <td> | 437 | <td> |
| 436 | <ul> | 438 | <ul> |
| @@ -79,6 +79,7 @@ aclnnStatus aclnnQuantConvolution( | |||
| 79 | <th style="width:145px">维度(shape)</th> | 79 | <th style="width:145px">维度(shape)</th> |
| 80 | <th style="width:145px">非连续 Tensor</th> | 80 | <th style="width:145px">非连续 Tensor</th> |
| 81 | </tr> | 81 | </tr> |
| 82 | + <tr> | ||
| 82 | <td>input(aclTensor*)</td> | 83 | <td>input(aclTensor*)</td> |
| 83 | <td>输入</td> | 84 | <td>输入</td> |
| 84 | <td>公式中的 input,表示卷积输入。</td> | 85 | <td>公式中的 input,表示卷积输入。</td> |
| @@ -252,12 +253,11 @@ aclnnStatus aclnnQuantConvolution( | |||
| 252 | <col style="width:1050px"> | 253 | <col style="width:1050px"> |
| 253 | </colgroup> | 254 | </colgroup> |
| 254 | <thead> | 255 | <thead> |
| 255 | - | ||
| 256 | <tr> | 256 | <tr> |
| 257 | <td>返回值</td> | 257 | <td>返回值</td> |
| 258 | <td>错误码</td> | 258 | <td>错误码</td> |
| 259 | <td>描述</td> | 259 | <td>描述</td> |
| 260 | - </tr> | 260 | + </tr></thead> |
| 261 | <tr> | 261 | <tr> |
| 262 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> | 262 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> |
| 263 | <td align="left">161001</td> | 263 | <td align="left">161001</td> |
| @@ -398,7 +398,6 @@ aclnnStatus aclnnQuantConvolution( | |||
| 398 | <li>input, weight, bias, scale 中每一组 tensor 的每一维大小都应小于 1000000。</li> | 398 | <li>input, weight, bias, scale 中每一组 tensor 的每一维大小都应小于 1000000。</li> |
| 399 | </ul> | 399 | </ul> |
| 400 | </td> | 400 | </td> |
| 401 | - </td> | ||
| 402 | </tr> | 401 | </tr> |
| 403 | </tbody> | 402 | </tbody> |
| 404 | </table> | 403 | </table> |
| @@ -645,5 +644,3 @@ int main() { | |||
| 645 | return 0; | 644 | return 0; |
| 646 | } | 645 | } |
| 647 | ``` | 646 | ``` |
| 648 | - | ||
| 649 | - | ||
| @@ -19,7 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | - 计算公式: | 20 | - 计算公式: |
| 21 | 21 | ||
| 22 | - 假定输入(input)的 shape 是 $(N, C_{\text{in}}, D, H, W)$,weight 的 原shape 是 $(C_{\text{out}}, C_{\text{in}}, K_d, K_h, K_w)$,scale 的 shape 是 $(C_{\text{out}})$,bias 的 shape 是 $C_{\text{out}}$,输出(output)的 shape 是 $(N, C_{\text{out}}, D_{\text{out}}, H_{\text{out}}, W_{\text{out}})$,其中 $N$ 表示批次大小(batch size),$C$ 是通道数,$D$、$H$ 和 $W$ 分别是样本的深度、高度和宽度,$K_d$、$K_h$ 和 $K_w$ 分别是卷积核的深度、高度和宽度,那输出将被表示为: | 22 | + 假定输入(input)的 shape 是 $(N, C_{\text{in}}, D, H, W)$,weight 的原shape 是 $(C_{\text{out}}, C_{\text{in}}, K_d, K_h, K_w)$,scale 的 shape 是 $(C_{\text{out}})$,bias 的 shape 是 $C_{\text{out}}$,输出(output)的 shape 是 $(N, C_{\text{out}}, D_{\text{out}}, H_{\text{out}}, W_{\text{out}})$,其中 $N$ 表示批次大小(batch size),$C$ 是通道数,$D$、$H$ 和 $W$ 分别是样本的深度、高度和宽度,$K_d$、$K_h$ 和 $K_w$ 分别是卷积核的深度、高度和宽度,那输出将被表示为: |
| 23 | 23 | ||
| 24 | $$ | 24 | $$ |
| 25 | \text{output}(N_i, C_{\text{out}_j}, D_{\text{out}}, H_{\text{out}}, W_{\text{out}}) = \left[\sum_{k = 0}^{C_{\text{in}} - 1} \text{weight}(C_{\text{out}_j}, k) \star \text{input}(N_i, k)\right] \times \text{scale}(C_{\text{out}_j}) + \text{bias}(C_{\text{out}_j}) | 25 | \text{output}(N_i, C_{\text{out}_j}, D_{\text{out}}, H_{\text{out}}, W_{\text{out}}) = \left[\sum_{k = 0}^{C_{\text{in}} - 1} \text{weight}(C_{\text{out}_j}, k) \star \text{input}(N_i, k)\right] \times \text{scale}(C_{\text{out}_j}) + \text{bias}(C_{\text{out}_j}) |
| @@ -80,6 +80,7 @@ aclnnStatus aclnnQuantConvolutionWeightNz( | |||
| 80 | <th style="width:145px">维度(shape)</th> | 80 | <th style="width:145px">维度(shape)</th> |
| 81 | <th style="width:145px">非连续 Tensor</th> | 81 | <th style="width:145px">非连续 Tensor</th> |
| 82 | </tr> | 82 | </tr> |
| 83 | + <tr> | ||
| 83 | <td>input(aclTensor*)</td> | 84 | <td>input(aclTensor*)</td> |
| 84 | <td>输入</td> | 85 | <td>输入</td> |
| 85 | <td>公式中的 input,表示卷积输入。</td> | 86 | <td>公式中的 input,表示卷积输入。</td> |
| @@ -253,12 +254,11 @@ aclnnStatus aclnnQuantConvolutionWeightNz( | |||
| 253 | <col style="width:1050px"> | 254 | <col style="width:1050px"> |
| 254 | </colgroup> | 255 | </colgroup> |
| 255 | <thead> | 256 | <thead> |
| 256 | - | ||
| 257 | <tr> | 257 | <tr> |
| 258 | <td>返回值</td> | 258 | <td>返回值</td> |
| 259 | <td>错误码</td> | 259 | <td>错误码</td> |
| 260 | <td>描述</td> | 260 | <td>描述</td> |
| 261 | - </tr> | 261 | + </tr></thead> |
| 262 | <tr> | 262 | <tr> |
| 263 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> | 263 | <td align="left">ACLNN_ERR_PARAM_NULLPTR</td> |
| 264 | <td align="left">161001</td> | 264 | <td align="left">161001</td> |
| @@ -699,4 +699,4 @@ int main() { | |||
| 699 | Finalize(deviceId, stream); | 699 | Finalize(deviceId, stream); |
| 700 | return 0; | 700 | return 0; |
| 701 | } | 701 | } |
| 702 | -``` | 702 | +``` |
| @@ -596,4 +596,4 @@ int main() | |||
| 596 | aclFinalize(); | 596 | aclFinalize(); |
| 597 | return 0; | 597 | return 0; |
| 598 | } | 598 | } |
| 599 | -``` | 599 | +``` |
| @@ -110,4 +110,4 @@ | |||
| 110 | 110 | ||
| 111 | | 调用方式 | 样例代码 | 说明 | | 111 | | 调用方式 | 样例代码 | 说明 | |
| 112 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| | 112 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| |
| 113 | -| 图模式 | [test_geir_deformable_offsets](./examples/test_geir_deformable_offsets.cpp) | 通过[算子IR](./op_graph/deformable_offsets_proto.h)构图方式调用DeformableOffsets算子。 | | 113 | +| 图模式 | [test_geir_deformable_offsets](./examples/test_geir_deformable_offsets.cpp) | 通过[算子IR](./op_graph/deformable_offsets_proto.h)构图方式调用DeformableOffsets算子。 | |
| @@ -262,7 +262,6 @@ | |||
| 262 | - 对于 `filter` 输入,`H`、`W` 的大小应该在 [1, 511] 的范围内。`N` 维度大小应该大于等于 0(等于 0 的场景仅在 `bias`、`output` 的 `N` 维度也等于 0 时支持),`C` 维度大小的支持情况与输入 `x` 的 `C` 维度一致。 | 262 | - 对于 `filter` 输入,`H`、`W` 的大小应该在 [1, 511] 的范围内。`N` 维度大小应该大于等于 0(等于 0 的场景仅在 `bias`、`output` 的 `N` 维度也等于 0 时支持),`C` 维度大小的支持情况与输入 `x` 的 `C` 维度一致。 |
| 263 | - `bias`和`scale`维度大小应该与`filter`的`N`维度大小一致。 | 263 | - `bias`和`scale`维度大小应该与`filter`的`N`维度大小一致。 |
| 264 | 264 | ||
| 265 | - | ||
| 266 | <table> | 265 | <table> |
| 267 | <tr> | 266 | <tr> |
| 268 | <th style="text-align:center; width:80px">张量</th> | 267 | <th style="text-align:center; width:80px">张量</th> |
| @@ -282,6 +281,7 @@ | |||
| 282 | <td style="text-align:center">INT8</td> | 281 | <td style="text-align:center">INT8</td> |
| 283 | <td style="text-align:center">FLOAT16/INT8</td> | 282 | <td style="text-align:center">FLOAT16/INT8</td> |
| 284 | </tr> | 283 | </tr> |
| 284 | + <tr> | ||
| 285 | <td style="text-align:center">HIFLOAT8</td> | 285 | <td style="text-align:center">HIFLOAT8</td> |
| 286 | <td style="text-align:center">HIFLOAT8</td> | 286 | <td style="text-align:center">HIFLOAT8</td> |
| 287 | <td style="text-align:center">FLOAT</td> | 287 | <td style="text-align:center">FLOAT</td> |
| @@ -324,7 +324,6 @@ | |||
| 324 | 324 | ||
| 325 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 | 325 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 |
| 326 | 326 | ||
| 327 | - | ||
| 328 | ## 调用说明 | 327 | ## 调用说明 |
| 329 | 328 | ||
| 330 | | 调用方式 | 调用样例 | 说明 | | 329 | | 调用方式 | 调用样例 | 说明 | |
| @@ -58,7 +58,6 @@ | |||
| 58 | | >1 | FLOAT16/FLOAT32/BFLOAT16/INT8 | NCDHW | NCDHW | NCDHW | | 58 | | >1 | FLOAT16/FLOAT32/BFLOAT16/INT8 | NCDHW | NCDHW | NCDHW | |
| 59 | | >1 | FLOAT16/FLOAT32/BFLOAT16/INT8 | NCDHW | NDHWC | NCDHW | | 59 | | >1 | FLOAT16/FLOAT32/BFLOAT16/INT8 | NCDHW | NDHWC | NCDHW | |
| 60 | 60 | ||
| 61 | - | ||
| 62 | ## 约束说明 | 61 | ## 约束说明 |
| 63 | 62 | ||
| 64 | * x | 63 | * x |
| @@ -77,4 +76,5 @@ | |||
| 77 | - W、H维度的取值范围必须在 [1,255] 之间。 | 76 | - W、H维度的取值范围必须在 [1,255] 之间。 |
| 78 | - D维度必须为1 | 77 | - D维度必须为1 |
| 79 | * output_padding | 78 | * output_padding |
| 80 | - - N和C维度必须为0,仅允许在深度、高度、宽度方向上添加。 | 79 | + - N和C维度必须为0,仅允许在深度、高度、宽度方向上添加。 |
| 80 | + | ||
| @@ -175,14 +175,12 @@ | |||
| 175 | 175 | ||
| 176 | ## 约束说明 | 176 | ## 约束说明 |
| 177 | 177 | ||
| 178 | - | ||
| 179 | - Ascend 950PR/Ascend 950DT : | 178 | - Ascend 950PR/Ascend 950DT : |
| 180 | - `x` 的数据类型必须与 `filter` 一致。`N` 维度大小应该大于等于 0。`D`、`H`、`W` 维度大小应该大于等于 0(等于 0 的场景仅在输出 `y` 的 `D`、`H`、`W` 维度也等于 0 时支持)。`C` 维度大小应该大于等于 0(等于 0 的场景仅在输出 `y` 的任意维度也等于 0 时支持)。 | 179 | - `x` 的数据类型必须与 `filter` 一致。`N` 维度大小应该大于等于 0。`D`、`H`、`W` 维度大小应该大于等于 0(等于 0 的场景仅在输出 `y` 的 `D`、`H`、`W` 维度也等于 0 时支持)。`C` 维度大小应该大于等于 0(等于 0 的场景仅在输出 `y` 的任意维度也等于 0 时支持)。 |
| 181 | - 对于 `filter` 输入,`H`、`W` 的大小应该在 [1, 511] 的范围内, `D`维度大小应该在[1, 100000]范围内。`N` 维度大小应该大于等于 0(等于 0 的场景仅在输入 `bias`、输出 `y` 的 `N` 维度也等于 0 时支持),`C` 维度大小的支持情况与输入 `x` 的 `C` 维度 / groups 大小一致。 | 180 | - 对于 `filter` 输入,`H`、`W` 的大小应该在 [1, 511] 的范围内, `D`维度大小应该在[1, 100000]范围内。`N` 维度大小应该大于等于 0(等于 0 的场景仅在输入 `bias`、输出 `y` 的 `N` 维度也等于 0 时支持),`C` 维度大小的支持情况与输入 `x` 的 `C` 维度 / groups 大小一致。 |
| 182 | - `bias`和`scale`维度大小应该与`filter`的`N`维度大小一致。 | 181 | - `bias`和`scale`维度大小应该与`filter`的`N`维度大小一致。 |
| 183 | - 支持的数据类型组合入下表: | 182 | - 支持的数据类型组合入下表: |
| 184 | 183 | ||
| 185 | - | ||
| 186 | <table> | 184 | <table> |
| 187 | <tr> | 185 | <tr> |
| 188 | <th style="text-align:center; width:80px">张量</th> | 186 | <th style="text-align:center; width:80px">张量</th> |
| @@ -234,7 +232,6 @@ | |||
| 234 | 232 | ||
| 235 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 | 233 | - 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 [Link](https://www.hiascend.com/support) 获取技术支持。 |
| 236 | 234 | ||
| 237 | - | ||
| 238 | ## 调用说明 | 235 | ## 调用说明 |
| 239 | 236 | ||
| 240 | | 调用方式 | 调用样例 | 说明 | | 237 | | 调用方式 | 调用样例 | 说明 | |
| @@ -5,6 +5,7 @@ CANN Simulator是一款面向算子开发场景的SoC级芯片仿真工具,用 | |||
| 5 | # 主要功能 | 5 | # 主要功能 |
| 6 | 6 | ||
| 7 | 该工具与板上运行保持二进制兼容(同一 kernel可同时在仿真和AI处理器执行),主要用途如下: | 7 | 该工具与板上运行保持二进制兼容(同一 kernel可同时在仿真和AI处理器执行),主要用途如下: |
| 8 | + | ||
| 8 | * 精度仿真:输出bit级精度结果,协助用户完成算子的精度验证。 | 9 | * 精度仿真:输出bit级精度结果,协助用户完成算子的精度验证。 |
| 9 | * 性能仿真:输出指令流水图,协助用户定位算子性能瓶颈问题。 | 10 | * 性能仿真:输出指令流水图,协助用户定位算子性能瓶颈问题。 |
| 10 | 11 | ||
| @@ -32,7 +33,8 @@ CANN Simulator集成在CANN toolkit包里,参考[环境部署](../context/quic | |||
| 32 | 33 | ||
| 33 | ## 算子编译 | 34 | ## 算子编译 |
| 34 | 35 | ||
| 35 | -* 参考[算子调用](../invocation/quick_op_invocation.md)完成add_example的算子编译和安装 | 36 | +* 参考[算子调用](../invocation/quick_op_invocation.md)完成add_example的算子编译和安装。 |
| 37 | + | ||
| 36 | ``` | 38 | ``` |
| 37 | # 说明:进入项目根目录,执行如下编译命令,命令仅供参考,详细可以查看算子调用的说明。 | 39 | # 说明:进入项目根目录,执行如下编译命令,命令仅供参考,详细可以查看算子调用的说明。 |
| 38 | bash build.sh --pkg --soc=Ascend950 --vendor_name=custom --ops=add_example | 40 | bash build.sh --pkg --soc=Ascend950 --vendor_name=custom --ops=add_example |
| @@ -134,7 +136,7 @@ cannsim record [options] user_app --user_options | |||
| 134 | 136 | ||
| 135 | |参数|可选/必选|说明| | 137 | |参数|可选/必选|说明| |
| 136 | | --- | --- | --- | | 138 | | --- | --- | --- | |
| 137 | -|-s <value> 或 --soc_version <value> [options]参数 | 必选 | 指定模拟目标芯片版本(如:Ascend950)。| | 139 | +|-s <value> 或--soc_version </value> [options]参数 | 必选 | 指定模拟目标芯片版本(如:Ascend950)。| |
| 138 | |-o <value> 或 --output <value> [options]参数 | 可选| 生成文件所在路径,可配置为绝对路径或者相对路径,并且执行工具的用户需要具有读写权限。如果未指定路径,则默认在当前目录下保存数据。| | 140 | |-o <value> 或 --output <value> [options]参数 | 可选| 生成文件所在路径,可配置为绝对路径或者相对路径,并且执行工具的用户需要具有读写权限。如果未指定路径,则默认在当前目录下保存数据。| |
| 139 | |-g 或 --gen-report[options]参数 | 可选 | 启用仿真完成后是否进行自动解析,并生成分析报告。默认不自动解析。| | 141 | |-g 或 --gen-report[options]参数 | 可选 | 启用仿真完成后是否进行自动解析,并生成分析报告。默认不自动解析。| |
| 140 | |user_app|必选|算子可执行文件。| | 142 | |user_app|必选|算子可执行文件。| |
| @@ -250,7 +252,7 @@ cannsim report [options] | |||
| 250 | |MTE1|数据搬运流水,数据搬运方向为:L1 ->{L0A/L0B, UBUF}。| | 252 | |MTE1|数据搬运流水,数据搬运方向为:L1 ->{L0A/L0B, UBUF}。| |
| 251 | |MTE2|数据搬运流水,数据搬运方向为:{DDR/GM, L2} ->{L1, L0A/B, UBUF}。| | 253 | |MTE2|数据搬运流水,数据搬运方向为:{DDR/GM, L2} ->{L1, L0A/B, UBUF}。| |
| 252 | |MTE3|数据搬运流水,数据搬运方向为:UBUF -> {DDR/GM, L2, L1}、L1->{DDR/L2}。| | 254 | |MTE3|数据搬运流水,数据搬运方向为:UBUF -> {DDR/GM, L2, L1}、L1->{DDR/L2}。| |
| 253 | - |FIXP|数据搬运流水,数据搬运方向为:FIXPIPE L0C -> OUT/L1。(仅 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 支持展示)| | 255 | + |FIXP|数据搬运流水,数据搬运方向为:FIXPIPE L0C -> OUT/L1。(仅 Atlas A2 训练系列产品 / Atlas A2 推理系列产品支持展示)| |
| 254 | |FLOWCTRL|控制流指令。| | 256 | |FLOWCTRL|控制流指令。| |
| 255 | |ICACHELOAD|查看未命中的ICache。| | 257 | |ICACHELOAD|查看未命中的ICache。| |
| 256 | 258 | ||
| @@ -602,7 +602,7 @@ | |||
| 602 | <td>✓</td> | 602 | <td>✓</td> |
| 603 | <td>✓</td> | 603 | <td>✓</td> |
| 604 | <td>AI Core</td> | 604 | <td>AI Core</td> |
| 605 | - <td>Swish激活函数的反向传播,用于计算Swish激活函数的梯度。</a>。</td> | 605 | + <td>Swish激活函数的反向传播,用于计算Swish激活函数的梯度。</td> |
| 606 | </tr> | 606 | </tr> |
| 607 | <tr> | 607 | <tr> |
| 608 | <td>activation</td> | 608 | <td>activation</td> |
| @@ -1,6 +1,6 @@ | |||
| 1 | # SwishGrad | 1 | # SwishGrad |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | | ---- | :----:| | 6 | | ---- | :----:| |
| @@ -44,7 +44,6 @@ $$ | |||
| 44 | <td>fp16、fp32、bf16</td> | 44 | <td>fp16、fp32、bf16</td> |
| 45 | <td>ND,FRACTAL_NZ,NC1HWC0</td> | 45 | <td>ND,FRACTAL_NZ,NC1HWC0</td> |
| 46 | </tr> | 46 | </tr> |
| 47 | - <tr> | ||
| 48 | <tr> | 47 | <tr> |
| 49 | <td>x</td> | 48 | <td>x</td> |
| 50 | <td>输入</td> | 49 | <td>输入</td> |
| @@ -1,6 +1,6 @@ | |||
| 1 | # GatherElements | 1 | # GatherElements |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | | ---- | :----:| | 6 | | ---- | :----:| |
| @@ -68,7 +68,8 @@ | |||
| 68 | <tr> | 68 | <tr> |
| 69 | <td>dim</td> | 69 | <td>dim</td> |
| 70 | <td>可选属性</td> | 70 | <td>可选属性</td> |
| 71 | - <td><ul><li>公式中的d。</li><li>默认值为0。</li></td> | 71 | + <td><ul><li>公式中的d。</li><li>默认值为0。</li></ul> |
| 72 | + </td> | ||
| 72 | <td>Int</td> | 73 | <td>Int</td> |
| 73 | <td>-</td> | 74 | <td>-</td> |
| 74 | </tr> | 75 | </tr> |
| @@ -83,8 +84,3 @@ | |||
| 83 | | 调用方式 | 调用样例 | 说明 | | 84 | | 调用方式 | 调用样例 | 说明 | |
| 84 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| | 85 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| |
| 85 | | aclnn调用 | [test_aclnn_gather_elements_v3.cpp](./examples/test_aclnn_gather_elements_v3.cpp) | 通过[test_aclnn_gather_elements_v3.cpp]接口方式调用GatherElements算子。 | | 86 | | aclnn调用 | [test_aclnn_gather_elements_v3.cpp](./examples/test_aclnn_gather_elements_v3.cpp) | 通过[test_aclnn_gather_elements_v3.cpp]接口方式调用GatherElements算子。 | |
| 86 | - | ||
| 87 | - | ||
| 88 | - | ||
| 89 | - | ||
| 90 | - | ||
| @@ -1,13 +1,17 @@ | |||
| 1 | # MatmulFp32算子 | 1 | # MatmulFp32算子 |
| 2 | 2 | ||
| 3 | -## 概述 | 3 | +## 概述 |
| 4 | + | ||
| 4 | 本样例的MatmulFP32算子实现使用自定义算子工程,其kernel包含两个模板:基础模板以及AL1全载模板。本工程默认使用基础模板,若要使用AL1全载模板,则需要在tiling阶段开启AL1全载的开关且同时满足AL1全载的tiling的条件。example的用例分别使用两个模板的精度均正常,示例通过msprof工具采集了模板的性能数据。 | 5 | 本样例的MatmulFP32算子实现使用自定义算子工程,其kernel包含两个模板:基础模板以及AL1全载模板。本工程默认使用基础模板,若要使用AL1全载模板,则需要在tiling阶段开启AL1全载的开关且同时满足AL1全载的tiling的条件。example的用例分别使用两个模板的精度均正常,示例通过msprof工具采集了模板的性能数据。 |
| 5 | -## 支持的AI处理器 | 6 | + |
| 7 | +## 支持的AI处理器 | ||
| 8 | + | ||
| 6 | | 产品 | 是否支持 | | 9 | | 产品 | 是否支持 | |
| 7 | | ---- | :----:| | 10 | | ---- | :----:| |
| 8 | |Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件|√| | 11 | |Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件|√| |
| 9 | 12 | ||
| 10 | ## 目录结构介绍 | 13 | ## 目录结构介绍 |
| 14 | + | ||
| 11 | ``` | 15 | ``` |
| 12 | ├── CMakeLists.txt // 编译工程文件 | 16 | ├── CMakeLists.txt // 编译工程文件 |
| 13 | ├── README.md // 算子样例工程介绍文件 | 17 | ├── README.md // 算子样例工程介绍文件 |
| @@ -57,57 +61,62 @@ | |||
| 57 | - 算子规格: | 61 | - 算子规格: |
| 58 | <table> | 62 | <table> |
| 59 | <tr><td rowspan="1" align="center">算子类型(OpType)</td><td colspan="4" align="center">Matmul</td></tr> | 63 | <tr><td rowspan="1" align="center">算子类型(OpType)</td><td colspan="4" align="center">Matmul</td></tr> |
| 60 | - </tr> | ||
| 61 | <tr><td rowspan="4" align="center">算子输入</td><td align="center">name</td><td align="center">shape</td><td align="center">data type</td><td align="center">format</td></tr> | 64 | <tr><td rowspan="4" align="center">算子输入</td><td align="center">name</td><td align="center">shape</td><td align="center">data type</td><td align="center">format</td></tr> |
| 62 | <tr><td align="center">a</td><td align="center">M * K</td><td align="center">float</td><td align="center">ND</td></tr> | 65 | <tr><td align="center">a</td><td align="center">M * K</td><td align="center">float</td><td align="center">ND</td></tr> |
| 63 | <tr><td align="center">b</td><td align="center">K * N</td><td align="center">float</td><td align="center">ND</td></tr> | 66 | <tr><td align="center">b</td><td align="center">K * N</td><td align="center">float</td><td align="center">ND</td></tr> |
| 64 | <tr><td align="center">bias</td><td align="center">N</td><td align="center">float</td><td align="center">ND</td></tr> | 67 | <tr><td align="center">bias</td><td align="center">N</td><td align="center">float</td><td align="center">ND</td></tr> |
| 65 | - </tr> | ||
| 66 | - </tr> | ||
| 67 | <tr><td rowspan="1" align="center">算子输出</td><td align="center">c</td><td align="center">M * N</td><td align="center">float</td><td align="center">ND</td></tr> | 68 | <tr><td rowspan="1" align="center">算子输出</td><td align="center">c</td><td align="center">M * N</td><td align="center">float</td><td align="center">ND</td></tr> |
| 68 | - </tr> | ||
| 69 | <tr><td rowspan="1" align="center">核函数名</td><td colspan="4" align="center">matmul_fp32</td></tr> | 69 | <tr><td rowspan="1" align="center">核函数名</td><td colspan="4" align="center">matmul_fp32</td></tr> |
| 70 | </table> | 70 | </table> |
| 71 | 71 | ||
| 72 | - | ||
| 73 | ## 编译运行 | 72 | ## 编译运行 |
| 74 | -- 配置环境变量 | ||
| 75 | -以命令行方式下载样例代码,master分支为例 | ||
| 76 | -```bash | ||
| 77 | -cd ${git_clone_path}/experimental/matmul/matmul_fp32 | ||
| 78 | -``` | ||
| 79 | -根据当前环境上CANN开发套件包(toolkit包+ops包)的安装方式,选择对应配置环境变量的命令。 | ||
| 80 | - - 默认路径,root用户安装CANN软件包 | ||
| 81 | - ```bash | ||
| 82 | - export ASCEND_INSTALL_PATH=/usr/local/Ascend/cann | ||
| 83 | - ``` | ||
| 84 | - - 默认路径,非root用户安装CANN软件包 | ||
| 85 | - ```bash | ||
| 86 | - export ASCEND_INSTALL_PATH=$HOME/Ascend/cann | ||
| 87 | - ``` | ||
| 88 | - - 指定路径install_path,安装CANN软件包 | ||
| 89 | - ```bash | ||
| 90 | - export ASCEND_INSTALL_PATH=${install_path}/cann | ||
| 91 | - ``` | ||
| 92 | 73 | ||
| 74 | +- 配置环境变量 | ||
| 75 | + | ||
| 76 | + 以命令行方式下载样例代码,master分支为例 | ||
| 77 | + | ||
| 78 | + ```bash | ||
| 79 | + cd ${git_clone_path}/experimental/matmul/matmul_fp32 | ||
| 80 | + ``` | ||
| 81 | + | ||
| 82 | + 根据当前环境上CANN开发套件包(toolkit包+ops包)的安装方式,选择对应配置环境变量的命令。 | ||
| 83 | + | ||
| 84 | + - 默认路径,root用户安装CANN软件包 | ||
| 85 | + | ||
| 86 | + ```bash | ||
| 87 | + export ASCEND_INSTALL_PATH=/usr/local/Ascend/cann | ||
| 88 | + ``` | ||
| 89 | + | ||
| 90 | + - 默认路径,非root用户安装CANN软件包 | ||
| 91 | + | ||
| 92 | + ```bash | ||
| 93 | + export ASCEND_INSTALL_PATH=$HOME/Ascend/cann | ||
| 94 | + ``` | ||
| 95 | + | ||
| 96 | + - 指定路径install_path,安装CANN软件包 | ||
| 97 | + | ||
| 98 | + ```bash | ||
| 99 | + export ASCEND_INSTALL_PATH=${install_path}/cann | ||
| 100 | + ``` | ||
| 93 | 101 | ||
| 94 | - 编译与安装自定义算子包 | 102 | - 编译与安装自定义算子包 |
| 95 | -```bash | ||
| 96 | -# 切换到工程根目录 | ||
| 97 | -cd ${git_clone_path} | ||
| 98 | -# 编译样例算子run包 | ||
| 99 | -bash build.sh --pkg --soc=ascend910b --vendor_name=custom --ops=matmul_fp32 --experimental | ||
| 100 | -#安装自定义算子run包 | ||
| 101 | -./build_out/cann-ops-nn-${vendor_name}-${arch}_linux.run | ||
| 102 | -``` | ||
| 103 | 103 | ||
| 104 | + ```bash | ||
| 105 | + # 切换到工程根目录 | ||
| 106 | + cd ${git_clone_path} | ||
| 107 | + # 编译样例算子run包 | ||
| 108 | + bash build.sh --pkg --soc=ascend910b --vendor_name=custom --ops=matmul_fp32 --experimental | ||
| 109 | + #安装自定义算子run包 | ||
| 110 | + ./build_out/cann-ops-nn-${vendor_name}-${arch}_linux.run | ||
| 111 | + ``` | ||
| 104 | 112 | ||
| 105 | - 编译+执行aclnn接口样例,采集样例性能: | 113 | - 编译+执行aclnn接口样例,采集样例性能: |
| 106 | -```bash | 114 | + |
| 107 | -# 切换matmul_fp32 aclnn执行用例目录 | 115 | + ```bash |
| 108 | -cd ${git_clone_path}/experimental/matmul/matmul_fp32/examples | 116 | + # 切换matmul_fp32 aclnn执行用例目录 |
| 109 | -# 编译+执行aclnn接口+采集性能数据 | 117 | + cd ${git_clone_path}/experimental/matmul/matmul_fp32/examples |
| 110 | -bash run.sh | 118 | + # 编译+执行aclnn接口+采集性能数据 |
| 111 | -# 切换aclnn用例性能数据目录 | 119 | + bash run.sh |
| 112 | -cd ${git_clone_path}/experimental/matmul/matmul_fp32/examples/output/msprof_result | 120 | + # 切换aclnn用例性能数据目录 |
| 113 | -``` | 121 | + cd ${git_clone_path}/experimental/matmul/matmul_fp32/examples/output/msprof_result |
| 122 | + ``` | ||
| @@ -18,6 +18,7 @@ | |||
| 18 | - 算子功能:根据indices从weight中获得一组被聚合的数,然后根据offsets的偏移和mode指定的聚合模式对获取的数进行max、sum、mean聚合。其余参数则更细化了计算过程的控制。 | 18 | - 算子功能:根据indices从weight中获得一组被聚合的数,然后根据offsets的偏移和mode指定的聚合模式对获取的数进行max、sum、mean聚合。其余参数则更细化了计算过程的控制。 |
| 19 | - shape推导方式如下: | 19 | - shape推导方式如下: |
| 20 | 假设: | 20 | 假设: |
| 21 | + | ||
| 21 | ``` | 22 | ``` |
| 22 | weight的shape为(numWeight, embeddingDim) | 23 | weight的shape为(numWeight, embeddingDim) |
| 23 | indices的shape为(indices) | 24 | indices的shape为(indices) |
| @@ -25,6 +26,7 @@ | |||
| 25 | ``` | 26 | ``` |
| 26 | 27 | ||
| 27 | - 当mode为sum模式: | 28 | - 当mode为sum模式: |
| 29 | + | ||
| 28 | ``` | 30 | ``` |
| 29 | y的shape 为 include_last_offset ? (offsets - 1, embeddingDim) : (offsets, embeddingDim) | 31 | y的shape 为 include_last_offset ? (offsets - 1, embeddingDim) : (offsets, embeddingDim) |
| 30 | offset2bag的shape 为 (indices,) | 32 | offset2bag的shape 为 (indices,) |
| @@ -33,6 +35,7 @@ | |||
| 33 | ``` | 35 | ``` |
| 34 | 36 | ||
| 35 | - 当mode为mean模式: | 37 | - 当mode为mean模式: |
| 38 | + | ||
| 36 | ``` | 39 | ``` |
| 37 | y的shape 为 include_last_offset? (offsets - 1, embeddingDim) : (offsets, embeddingDim) | 40 | y的shape 为 include_last_offset? (offsets - 1, embeddingDim) : (offsets, embeddingDim) |
| 38 | offset2bag的shape 为 (indices,) | 41 | offset2bag的shape 为 (indices,) |
| @@ -161,6 +164,7 @@ | |||
| 161 | 164 | ||
| 162 | - Atlas 训练系列产品:不支持BFLOAT16。 | 165 | - Atlas 训练系列产品:不支持BFLOAT16。 |
| 163 | - Kirin X90/Kirin 9030处理器系列产品:不支持BFLOAT16。 | 166 | - Kirin X90/Kirin 9030处理器系列产品:不支持BFLOAT16。 |
| 167 | + | ||
| 164 | ## 约束说明 | 168 | ## 约束说明 |
| 165 | 169 | ||
| 166 | 无 | 170 | 无 |
| @@ -1,6 +1,6 @@ | |||
| 1 | # ExpandIntoJaggedPermute | 1 | # ExpandIntoJaggedPermute |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | |产品 | 是否支持 | | 5 | |产品 | 是否支持 | |
| 6 | |:-------------------------|:----------:| | 6 | |:-------------------------|:----------:| |
| @@ -73,19 +73,18 @@ $$ | |||
| 73 | <tr> | 73 | <tr> |
| 74 | <td>outputSize</td> | 74 | <td>outputSize</td> |
| 75 | <td>属性</td> | 75 | <td>属性</td> |
| 76 | - <td><ul><li>输出结果的长度。</li></td> | 76 | + <td><ul><li>输出结果的长度。</li></ul></td> |
| 77 | <td>INT32、INT64</td> | 77 | <td>INT32、INT64</td> |
| 78 | <td>-</td> | 78 | <td>-</td> |
| 79 | </tr> | 79 | </tr> |
| 80 | </tbody></table> | 80 | </tbody></table> |
| 81 | 81 | ||
| 82 | ## 约束说明 | 82 | ## 约束说明 |
| 83 | -inputOffset、outputOffset的长度比permute多1。 | ||
| 84 | 83 | ||
| 84 | +inputOffset、outputOffset的长度比permute多1。 | ||
| 85 | 85 | ||
| 86 | ## 调用说明 | 86 | ## 调用说明 |
| 87 | 87 | ||
| 88 | | 调用方式 | 样例代码 | 说明 | | 88 | | 调用方式 | 样例代码 | 说明 | |
| 89 | | ---------------- | --------------------------- | --------------------------------------------------- | | 89 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 90 | | aclnn接口 | [test_expand_into_jagged_permute.cpp](tests/ut/op_kernel/test_expand_into_jagged_permute.cpp) | 通过[aclnnExpandIntoJaggedPermute](docs/aclnnExpandIntoJaggedPermute.md)接口方式调用ExpandIntoJaggedPermute算子。 | | 90 | | aclnn接口 | [test_expand_into_jagged_permute.cpp](tests/ut/op_kernel/test_expand_into_jagged_permute.cpp) | 通过[aclnnExpandIntoJaggedPermute](docs/aclnnExpandIntoJaggedPermute.md)接口方式调用ExpandIntoJaggedPermute算子。 | |
| 91 | - | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # GatherElementsV2 | 1 | # GatherElementsV2 |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | | :----------------------------------------------------------- | :------: | | 6 | | :----------------------------------------------------------- | :------: | |
| @@ -87,13 +87,14 @@ | |||
| 87 | <tr> | 87 | <tr> |
| 88 | <td>dim</td> | 88 | <td>dim</td> |
| 89 | <td>可选属性</td> | 89 | <td>可选属性</td> |
| 90 | - <td><ul><li>公式中的d。</li><li>默认值为0。</li></td> | 90 | + <td><ul><li>公式中的d。</li><li>默认值为0。</li></ul></td> |
| 91 | <td>Int</td> | 91 | <td>Int</td> |
| 92 | <td>-</td> | 92 | <td>-</td> |
| 93 | </tr> | 93 | </tr> |
| 94 | </tbody></table> | 94 | </tbody></table> |
| 95 | 95 | ||
| 96 | - Kirin X90/Kirin 9030处理器系列产品:x和y的数据类型不支持BFLOAT16。 | 96 | - Kirin X90/Kirin 9030处理器系列产品:x和y的数据类型不支持BFLOAT16。 |
| 97 | + | ||
| 97 | ## 约束说明 | 98 | ## 约束说明 |
| 98 | 99 | ||
| 99 | 无 | 100 | 无 |
| @@ -92,7 +92,6 @@ aclnnStatus aclnnGather( | |||
| 92 | <th>维度(shape)</th> | 92 | <th>维度(shape)</th> |
| 93 | <th>非连续Tensor</th> | 93 | <th>非连续Tensor</th> |
| 94 | </tr></thead> | 94 | </tr></thead> |
| 95 | - <tbody> | ||
| 96 | <tr> | 95 | <tr> |
| 97 | <td>self(aclTensor*)</td> | 96 | <td>self(aclTensor*)</td> |
| 98 | <td>输入</td> | 97 | <td>输入</td> |
| @@ -117,8 +116,9 @@ aclnnStatus aclnnGather( | |||
| 117 | <td>index(aclTensor*)</td> | 116 | <td>index(aclTensor*)</td> |
| 118 | <td>输入</td> | 117 | <td>输入</td> |
| 119 | <td>公式中的index。</td> | 118 | <td>公式中的index。</td> |
| 120 | - <td>维度数需要与self一致,且shape需要与out一致,除dim指定的维度外,其他维度的size需要小于等于self对应维度的size。<br> | 119 | + <td> |
| 121 | -index中的具体数值代表self对应dim轴上的下标,取值范围[-self.shape[dim], self.shape[dim] - 1],index中的索引不支持越界。</td> | 120 | + 维度数需要与self一致,且shape需要与out一致,除dim指定的维度外,其他维度的size需要小于等于self对应维度的size。 |
| 121 | + <br>index中的具体数值代表self对应dim轴上的下标,取值范围[-self.shape[dim], self.shape[dim] - 1],index中的索引不支持越界。</td> | ||
| 122 | <td>INT32、IND64</td> | 122 | <td>INT32、IND64</td> |
| 123 | <td>-</td> | 123 | <td>-</td> |
| 124 | <td>0-8</td> | 124 | <td>0-8</td> |
| @@ -154,7 +154,7 @@ index中的具体数值代表self对应dim轴上的下标,取值范围[-self.s | |||
| 154 | <td>-</td> | 154 | <td>-</td> |
| 155 | <td>-</td> | 155 | <td>-</td> |
| 156 | </tr> | 156 | </tr> |
| 157 | - </tbody></table> | 157 | + </table> |
| 158 | 158 | ||
| 159 | - **返回值** | 159 | - **返回值** |
| 160 | 160 | ||
| @@ -77,14 +77,14 @@ | |||
| 77 | <tr> | 77 | <tr> |
| 78 | <td>batch_dims</td> | 78 | <td>batch_dims</td> |
| 79 | <td>可选属性</td> | 79 | <td>可选属性</td> |
| 80 | - <td><ul><li>用于指定批处理的维度。</li><li>默认值为0.0。</ul></td> | 80 | + <td><ul><li>用于指定批处理的维度。</li><li>默认值为0.0。</li></ul></td> |
| 81 | <td>INT64</td> | 81 | <td>INT64</td> |
| 82 | <td>ND</td> | 82 | <td>ND</td> |
| 83 | </tr> | 83 | </tr> |
| 84 | <tr> | 84 | <tr> |
| 85 | <td>negative_index_support</td> | 85 | <td>negative_index_support</td> |
| 86 | <td>可选属性</td> | 86 | <td>可选属性</td> |
| 87 | - <td><ul><li>用于指定是否支持负数索引,值为true表示支持索引为负数,值为false则不支持索引为负数。</li><li>默认值为false。</ul></td> | 87 | + <td><ul><li>用于指定是否支持负数索引,值为true表示支持索引为负数,值为false则不支持索引为负数。</li><li>默认值为false。</li></ul></td> |
| 88 | <td>BOOL</td> | 88 | <td>BOOL</td> |
| 89 | <td>ND</td> | 89 | <td>ND</td> |
| 90 | </tr> | 90 | </tr> |
| @@ -99,4 +99,4 @@ | |||
| 99 | | 调用方式 | 调用样例 | 说明 | | 99 | | 调用方式 | 调用样例 | 说明 | |
| 100 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| | 100 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| |
| 101 | | aclnn调用 | [test_aclnn_gather_v2](./examples/test_aclnn_gather_v2.cpp) | 通过[aclnnGatherV2](./docs/aclnnGatherV2.md)接口方式调用GatherV2算子。 | | 101 | | aclnn调用 | [test_aclnn_gather_v2](./examples/test_aclnn_gather_v2.cpp) | 通过[aclnnGatherV2](./docs/aclnnGatherV2.md)接口方式调用GatherV2算子。 | |
| 102 | -| aclnn调用 | [test_aclnn_embedding_renorm](./examples/test_aclnn_embedding_renorm.cpp) | 通过[aclnnEmbeddingRenorm](./docs/aclnnEmbeddingRenorm.md)接口方式调用EmbeddingRenorm算子。 | | 102 | +| aclnn调用 | [test_aclnn_embedding_renorm](./examples/test_aclnn_embedding_renorm.cpp) | 通过[aclnnEmbeddingRenorm](./docs/aclnnEmbeddingRenorm.md)接口方式调用EmbeddingRenorm算子。 | |
| @@ -61,6 +61,7 @@ | |||
| 61 | <td>INT32、INT64</td> | 61 | <td>INT32、INT64</td> |
| 62 | <td>ND</td> | 62 | <td>ND</td> |
| 63 | </tr> | 63 | </tr> |
| 64 | + <tr> | ||
| 64 | <td>y</td> | 65 | <td>y</td> |
| 65 | <td>输出</td> | 66 | <td>输出</td> |
| 66 | <td>根据索引取出后的数据。</td> | 67 | <td>根据索引取出后的数据。</td> |
| @@ -77,4 +78,4 @@ | |||
| 77 | 78 | ||
| 78 | | 调用方式 | 调用样例 | 说明 | | 79 | | 调用方式 | 调用样例 | 说明 | |
| 79 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| | 80 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| |
| 80 | -| aclnn调用 | [test_aclnn_index](./examples/test_aclnn_index.cpp) | 通过[aclnnIndex](./docs/aclnnIndex.md)接口方式调用Index算子。 | | 81 | +| aclnn调用 | [test_aclnn_index](./examples/test_aclnn_index.cpp) | 通过[aclnnIndex](./docs/aclnnIndex.md)接口方式调用Index算子。 | |
| @@ -1,6 +1,6 @@ | |||
| 1 | # RepeatInterleaveGrad | 1 | # RepeatInterleaveGrad |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | | :----------------------------------------------------------- | :------: | | 6 | | :----------------------------------------------------------- | :------: | |
| @@ -1,6 +1,6 @@ | |||
| 1 | # ScatterAddWithSorted | 1 | # ScatterAddWithSorted |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | | :----------------------------------------------------------- | :------: | | 6 | | :----------------------------------------------------------- | :------: | |
| @@ -89,8 +89,8 @@ | |||
| 89 | </tr> | 89 | </tr> |
| 90 | </tbody></table> | 90 | </tbody></table> |
| 91 | 91 | ||
| 92 | - | ||
| 93 | - Kirin X90/Kirin 9030处理器系列产品:var和value的数据类型不支持BFLOAT16,sorted_index和pos的数据类型不支持INT64。 | 92 | - Kirin X90/Kirin 9030处理器系列产品:var和value的数据类型不支持BFLOAT16,sorted_index和pos的数据类型不支持INT64。 |
| 93 | + | ||
| 94 | ## 约束说明 | 94 | ## 约束说明 |
| 95 | 95 | ||
| 96 | 无 | 96 | 无 |
| @@ -1,6 +1,6 @@ | |||
| 1 | # SparseToDense | 1 | # SparseToDense |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | | :----------------------------------------------------------- | :------: | | 6 | | :----------------------------------------------------------- | :------: | |
| @@ -10,6 +10,7 @@ | |||
| 10 | | <term>Atlas 200I/500 A2 推理产品</term> | × | | 10 | | <term>Atlas 200I/500 A2 推理产品</term> | × | |
| 11 | | <term>Atlas 推理系列产品</term> | × | | 11 | | <term>Atlas 推理系列产品</term> | × | |
| 12 | | <term>Atlas 训练系列产品</term> | × | | 12 | | <term>Atlas 训练系列产品</term> | × | |
| 13 | + | ||
| 13 | ## 功能说明 | 14 | ## 功能说明 |
| 14 | 15 | ||
| 15 | - 算子功能: 将一个稀疏表示(Sparse Representation)转换为一个稠密张亮。 | 16 | - 算子功能: 将一个稀疏表示(Sparse Representation)转换为一个稠密张亮。 |
| @@ -97,7 +98,6 @@ | |||
| 97 | </tr> | 98 | </tr> |
| 98 | </tbody></table> | 99 | </tbody></table> |
| 99 | 100 | ||
| 100 | - | ||
| 101 | ## 约束说明 | 101 | ## 约束说明 |
| 102 | 102 | ||
| 103 | 无 | 103 | 无 |
| @@ -17,6 +17,7 @@ | |||
| 17 | 根据输入词频logits、topK/topP采样参数、随机采样权重分布q,进行topK-topP-sample采样计算,输出每个batch的最大词频logitsSelectIdx,以及topK-topP采样后的词频分布logitsTopKPSelect。 | 17 | 根据输入词频logits、topK/topP采样参数、随机采样权重分布q,进行topK-topP-sample采样计算,输出每个batch的最大词频logitsSelectIdx,以及topK-topP采样后的词频分布logitsTopKPSelect。 |
| 18 | 18 | ||
| 19 | 算子包含三个可单独使能,但上下游处理关系保持不变的采样算法(从原始输入到最终输出):TopK采样、TopP采样、指数采样(本文档中Sample所指)。它们可以构成八种计算场景。如下表所示: | 19 | 算子包含三个可单独使能,但上下游处理关系保持不变的采样算法(从原始输入到最终输出):TopK采样、TopP采样、指数采样(本文档中Sample所指)。它们可以构成八种计算场景。如下表所示: |
| 20 | + | ||
| 20 | | 计算场景 | TopK采样 | TopP采样 | 指数分布采样 |备注| | 21 | | 计算场景 | TopK采样 | TopP采样 | 指数分布采样 |备注| |
| 21 | | :-------:| :------:|:-------:|:-------:|:-------:| | 22 | | :-------:| :------:|:-------:|:-------:|:-------:| |
| 22 | |Softmax-Argmax采样|×|×|×|对输入logits按每个batch,取SoftMax后取最大结果| | 23 | |Softmax-Argmax采样|×|×|×|对输入logits按每个batch,取SoftMax后取最大结果| |
| @@ -597,4 +598,4 @@ aclnnStatus aclnnTopKTopPSample( | |||
| 597 | aclFinalize(); | 598 | aclFinalize(); |
| 598 | return 0; | 599 | return 0; |
| 599 | } | 600 | } |
| 600 | - ``` | 601 | + ``` |
| @@ -19,6 +19,7 @@ | |||
| 19 | 根据输入词频logits、topK/topP/minP采样参数、随机采样权重分布q,进行topK-topP-minP-sample采样计算。当输入isNeedSampleResult为false时,输出每个batch的最大词频logitsSelectIdx,以及topK-topP-minP采样后的词频分布logitsTopKPSelect;当输入isNeedSampleResult为true时,输出topK-topP-minP采样后的中间计算结果logitsIdx和logitsSortMasked,其中logitsSortMasked为词频logits经过topK-topP-minP采样计算后的中间结果,logitsIdx为logitsSortMasked在logits中对应的索引。 | 19 | 根据输入词频logits、topK/topP/minP采样参数、随机采样权重分布q,进行topK-topP-minP-sample采样计算。当输入isNeedSampleResult为false时,输出每个batch的最大词频logitsSelectIdx,以及topK-topP-minP采样后的词频分布logitsTopKPSelect;当输入isNeedSampleResult为true时,输出topK-topP-minP采样后的中间计算结果logitsIdx和logitsSortMasked,其中logitsSortMasked为词频logits经过topK-topP-minP采样计算后的中间结果,logitsIdx为logitsSortMasked在logits中对应的索引。 |
| 20 | 20 | ||
| 21 | 算子包含四个可单独使能,但上下游处理关系保持不变的采样算法(从原始输入到最终输出):TopK采样、TopP采样、MinP采样、指数采样(本文档中Sample所指)。目前支持以下计算场景。如下表所示: | 21 | 算子包含四个可单独使能,但上下游处理关系保持不变的采样算法(从原始输入到最终输出):TopK采样、TopP采样、MinP采样、指数采样(本文档中Sample所指)。目前支持以下计算场景。如下表所示: |
| 22 | + | ||
| 22 | | 计算场景 | TopK采样 | TopP采样 | minP采样 | 指数分布采样 | 输出中间计算结果 |备注| | 23 | | 计算场景 | TopK采样 | TopP采样 | minP采样 | 指数分布采样 | 输出中间计算结果 |备注| |
| 23 | | :-------:| :------:|:-------:|:-------:|:-------:|:-------:|:-------:| | 24 | | :-------:| :------:|:-------:|:-------:|:-------:|:-------:|:-------:| |
| 24 | |Softmax-Argmax采样|×|×|×|×|×|对输入logits按每个batch,取SoftMax后取最大结果| | 25 | |Softmax-Argmax采样|×|×|×|×|×|对输入logits按每个batch,取SoftMax后取最大结果| |
| @@ -13,7 +13,6 @@ | |||
| 13 | | <term>Atlas 推理系列产品</term> | × | | 13 | | <term>Atlas 推理系列产品</term> | × | |
| 14 | | <term>Atlas 训练系列产品</term> | × | | 14 | | <term>Atlas 训练系列产品</term> | × | |
| 15 | 15 | ||
| 16 | - | ||
| 17 | ## 功能说明 | 16 | ## 功能说明 |
| 18 | 17 | ||
| 19 | - 接口功能:ChamferDistance(倒角距离)的反向算子,根据正向的输入对输出的贡献及初始梯度求出输入对应的梯度。 | 18 | - 接口功能:ChamferDistance(倒角距离)的反向算子,根据正向的输入对输出的贡献及初始梯度求出输入对应的梯度。 |
| @@ -85,7 +84,6 @@ aclnnStatus aclnnChamferDistanceBackward( | |||
| 85 | 84 | ||
| 86 | - **参数说明**: | 85 | - **参数说明**: |
| 87 | 86 | ||
| 88 | - </style> | ||
| 89 | <table class="tg" style="undefined;table-layout: fixed; width: 1172px"><colgroup> | 87 | <table class="tg" style="undefined;table-layout: fixed; width: 1172px"><colgroup> |
| 90 | <col style="width: 184px"> | 88 | <col style="width: 184px"> |
| 91 | <col style="width: 86px"> | 89 | <col style="width: 86px"> |
| @@ -216,7 +214,6 @@ aclnnStatus aclnnChamferDistanceBackward( | |||
| 216 | 214 | ||
| 217 | 第一段接口完成入参校验,出现以下场景时报错: | 215 | 第一段接口完成入参校验,出现以下场景时报错: |
| 218 | 216 | ||
| 219 | - </style> | ||
| 220 | <table class="tg" style="undefined;table-layout: fixed; width: 951px"><colgroup> | 217 | <table class="tg" style="undefined;table-layout: fixed; width: 951px"><colgroup> |
| 221 | <col style="width: 258px"> | 218 | <col style="width: 258px"> |
| 222 | <col style="width: 86px"> | 219 | <col style="width: 86px"> |
| @@ -493,4 +490,4 @@ int main() { | |||
| 493 | aclFinalize(); | 490 | aclFinalize(); |
| 494 | return 0; | 491 | return 0; |
| 495 | } | 492 | } |
| 496 | -``` | 493 | +``` |
| @@ -71,42 +71,42 @@ | |||
| 71 | <tr> | 71 | <tr> |
| 72 | <td>weight</td> | 72 | <td>weight</td> |
| 73 | <td>可选输入</td> | 73 | <td>可选输入</td> |
| 74 | - <td><ul><li>表示为每个类别指定的缩放权重,公式中的weight。<li>默认为全1。</ul></td> | 74 | + <td><ul><li>表示为每个类别指定的缩放权重,公式中的weight。</li><li>默认为全1。</li></ul></td> |
| 75 | <td>FLOAT</td> | 75 | <td>FLOAT</td> |
| 76 | <td>ND</td> | 76 | <td>ND</td> |
| 77 | </tr> | 77 | </tr> |
| 78 | <tr> | 78 | <tr> |
| 79 | <td>reductionOptional</td> | 79 | <td>reductionOptional</td> |
| 80 | <td>可选属性</td> | 80 | <td>可选属性</td> |
| 81 | - <td><ul><li>表示loss的归约方式。<li>默认值为“mean”。</ul></td> | 81 | + <td><ul><li>表示loss的归约方式。</li><li>默认值为“mean”。</li></ul></td> |
| 82 | <td>STRING</td> | 82 | <td>STRING</td> |
| 83 | <td>-</td> | 83 | <td>-</td> |
| 84 | </tr> | 84 | </tr> |
| 85 | <tr> | 85 | <tr> |
| 86 | <td>ignoreIndex</td> | 86 | <td>ignoreIndex</td> |
| 87 | <td>可选属性</td> | 87 | <td>可选属性</td> |
| 88 | - <td><ul><li>指定被忽略的标签值。<li>默认值为-100。</ul></td> | 88 | + <td><ul><li>指定被忽略的标签值。</li><li>默认值为-100。</li></ul></td> |
| 89 | <td>INT64</td> | 89 | <td>INT64</td> |
| 90 | <td>-</td> | 90 | <td>-</td> |
| 91 | </tr> | 91 | </tr> |
| 92 | <tr> | 92 | <tr> |
| 93 | <td>labelSmoothing</td> | 93 | <td>labelSmoothing</td> |
| 94 | <td>可选属性</td> | 94 | <td>可选属性</td> |
| 95 | - <td><ul><li>表示计算loss时的平滑量。<li>默认值为0。</ul></td> | 95 | + <td><ul><li>表示计算loss时的平滑量。</li><li>默认值为0。</li></ul></td> |
| 96 | <td>DOUBLE</td> | 96 | <td>DOUBLE</td> |
| 97 | <td>-</td> | 97 | <td>-</td> |
| 98 | </tr> | 98 | </tr> |
| 99 | <tr> | 99 | <tr> |
| 100 | <td>lseSquareScaleForZloss</td> | 100 | <td>lseSquareScaleForZloss</td> |
| 101 | <td>可选属性</td> | 101 | <td>可选属性</td> |
| 102 | - <td><ul><li>表示zloss计算所需的scale。<li>当前暂不支持。</ul></td> | 102 | + <td><ul><li>表示zloss计算所需的scale。</li><li>当前暂不支持。</li></ul></td> |
| 103 | <td>DOUBLE</td> | 103 | <td>DOUBLE</td> |
| 104 | <td>-</td> | 104 | <td>-</td> |
| 105 | </tr> | 105 | </tr> |
| 106 | <tr> | 106 | <tr> |
| 107 | <td>returnZloss</td> | 107 | <td>returnZloss</td> |
| 108 | <td>可选属性</td> | 108 | <td>可选属性</td> |
| 109 | - <td><ul><li>控制是否返回zloss输出。Host侧的布尔值。需要输出zLoss时传入True,否则传入False。<li>当前暂不支持。</ul></td> | 109 | + <td><ul><li>控制是否返回zloss输出。Host侧的布尔值。需要输出zLoss时传入True,否则传入False。</li><li>当前暂不支持。</li></ul></td> |
| 110 | <td>BOOL</td> | 110 | <td>BOOL</td> |
| 111 | <td>-</td> | 111 | <td>-</td> |
| 112 | </tr> | 112 | </tr> |
| @@ -127,14 +127,14 @@ | |||
| 127 | <tr> | 127 | <tr> |
| 128 | <td>zlossOut</td> | 128 | <td>zlossOut</td> |
| 129 | <td>输出</td> | 129 | <td>输出</td> |
| 130 | - <td><ul><li>表示辅助损失,对应公式中的zlossOut。<li>当前暂不支持。</ul></td> | 130 | + <td><ul><li>表示辅助损失,对应公式中的zlossOut。</li><li>当前暂不支持。</li></ul></td> |
| 131 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 131 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 132 | <td>ND</td> | 132 | <td>ND</td> |
| 133 | </tr> | 133 | </tr> |
| 134 | <tr> | 134 | <tr> |
| 135 | <td>lseForZlossOut</td> | 135 | <td>lseForZlossOut</td> |
| 136 | <td>输出</td> | 136 | <td>输出</td> |
| 137 | - <td><ul><li>表示zloss场景输出给反向的Tensor,lseSquareScaleForZloss为0时输出为None,对应公式中的lse。<li>当前暂不支持。</ul></td> | 137 | + <td><ul><li>表示zloss场景输出给反向的Tensor,lseSquareScaleForZloss为0时输出为None,对应公式中的lse。</li><li>当前暂不支持。</li></ul></td> |
| 138 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 138 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 139 | <td>ND</td> | 139 | <td>ND</td> |
| 140 | </tr> | 140 | </tr> |
| @@ -149,4 +149,4 @@ | |||
| 149 | 149 | ||
| 150 | | 调用方式 | 样例代码 | 说明 | | 150 | | 调用方式 | 样例代码 | 说明 | |
| 151 | | ---------------- | --------------------------- | --------------------------------------------------- | | 151 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 152 | -| aclnn接口 | [test_aclnn_cross_entropy_loss](examples/test_aclnn_cross_entropy_loss.cpp) | 通过[aclnnCrossEntropyLoss](docs/aclnnCrossEntropyLoss.md)接口方式调用CrossEntropyLoss算子。 | | 152 | +| aclnn接口 | [test_aclnn_cross_entropy_loss](examples/test_aclnn_cross_entropy_loss.cpp) | 通过[aclnnCrossEntropyLoss](docs/aclnnCrossEntropyLoss.md)接口方式调用CrossEntropyLoss算子。 | |
| @@ -148,49 +148,49 @@ | |||
| 148 | <tr> | 148 | <tr> |
| 149 | <td>weight</td> | 149 | <td>weight</td> |
| 150 | <td>可选输入</td> | 150 | <td>可选输入</td> |
| 151 | - <td><ul><li>表示为每个类别指定的缩放权重,公式中的weight。<li>默认为全1。</ul></td> | 151 | + <td><ul><li>表示为每个类别指定的缩放权重,公式中的weight。</li><li>默认为全1。</li></ul></td> |
| 152 | <td>FLOAT</td> | 152 | <td>FLOAT</td> |
| 153 | <td>ND</td> | 153 | <td>ND</td> |
| 154 | </tr> | 154 | </tr> |
| 155 | <tr> | 155 | <tr> |
| 156 | <td>gradZloss</td> | 156 | <td>gradZloss</td> |
| 157 | <td>可选输入</td> | 157 | <td>可选输入</td> |
| 158 | - <td><ul><li>正向输出zloss的梯度,公式中的gradZloss。<li>当前暂不支持。</ul></td> | 158 | + <td><ul><li>正向输出zloss的梯度,公式中的gradZloss。</li><li>当前暂不支持。</li></ul></td> |
| 159 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 159 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 160 | <td>ND</td> | 160 | <td>ND</td> |
| 161 | </tr> | 161 | </tr> |
| 162 | <tr> | 162 | <tr> |
| 163 | <td>lseForZloss</td> | 163 | <td>lseForZloss</td> |
| 164 | <td>可选输入</td> | 164 | <td>可选输入</td> |
| 165 | - <td><ul><li>zloss相关输入,如果lse_square_scale_for_zloss非0,正向额外输出的lse_for_zloss中间结果给反向用于计算lse,公式中的lseForZloss。<li>当前暂不支持。</ul></td> | 165 | + <td><ul><li>zloss相关输入,如果lse_square_scale_for_zloss非0,正向额外输出的lse_for_zloss中间结果给反向用于计算lse,公式中的lseForZloss。</li><li>当前暂不支持。</li></ul></td> |
| 166 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 166 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 167 | <td>ND</td> | 167 | <td>ND</td> |
| 168 | </tr> | 168 | </tr> |
| 169 | <tr> | 169 | <tr> |
| 170 | <td>reduction</td> | 170 | <td>reduction</td> |
| 171 | <td>可选属性</td> | 171 | <td>可选属性</td> |
| 172 | - <td><ul><li>指定要应用于输出的归约方式。<li>默认值为“mean”。</ul></td> | 172 | + <td><ul><li>指定要应用于输出的归约方式。</li><li>默认值为“mean”。</li></ul></td> |
| 173 | <td>STRING</td> | 173 | <td>STRING</td> |
| 174 | <td>-</td> | 174 | <td>-</td> |
| 175 | </tr> | 175 | </tr> |
| 176 | <tr> | 176 | <tr> |
| 177 | <td>ignoreIndex</td> | 177 | <td>ignoreIndex</td> |
| 178 | <td>可选属性</td> | 178 | <td>可选属性</td> |
| 179 | - <td><ul><li>指定被忽略的标签值。<li>默认值为-100。</ul></td> | 179 | + <td><ul><li>指定被忽略的标签值。</li><li>默认值为-100。</li></ul></td> |
| 180 | <td>INT64</td> | 180 | <td>INT64</td> |
| 181 | <td>-</td> | 181 | <td>-</td> |
| 182 | </tr> | 182 | </tr> |
| 183 | <tr> | 183 | <tr> |
| 184 | <td>labelSmoothing</td> | 184 | <td>labelSmoothing</td> |
| 185 | <td>可选属性</td> | 185 | <td>可选属性</td> |
| 186 | - <td><ul><li>表示计算loss时的平滑量。<li>当前仅支持输入0.0。</ul></td> | 186 | + <td><ul><li>表示计算loss时的平滑量。</li><li>当前仅支持输入0.0。</li></ul></td> |
| 187 | <td>DOUBLE</td> | 187 | <td>DOUBLE</td> |
| 188 | <td>-</td> | 188 | <td>-</td> |
| 189 | </tr> | 189 | </tr> |
| 190 | <tr> | 190 | <tr> |
| 191 | <td>lseSquareScaleForZloss</td> | 191 | <td>lseSquareScaleForZloss</td> |
| 192 | <td>可选属性</td> | 192 | <td>可选属性</td> |
| 193 | - <td><ul><li>表示zloss计算所需的scale。<li>当前暂不支持。</ul></td> | 193 | + <td><ul><li>表示zloss计算所需的scale。</li><li>当前暂不支持。</li></ul></td> |
| 194 | <td>DOUBLE</td> | 194 | <td>DOUBLE</td> |
| 195 | <td>-</td> | 195 | <td>-</td> |
| 196 | </tr> | 196 | </tr> |
| @@ -213,4 +213,4 @@ | |||
| 213 | 213 | ||
| 214 | | 调用方式 | 样例代码 | 说明 | | 214 | | 调用方式 | 样例代码 | 说明 | |
| 215 | | ---------------- | --------------------------- | --------------------------------------------------- | | 215 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 216 | -| aclnn接口 | [test_aclnn_cross_entropy_loss_grad](examples/test_aclnn_cross_entropy_loss_grad.cpp) | 通过[aclnnCrossEntropyLossGrad](docs/aclnnCrossEntropyLossGrad.md)接口方式调用CrossEntropyLossGrad算子。 | | 216 | +| aclnn接口 | [test_aclnn_cross_entropy_loss_grad](examples/test_aclnn_cross_entropy_loss_grad.cpp) | 通过[aclnnCrossEntropyLossGrad](docs/aclnnCrossEntropyLossGrad.md)接口方式调用CrossEntropyLossGrad算子。 | |
| @@ -168,7 +168,7 @@ aclnnStatus aclnnCrossEntropyLossGrad( | |||
| 168 | <td>gradLoss(aclTensor*)</td> | 168 | <td>gradLoss(aclTensor*)</td> |
| 169 | <td>输入</td> | 169 | <td>输入</td> |
| 170 | <td>正向输出loss的梯度。参数与公式中grad对应。</td> | 170 | <td>正向输出loss的梯度。参数与公式中grad对应。</td> |
| 171 | - <td><ul><li>当reductionOptional为none时,要求为一个维度为1D的Tensor。</li><li>当reductionOptional为mean/sum时,要求为一个维度为0D的Tensor。</td> | 171 | + <td><ul><li>当reductionOptional为none时,要求为一个维度为1D的Tensor。</li><li>当reductionOptional为mean/sum时,要求为一个维度为0D的Tensor。</li></ul></td> |
| 172 | <td>FLOAT16、FLOAT、BFLOAT16</td> | 172 | <td>FLOAT16、FLOAT、BFLOAT16</td> |
| 173 | <td>ND</td> | 173 | <td>ND</td> |
| 174 | <td>(N,)<br>N为批处理大小</td> | 174 | <td>(N,)<br>N为批处理大小</td> |
| @@ -218,7 +218,8 @@ aclnnStatus aclnnCrossEntropyLossGrad( | |||
| 218 | <td>lseForZlossOptional(aclTensor*)</td> | 218 | <td>lseForZlossOptional(aclTensor*)</td> |
| 219 | <td>可选输入</td> | 219 | <td>可选输入</td> |
| 220 | <td>zloss相关输入,如果lse_square_scale_for_zloss非0,正向额外输出的lse_for_zloss中间结果给反向用于计算lse。</td> | 220 | <td>zloss相关输入,如果lse_square_scale_for_zloss非0,正向额外输出的lse_for_zloss中间结果给反向用于计算lse。</td> |
| 221 | - <td><ul><li>要求为一个维度为1D的Tensor。</li><li>当前暂不支持。</td> | 221 | + <td><ul><li>要求为一个维度为1D的Tensor。</li><li>当前暂不支持。</li></ul> |
| 222 | + </td> | ||
| 222 | <td>FLOAT16、FLOAT、BFLOAT16</td> | 223 | <td>FLOAT16、FLOAT、BFLOAT16</td> |
| 223 | <td>ND</td> | 224 | <td>ND</td> |
| 224 | <td>(N,)</td> | 225 | <td>(N,)</td> |
| @@ -323,6 +324,7 @@ aclnnStatus aclnnCrossEntropyLossGrad( | |||
| 323 | <td>ACLNN_ERR_PARAM_INVALID</td> | 324 | <td>ACLNN_ERR_PARAM_INVALID</td> |
| 324 | <td>161002</td> | 325 | <td>161002</td> |
| 325 | <td>gradLoss、logProb、target、weightOptional、gradZlossOptional、lseForZlossOptional的数据类型不在支持的范围内。</td> | 326 | <td>gradLoss、logProb、target、weightOptional、gradZlossOptional、lseForZlossOptional的数据类型不在支持的范围内。</td> |
| 327 | + </tr> | ||
| 326 | <tr> | 328 | <tr> |
| 327 | <td>ACLNN_ERR_INNER_TILING_ERROR</td> | 329 | <td>ACLNN_ERR_INNER_TILING_ERROR</td> |
| 328 | <td>561002</td> | 330 | <td>561002</td> |
| @@ -105,6 +105,7 @@ | |||
| 105 | <td>输入序列追踪到目标序列的概率。</td> | 105 | <td>输入序列追踪到目标序列的概率。</td> |
| 106 | <td>FLOAT16、FLOAT32、BFLOAT16</td> | 106 | <td>FLOAT16、FLOAT32、BFLOAT16</td> |
| 107 | <td>ND</td> | 107 | <td>ND</td> |
| 108 | + </tr> | ||
| 108 | <tr> | 109 | <tr> |
| 109 | <td>blank</td> | 110 | <td>blank</td> |
| 110 | <td>属性</td> | 111 | <td>属性</td> |
| @@ -150,4 +151,4 @@ | |||
| 150 | 151 | ||
| 151 | | 调用方式 | 样例代码 | 说明 | | 152 | | 调用方式 | 样例代码 | 说明 | |
| 152 | | ---------------- | --------------------------- | --------------------------------------------------- | | 153 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 153 | -| aclnn接口 | [test_aclnn_ctc_loss_backward](examples/arch35/test_aclnn_ctc_loss_backward.cpp) | 通过[aclnnCtcLossBackward](docs/aclnnCtcLossBackward.md)接口方式调用CtclossV2Grad算子。 | | 154 | +| aclnn接口 | [test_aclnn_ctc_loss_backward](examples/arch35/test_aclnn_ctc_loss_backward.cpp) | 通过[aclnnCtcLossBackward](docs/aclnnCtcLossBackward.md)接口方式调用CtclossV2Grad算子。 | |
| @@ -86,6 +86,7 @@ | |||
| 86 | <td>输入序列追踪到目标序列的概率。</td> | 86 | <td>输入序列追踪到目标序列的概率。</td> |
| 87 | <td>FLOAT16、FLOAT32、BFLOAT16、DOUBLE</td> | 87 | <td>FLOAT16、FLOAT32、BFLOAT16、DOUBLE</td> |
| 88 | <td>ND</td> | 88 | <td>ND</td> |
| 89 | + </tr> | ||
| 89 | <tr> | 90 | <tr> |
| 90 | <td>blank</td> | 91 | <td>blank</td> |
| 91 | <td>属性</td> | 92 | <td>属性</td> |
| @@ -132,4 +133,4 @@ | |||
| 132 | 133 | ||
| 133 | | 调用方式 | 样例代码 | 说明 | | 134 | | 调用方式 | 样例代码 | 说明 | |
| 134 | | ---------------- | --------------------------- | --------------------------------------------------- | | 135 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 135 | -| aclnn接口 | [test_aclnn_ctc_loss_v3_grad](examples/test_aclnn_ctc_loss_v3_grad.cpp) | 通过[aclnnCtcLossBackward](../ctc_loss_v2_grad/docs/aclnnCtcLossBackward.md)接口方式调用CtclossV3Grad算子。 | | 136 | +| aclnn接口 | [test_aclnn_ctc_loss_v3_grad](examples/test_aclnn_ctc_loss_v3_grad.cpp) | 通过[aclnnCtcLossBackward](../ctc_loss_v2_grad/docs/aclnnCtcLossBackward.md)接口方式调用CtclossV3Grad算子。 | |
| @@ -26,7 +26,6 @@ | |||
| 26 | softMaxOutOptional = exp(vocab\_parallel\_logits -logits\_max.unsqueeze(dim = -1)) \ sum\_exp\_logits.unsqueeze(dim = -1) | 26 | softMaxOutOptional = exp(vocab\_parallel\_logits -logits\_max.unsqueeze(dim = -1)) \ sum\_exp\_logits.unsqueeze(dim = -1) |
| 27 | $$ | 27 | $$ |
| 28 | 28 | ||
| 29 | - | ||
| 30 | ## 函数原型 | 29 | ## 函数原型 |
| 31 | 30 | ||
| 32 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnFusedCrossEntropyLossWithMaxSumGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnFusedCrossEntropyLossWithMaxSum”接口执行计算。 | 31 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnFusedCrossEntropyLossWithMaxSumGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnFusedCrossEntropyLossWithMaxSum”接口执行计算。 |
| @@ -58,7 +57,6 @@ aclnnStatus aclnnFusedCrossEntropyLossWithMaxSum( | |||
| 58 | 57 | ||
| 59 | - **参数说明** | 58 | - **参数说明** |
| 60 | 59 | ||
| 61 | - </style> | ||
| 62 | <table class="tg" style="undefined;table-layout: fixed; width: 1447px"><colgroup> | 60 | <table class="tg" style="undefined;table-layout: fixed; width: 1447px"><colgroup> |
| 63 | <col style="width: 267px"> | 61 | <col style="width: 267px"> |
| 64 | <col style="width: 120px"> | 62 | <col style="width: 120px"> |
| @@ -199,7 +197,6 @@ aclnnStatus aclnnFusedCrossEntropyLossWithMaxSum( | |||
| 199 | 197 | ||
| 200 | 第一段接口完成入参校验,出现以下场景时报错: | 198 | 第一段接口完成入参校验,出现以下场景时报错: |
| 201 | 199 | ||
| 202 | - </style> | ||
| 203 | <table class="tg" style="undefined;table-layout: fixed; width: 970px"><colgroup> | 200 | <table class="tg" style="undefined;table-layout: fixed; width: 970px"><colgroup> |
| 204 | <col style="width: 263px"> | 201 | <col style="width: 263px"> |
| 205 | <col style="width: 88px"> | 202 | <col style="width: 88px"> |
| @@ -13,7 +13,6 @@ | |||
| 13 | | <term>Atlas 推理系列产品</term> | × | | 13 | | <term>Atlas 推理系列产品</term> | × | |
| 14 | | <term>Atlas 训练系列产品</term> | × | | 14 | | <term>Atlas 训练系列产品</term> | × | |
| 15 | 15 | ||
| 16 | - | ||
| 17 | ## 功能说明 | 16 | ## 功能说明 |
| 18 | 17 | ||
| 19 | 进行[aclnnKlDiv](https://gitcode.com/cann/ops-math/blob/master/math/kl_div_v2/docs/aclnnKlDiv.md) api的结果的反向计算。 | 18 | 进行[aclnnKlDiv](https://gitcode.com/cann/ops-math/blob/master/math/kl_div_v2/docs/aclnnKlDiv.md) api的结果的反向计算。 |
| @@ -46,7 +45,6 @@ aclnnStatus aclnnKlDivBackward( | |||
| 46 | 45 | ||
| 47 | - **参数说明:** | 46 | - **参数说明:** |
| 48 | 47 | ||
| 49 | - </style> | ||
| 50 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> | 48 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> |
| 51 | <col style="width: 205px"> | 49 | <col style="width: 205px"> |
| 52 | <col style="width: 120px"> | 50 | <col style="width: 120px"> |
| @@ -157,7 +155,6 @@ aclnnStatus aclnnKlDivBackward( | |||
| 157 | 155 | ||
| 158 | 第一段接口完成入参校验,出现以下场景时报错: | 156 | 第一段接口完成入参校验,出现以下场景时报错: |
| 159 | 157 | ||
| 160 | - </style> | ||
| 161 | <table class="tg" style="undefined;table-layout: fixed; width: 991px"><colgroup> | 158 | <table class="tg" style="undefined;table-layout: fixed; width: 991px"><colgroup> |
| 162 | <col style="width: 269px"> | 159 | <col style="width: 269px"> |
| 163 | <col style="width: 90px"> | 160 | <col style="width: 90px"> |
| @@ -242,12 +239,14 @@ aclnnStatus aclnnKlDivBackward( | |||
| 242 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 239 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 243 | 240 | ||
| 244 | ## 约束说明 | 241 | ## 约束说明 |
| 242 | + | ||
| 245 | - 确定性计算: | 243 | - 确定性计算: |
| 246 | - aclnnKlDivBackward默认确定性实现。 | 244 | - aclnnKlDivBackward默认确定性实现。 |
| 247 | 245 | ||
| 248 | ## 调用示例 | 246 | ## 调用示例 |
| 249 | 247 | ||
| 250 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 248 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 249 | + | ||
| 251 | ```Cpp | 250 | ```Cpp |
| 252 | #include <iostream> | 251 | #include <iostream> |
| 253 | #include <vector> | 252 | #include <vector> |
| @@ -400,4 +399,3 @@ int main() { | |||
| 400 | return 0; | 399 | return 0; |
| 401 | } | 400 | } |
| 402 | ``` | 401 | ``` |
| 403 | - | ||
| @@ -13,7 +13,6 @@ | |||
| 13 | | <term>Atlas 推理系列产品</term> | × | | 13 | | <term>Atlas 推理系列产品</term> | × | |
| 14 | | <term>Atlas 训练系列产品</term> | × | | 14 | | <term>Atlas 训练系列产品</term> | × | |
| 15 | 15 | ||
| 16 | - | ||
| 17 | ## 功能说明 | 16 | ## 功能说明 |
| 18 | 17 | ||
| 19 | - 算子功能:进行[aclnnKlDiv](https://gitcode.com/cann/ops-math/blob/master/math/kl_div_v2/docs/aclnnKlDiv.md) api的结果的target反向计算。 | 18 | - 算子功能:进行[aclnnKlDiv](https://gitcode.com/cann/ops-math/blob/master/math/kl_div_v2/docs/aclnnKlDiv.md) api的结果的target反向计算。 |
| @@ -56,7 +55,6 @@ aclnnStatus aclnnKlDivTargetBackward( | |||
| 56 | 55 | ||
| 57 | - **参数说明:** | 56 | - **参数说明:** |
| 58 | 57 | ||
| 59 | - </style> | ||
| 60 | <table class="tg" style="undefined;table-layout: fixed; width: 1445px"><colgroup> | 58 | <table class="tg" style="undefined;table-layout: fixed; width: 1445px"><colgroup> |
| 61 | <col style="width: 205px"> | 59 | <col style="width: 205px"> |
| 62 | <col style="width: 120px"> | 60 | <col style="width: 120px"> |
| @@ -167,7 +165,6 @@ aclnnStatus aclnnKlDivTargetBackward( | |||
| 167 | 165 | ||
| 168 | 第一段接口完成入参校验,出现以下场景时报错: | 166 | 第一段接口完成入参校验,出现以下场景时报错: |
| 169 | 167 | ||
| 170 | - </style> | ||
| 171 | <table class="tg" style="undefined;table-layout: fixed; width: 991px"><colgroup> | 168 | <table class="tg" style="undefined;table-layout: fixed; width: 991px"><colgroup> |
| 172 | <col style="width: 269px"> | 169 | <col style="width: 269px"> |
| 173 | <col style="width: 90px"> | 170 | <col style="width: 90px"> |
| @@ -252,12 +249,14 @@ aclnnStatus aclnnKlDivTargetBackward( | |||
| 252 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 249 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 253 | 250 | ||
| 254 | ## 约束说明 | 251 | ## 约束说明 |
| 255 | -- 确定性计算: | 252 | + |
| 253 | +- 确定性计算: | ||
| 256 | - aclnnKlDivTargetBackward默认确定性实现。 | 254 | - aclnnKlDivTargetBackward默认确定性实现。 |
| 257 | 255 | ||
| 258 | ## 调用示例 | 256 | ## 调用示例 |
| 259 | 257 | ||
| 260 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 258 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 259 | + | ||
| 261 | ```Cpp | 260 | ```Cpp |
| 262 | #include <iostream> | 261 | #include <iostream> |
| 263 | #include <vector> | 262 | #include <vector> |
| @@ -410,4 +409,3 @@ int main() { | |||
| 410 | return 0; | 409 | return 0; |
| 411 | } | 410 | } |
| 412 | ``` | 411 | ``` |
| 413 | - | ||
| @@ -44,7 +44,6 @@ aclnnStatus aclnnBinaryCrossEntropy( | |||
| 44 | 44 | ||
| 45 | - **参数说明:** | 45 | - **参数说明:** |
| 46 | 46 | ||
| 47 | - </style> | ||
| 48 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> | 47 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> |
| 49 | <col style="width: 205px"> | 48 | <col style="width: 205px"> |
| 50 | <col style="width: 120px"> | 49 | <col style="width: 120px"> |
| @@ -144,7 +143,7 @@ aclnnStatus aclnnBinaryCrossEntropy( | |||
| 144 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 143 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 145 | 144 | ||
| 146 | 第一段接口完成入参校验,出现以下场景时报错: | 145 | 第一段接口完成入参校验,出现以下场景时报错: |
| 147 | - </style> | 146 | + |
| 148 | <table class="tg" style="undefined;table-layout: fixed; width: 991px"><colgroup> | 147 | <table class="tg" style="undefined;table-layout: fixed; width: 991px"><colgroup> |
| 149 | <col style="width: 269px"> | 148 | <col style="width: 269px"> |
| 150 | <col style="width: 90px"> | 149 | <col style="width: 90px"> |
| @@ -231,12 +230,14 @@ aclnnStatus aclnnBinaryCrossEntropy( | |||
| 231 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 230 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 232 | 231 | ||
| 233 | ## 约束说明 | 232 | ## 约束说明 |
| 233 | + | ||
| 234 | - 确定性计算: | 234 | - 确定性计算: |
| 235 | - aclnnL1LossBackward默认确定性实现。 | 235 | - aclnnL1LossBackward默认确定性实现。 |
| 236 | 236 | ||
| 237 | ## 调用示例 | 237 | ## 调用示例 |
| 238 | 238 | ||
| 239 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 239 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 240 | + | ||
| 240 | ```Cpp | 241 | ```Cpp |
| 241 | #include <iostream> | 242 | #include <iostream> |
| 242 | #include <vector> | 243 | #include <vector> |
| @@ -58,12 +58,10 @@ aclnnStatus aclnnL1Loss( | |||
| 58 | aclrtStream stream) | 58 | aclrtStream stream) |
| 59 | ``` | 59 | ``` |
| 60 | 60 | ||
| 61 | - | ||
| 62 | ## aclnnL1LossGetWorkspaceSize | 61 | ## aclnnL1LossGetWorkspaceSize |
| 63 | 62 | ||
| 64 | - **参数说明:** | 63 | - **参数说明:** |
| 65 | 64 | ||
| 66 | - </style> | ||
| 67 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> | 65 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> |
| 68 | <col style="width: 205px"> | 66 | <col style="width: 205px"> |
| 69 | <col style="width: 120px"> | 67 | <col style="width: 120px"> |
| @@ -153,7 +151,7 @@ aclnnStatus aclnnL1Loss( | |||
| 153 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 151 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 154 | 152 | ||
| 155 | 第一段接口完成入参校验,出现以下场景时报错: | 153 | 第一段接口完成入参校验,出现以下场景时报错: |
| 156 | - </style> | 154 | + |
| 157 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 155 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 158 | <col style="width: 269px"> | 156 | <col style="width: 269px"> |
| 159 | <col style="width: 120px"> | 157 | <col style="width: 120px"> |
| @@ -1,6 +1,6 @@ | |||
| 1 | # MseLoss | 1 | # MseLoss |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | |产品 | 是否支持 | | 5 | |产品 | 是否支持 | |
| 6 | |:-------------------------|:----------:| | 6 | |:-------------------------|:----------:| |
| @@ -54,7 +54,7 @@ | |||
| 54 | <td>String</td> | 54 | <td>String</td> |
| 55 | <td>ND</td> | 55 | <td>ND</td> |
| 56 | </tr> | 56 | </tr> |
| 57 | - </tr> | 57 | + <tr> |
| 58 | <td>y</td> | 58 | <td>y</td> |
| 59 | <td>输出</td> | 59 | <td>输出</td> |
| 60 | <td>输出的损失tensor</td> | 60 | <td>输出的损失tensor</td> |
| @@ -72,4 +72,4 @@ | |||
| 72 | | 调用方式 | 调用样例 | 说明 | | 72 | | 调用方式 | 调用样例 | 说明 | |
| 73 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| | 73 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| |
| 74 | | aclnn调用 | [test_aclnn_mse_loss](./examples/arch35/test_aclnn_mse_loss.cpp) | 通过[aclnnMseLoss](./docs/aclnnMseLoss.md)接口方式调用MseLoss算子。 | | 74 | | aclnn调用 | [test_aclnn_mse_loss](./examples/arch35/test_aclnn_mse_loss.cpp) | 通过[aclnnMseLoss](./docs/aclnnMseLoss.md)接口方式调用MseLoss算子。 | |
| 75 | -| aclnn调用 | [test_aclnn_mse_loss_out](./examples/arch35/test_aclnn_mse_loss_out.cpp) | 通过[aclnnMseLossOut](./docs/aclnnMseLossOut.md)接口方式调用MseLoss算子。 | | 75 | +| aclnn调用 | [test_aclnn_mse_loss_out](./examples/arch35/test_aclnn_mse_loss_out.cpp) | 通过[aclnnMseLossOut](./docs/aclnnMseLossOut.md)接口方式调用MseLoss算子。 | |
| @@ -61,7 +61,6 @@ aclnnStatus aclnnMseLoss( | |||
| 61 | 61 | ||
| 62 | - **参数说明:** | 62 | - **参数说明:** |
| 63 | 63 | ||
| 64 | - </style> | ||
| 65 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> | 64 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> |
| 66 | <col style="width: 205px"> | 65 | <col style="width: 205px"> |
| 67 | <col style="width: 120px"> | 66 | <col style="width: 120px"> |
| @@ -146,13 +145,12 @@ aclnnStatus aclnnMseLoss( | |||
| 146 | </tr> | 145 | </tr> |
| 147 | </tbody></table> | 146 | </tbody></table> |
| 148 | 147 | ||
| 149 | - | ||
| 150 | - **返回值:** | 148 | - **返回值:** |
| 151 | 149 | ||
| 152 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 150 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 153 | 151 | ||
| 154 | 第一段接口完成入参校验,出现以下场景时报错: | 152 | 第一段接口完成入参校验,出现以下场景时报错: |
| 155 | - </style> | 153 | + |
| 156 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 154 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 157 | <col style="width: 269px"> | 155 | <col style="width: 269px"> |
| 158 | <col style="width: 120px"> | 156 | <col style="width: 120px"> |
| @@ -232,7 +230,6 @@ aclnnStatus aclnnMseLoss( | |||
| 232 | </tbody> | 230 | </tbody> |
| 233 | </table> | 231 | </table> |
| 234 | 232 | ||
| 235 | - | ||
| 236 | - **返回值:** | 233 | - **返回值:** |
| 237 | 234 | ||
| 238 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 235 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -245,6 +242,7 @@ aclnnStatus aclnnMseLoss( | |||
| 245 | ## 调用示例 | 242 | ## 调用示例 |
| 246 | 243 | ||
| 247 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 244 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 245 | + | ||
| 248 | ```Cpp | 246 | ```Cpp |
| 249 | #include <iostream> | 247 | #include <iostream> |
| 250 | #include <vector> | 248 | #include <vector> |
| @@ -62,7 +62,6 @@ aclnnStatus aclnnLaclnnMseLossOut1Loss( | |||
| 62 | 62 | ||
| 63 | - **参数说明:** | 63 | - **参数说明:** |
| 64 | 64 | ||
| 65 | - </style> | ||
| 66 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> | 65 | <table class="tg" style="undefined;table-layout: fixed; width: 1435px"><colgroup> |
| 67 | <col style="width: 205px"> | 66 | <col style="width: 205px"> |
| 68 | <col style="width: 120px"> | 67 | <col style="width: 120px"> |
| @@ -147,13 +146,12 @@ aclnnStatus aclnnLaclnnMseLossOut1Loss( | |||
| 147 | </tr> | 146 | </tr> |
| 148 | </tbody></table> | 147 | </tbody></table> |
| 149 | 148 | ||
| 150 | - | ||
| 151 | - **返回值:** | 149 | - **返回值:** |
| 152 | 150 | ||
| 153 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 151 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 154 | 152 | ||
| 155 | 第一段接口完成入参校验,出现以下场景时报错: | 153 | 第一段接口完成入参校验,出现以下场景时报错: |
| 156 | - </style> | 154 | + |
| 157 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 155 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 158 | <col style="width: 269px"> | 156 | <col style="width: 269px"> |
| 159 | <col style="width: 120px"> | 157 | <col style="width: 120px"> |
| @@ -52,7 +52,7 @@ | |||
| 52 | <tr> | 52 | <tr> |
| 53 | <td>gradOutput</td> | 53 | <td>gradOutput</td> |
| 54 | <td>输入</td> | 54 | <td>输入</td> |
| 55 | - <td>公式中的输入grad | 55 | + <td>公式中的输入grad</td> |
| 56 | <td>BFLOAT16、FLOAT16、FLOAT</td> | 56 | <td>BFLOAT16、FLOAT16、FLOAT</td> |
| 57 | <td>ND</td> | 57 | <td>ND</td> |
| 58 | </tr> | 58 | </tr> |
| @@ -57,7 +57,6 @@ aclnnStatus aclnnMseLossBackward( | |||
| 57 | 57 | ||
| 58 | - **参数说明:** | 58 | - **参数说明:** |
| 59 | 59 | ||
| 60 | - </style> | ||
| 61 | <table class="tg" style="undefined;table-layout: fixed; width: 1475px"><colgroup> | 60 | <table class="tg" style="undefined;table-layout: fixed; width: 1475px"><colgroup> |
| 62 | <col style="width: 205px"> | 61 | <col style="width: 205px"> |
| 63 | <col style="width: 120px"> | 62 | <col style="width: 120px"> |
| @@ -157,7 +156,7 @@ aclnnStatus aclnnMseLossBackward( | |||
| 157 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 156 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 158 | 157 | ||
| 159 | 第一段接口完成入参校验,出现以下场景时报错: | 158 | 第一段接口完成入参校验,出现以下场景时报错: |
| 160 | - </style> | 159 | + |
| 161 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 160 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 162 | <col style="width: 269px"> | 161 | <col style="width: 269px"> |
| 163 | <col style="width: 120px"> | 162 | <col style="width: 120px"> |
| @@ -401,4 +400,4 @@ int main() { | |||
| 401 | aclFinalize(); | 400 | aclFinalize(); |
| 402 | return 0; | 401 | return 0; |
| 403 | } | 402 | } |
| 404 | -``` | 403 | +``` |
| @@ -76,7 +76,6 @@ aclnnStatus aclnnMultilabelMarginLoss( | |||
| 76 | 76 | ||
| 77 | - **参数说明** | 77 | - **参数说明** |
| 78 | 78 | ||
| 79 | - </style> | ||
| 80 | <table class="tg" style="undefined;table-layout: fixed; width: 1475px"><colgroup> | 79 | <table class="tg" style="undefined;table-layout: fixed; width: 1475px"><colgroup> |
| 81 | <col style="width: 205px"> | 80 | <col style="width: 205px"> |
| 82 | <col style="width: 120px"> | 81 | <col style="width: 120px"> |
| @@ -176,7 +175,7 @@ aclnnStatus aclnnMultilabelMarginLoss( | |||
| 176 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 175 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 177 | 176 | ||
| 178 | 第一段接口完成入参校验,出现以下场景时报错: | 177 | 第一段接口完成入参校验,出现以下场景时报错: |
| 179 | - </style> | 178 | + |
| 180 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 179 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 181 | <col style="width: 269px"> | 180 | <col style="width: 269px"> |
| 182 | <col style="width: 120px"> | 181 | <col style="width: 120px"> |
| @@ -425,4 +424,3 @@ int main() { | |||
| 425 | return 0; | 424 | return 0; |
| 426 | } | 425 | } |
| 427 | ``` | 426 | ``` |
| 428 | - | ||
| @@ -65,7 +65,6 @@ aclnnStatus aclnnSmoothL1LossBackward( | |||
| 65 | 65 | ||
| 66 | - **参数说明:** | 66 | - **参数说明:** |
| 67 | 67 | ||
| 68 | - </style> | ||
| 69 | <table class="tg" style="undefined;table-layout: fixed; width: 1547px"><colgroup> | 68 | <table class="tg" style="undefined;table-layout: fixed; width: 1547px"><colgroup> |
| 70 | <col style="width: 217px"> | 69 | <col style="width: 217px"> |
| 71 | <col style="width: 120px"> | 70 | <col style="width: 120px"> |
| @@ -170,13 +169,12 @@ aclnnStatus aclnnSmoothL1LossBackward( | |||
| 170 | </tr> | 169 | </tr> |
| 171 | </tbody></table> | 170 | </tbody></table> |
| 172 | 171 | ||
| 173 | - | ||
| 174 | - **返回值:** | 172 | - **返回值:** |
| 175 | 173 | ||
| 176 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 174 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 177 | 175 | ||
| 178 | 第一段接口完成入参校验,出现以下场景时报错: | 176 | 第一段接口完成入参校验,出现以下场景时报错: |
| 179 | - </style> | 177 | + |
| 180 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 178 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 181 | <col style="width: 269px"> | 179 | <col style="width: 269px"> |
| 182 | <col style="width: 135px"> | 180 | <col style="width: 135px"> |
| @@ -250,18 +248,19 @@ aclnnStatus aclnnSmoothL1LossBackward( | |||
| 250 | </tbody> | 248 | </tbody> |
| 251 | </table> | 249 | </table> |
| 252 | 250 | ||
| 253 | - | ||
| 254 | - **返回值:** | 251 | - **返回值:** |
| 255 | 252 | ||
| 256 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 253 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 257 | 254 | ||
| 258 | ## 约束说明 | 255 | ## 约束说明 |
| 259 | -- 确定性计算: | 256 | + |
| 257 | +- 确定性计算 | ||
| 260 | - aclnnSmoothL1LossBackward默认确定性实现。 | 258 | - aclnnSmoothL1LossBackward默认确定性实现。 |
| 261 | 259 | ||
| 262 | ## 调用示例 | 260 | ## 调用示例 |
| 263 | 261 | ||
| 264 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 262 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 263 | + | ||
| 265 | ```Cpp | 264 | ```Cpp |
| 266 | #include <iostream> | 265 | #include <iostream> |
| 267 | #include <vector> | 266 | #include <vector> |
| @@ -411,4 +410,3 @@ int main() { | |||
| 411 | return 0; | 410 | return 0; |
| 412 | } | 411 | } |
| 413 | ``` | 412 | ``` |
| 414 | - | ||
| @@ -69,7 +69,6 @@ aclnnStatus aclnnSmoothL1Loss( | |||
| 69 | 69 | ||
| 70 | - **参数说明:** | 70 | - **参数说明:** |
| 71 | 71 | ||
| 72 | - </style> | ||
| 73 | <table class="tg" style="undefined;table-layout: fixed; width: 1582px"><colgroup> | 72 | <table class="tg" style="undefined;table-layout: fixed; width: 1582px"><colgroup> |
| 74 | <col style="width: 217px"> | 73 | <col style="width: 217px"> |
| 75 | <col style="width: 120px"> | 74 | <col style="width: 120px"> |
| @@ -169,7 +168,7 @@ aclnnStatus aclnnSmoothL1Loss( | |||
| 169 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 168 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 170 | 169 | ||
| 171 | 第一段接口完成入参校验,出现以下场景时报错: | 170 | 第一段接口完成入参校验,出现以下场景时报错: |
| 172 | - </style> | 171 | + |
| 173 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 172 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 174 | <col style="width: 269px"> | 173 | <col style="width: 269px"> |
| 175 | <col style="width: 135px"> | 174 | <col style="width: 135px"> |
| @@ -257,12 +256,14 @@ aclnnStatus aclnnSmoothL1Loss( | |||
| 257 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md) | 256 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md) |
| 258 | 257 | ||
| 259 | ## 约束说明 | 258 | ## 约束说明 |
| 259 | + | ||
| 260 | - 确定性计算: | 260 | - 确定性计算: |
| 261 | - aclnnSmoothL1Loss默认确定性实现。 | 261 | - aclnnSmoothL1Loss默认确定性实现。 |
| 262 | 262 | ||
| 263 | ## 调用示例 | 263 | ## 调用示例 |
| 264 | 264 | ||
| 265 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 265 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 266 | + | ||
| 266 | ```Cpp | 267 | ```Cpp |
| 267 | #include <iostream> | 268 | #include <iostream> |
| 268 | #include <vector> | 269 | #include <vector> |
| @@ -404,4 +405,3 @@ int main() { | |||
| 404 | return 0; | 405 | return 0; |
| 405 | } | 406 | } |
| 406 | ``` | 407 | ``` |
| 407 | - | ||
| @@ -60,7 +60,6 @@ aclnnStatus aclnnSoftMarginLoss( | |||
| 60 | 60 | ||
| 61 | - **参数说明**: | 61 | - **参数说明**: |
| 62 | 62 | ||
| 63 | - </style> | ||
| 64 | <table class="tg" style="undefined;table-layout: fixed; width: 1547px"><colgroup> | 63 | <table class="tg" style="undefined;table-layout: fixed; width: 1547px"><colgroup> |
| 65 | <col style="width: 217px"> | 64 | <col style="width: 217px"> |
| 66 | <col style="width: 120px"> | 65 | <col style="width: 120px"> |
| @@ -150,7 +149,7 @@ aclnnStatus aclnnSoftMarginLoss( | |||
| 150 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 149 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 151 | 150 | ||
| 152 | 第一段接口完成入参校验,出现以下场景时报错: | 151 | 第一段接口完成入参校验,出现以下场景时报错: |
| 153 | - </style> | 152 | + |
| 154 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 153 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 155 | <col style="width: 269px"> | 154 | <col style="width: 269px"> |
| 156 | <col style="width: 135px"> | 155 | <col style="width: 135px"> |
| @@ -44,7 +44,6 @@ aclnnStatus aclnnSoftMarginLossBackward( | |||
| 44 | 44 | ||
| 45 | - **参数说明**: | 45 | - **参数说明**: |
| 46 | 46 | ||
| 47 | - </style> | ||
| 48 | <table class="tg" style="undefined;table-layout: fixed; width: 1547px"><colgroup> | 47 | <table class="tg" style="undefined;table-layout: fixed; width: 1547px"><colgroup> |
| 49 | <col style="width: 217px"> | 48 | <col style="width: 217px"> |
| 50 | <col style="width: 120px"> | 49 | <col style="width: 120px"> |
| @@ -144,7 +143,7 @@ aclnnStatus aclnnSoftMarginLossBackward( | |||
| 144 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 143 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 145 | 144 | ||
| 146 | 第一段接口完成入参校验,出现以下场景时报错: | 145 | 第一段接口完成入参校验,出现以下场景时报错: |
| 147 | - </style> | 146 | + |
| 148 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 147 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 149 | <col style="width: 269px"> | 148 | <col style="width: 269px"> |
| 150 | <col style="width: 135px"> | 149 | <col style="width: 135px"> |
| @@ -215,7 +214,6 @@ aclnnStatus aclnnSoftMarginLossBackward( | |||
| 215 | </tbody> | 214 | </tbody> |
| 216 | </table> | 215 | </table> |
| 217 | 216 | ||
| 218 | - | ||
| 219 | - **返回值**: | 217 | - **返回值**: |
| 220 | 218 | ||
| 221 | **aclnnStatus**:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 219 | **aclnnStatus**:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -226,7 +224,9 @@ aclnnStatus aclnnSoftMarginLossBackward( | |||
| 226 | - aclnnSoftMarginLossBackward默认确定性实现。 | 224 | - aclnnSoftMarginLossBackward默认确定性实现。 |
| 227 | 225 | ||
| 228 | ## 调用示例 | 226 | ## 调用示例 |
| 227 | + | ||
| 229 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 228 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 229 | + | ||
| 230 | ```Cpp | 230 | ```Cpp |
| 231 | #include <iostream> | 231 | #include <iostream> |
| 232 | #include <vector> | 232 | #include <vector> |
| @@ -11,7 +11,6 @@ | |||
| 11 | | <term>Atlas 推理系列产品</term> | √ | | 11 | | <term>Atlas 推理系列产品</term> | √ | |
| 12 | | <term>Atlas 训练系列产品</term> | √ | | 12 | | <term>Atlas 训练系列产品</term> | √ | |
| 13 | 13 | ||
| 14 | - | ||
| 15 | ## 功能说明 | 14 | ## 功能说明 |
| 16 | 15 | ||
| 17 | - 接口功能:完成矩阵乘计算,然后和向量相加。 | 16 | - 接口功能:完成矩阵乘计算,然后和向量相加。 |
| @@ -37,6 +36,7 @@ aclnnStatus aclnnAddmvGetWorkspaceSize( | |||
| 37 | uint64_t* workspaceSize, | 36 | uint64_t* workspaceSize, |
| 38 | aclOpExecutor** executor) | 37 | aclOpExecutor** executor) |
| 39 | ``` | 38 | ``` |
| 39 | + | ||
| 40 | ```Cpp | 40 | ```Cpp |
| 41 | aclnnStatus aclnnAddmv( | 41 | aclnnStatus aclnnAddmv( |
| 42 | void* workspace, | 42 | void* workspace, |
| @@ -88,7 +88,8 @@ aclnnStatus aclnnAddmv( | |||
| 88 | <td>输入</td> | 88 | <td>输入</td> |
| 89 | <td>和vec进行乘法运算的2维矩阵。</td> | 89 | <td>和vec进行乘法运算的2维矩阵。</td> |
| 90 | <td><ul><li>数据类型需要与self构成<a href="../../../docs/zh/context/互推导关系.md">互推导关系。</a></li> | 90 | <td><ul><li>数据类型需要与self构成<a href="../../../docs/zh/context/互推导关系.md">互推导关系。</a></li> |
| 91 | - <li>shape需要与 vec 满足乘法关系。</ul></td> | 91 | + <li>shape需要与 vec 满足乘法关系。</li> |
| 92 | + </ul></td> | ||
| 92 | <td>BFLOAT16、FLOAT16、FLOAT、INT32、INT64、INT16、INT8、UINT8、DOUBLE、BOOL</td> | 93 | <td>BFLOAT16、FLOAT16、FLOAT、INT32、INT64、INT16、INT8、UINT8、DOUBLE、BOOL</td> |
| 93 | <td>ND</td> | 94 | <td>ND</td> |
| 94 | <td>2</td> | 95 | <td>2</td> |
| @@ -99,7 +100,8 @@ aclnnStatus aclnnAddmv( | |||
| 99 | <td>输入</td> | 100 | <td>输入</td> |
| 100 | <td>和mat进行乘法运算的1维向量。</td> | 101 | <td>和mat进行乘法运算的1维向量。</td> |
| 101 | <td><ul><li>数据类型需要与self构成<a href="../../../docs/zh/context/互推导关系.md">互推导关系。</a></li> | 102 | <td><ul><li>数据类型需要与self构成<a href="../../../docs/zh/context/互推导关系.md">互推导关系。</a></li> |
| 102 | - <li>shape需要与 mat 满足乘法关系。</ul></td> | 103 | + <li>shape需要与 mat 满足乘法关系。</li> |
| 104 | + </ul></td> | ||
| 103 | <td>BFLOAT16、FLOAT16、FLOAT、INT32、INT64、INT16、INT8、UINT8、DOUBLE、BOOL</td> | 105 | <td>BFLOAT16、FLOAT16、FLOAT、INT32、INT64、INT16、INT8、UINT8、DOUBLE、BOOL</td> |
| 104 | <td>ND</td> | 106 | <td>ND</td> |
| 105 | <td>1</td> | 107 | <td>1</td> |
| @@ -130,7 +132,8 @@ aclnnStatus aclnnAddmv( | |||
| 130 | <td>输出</td> | 132 | <td>输出</td> |
| 131 | <td>指定的1维输出向量。</td> | 133 | <td>指定的1维输出向量。</td> |
| 132 | <td><ul><li>数据类型需要是self, mat, vec, alpha, beta<a href="../../../docs/zh/context/互推导关系.md">推导后的数据类型。</a></li> | 134 | <td><ul><li>数据类型需要是self, mat, vec, alpha, beta<a href="../../../docs/zh/context/互推导关系.md">推导后的数据类型。</a></li> |
| 133 | - <li>shape与mat和vec的乘积相同。</ul></td> | 135 | + <li>shape与mat和vec的乘积相同。</li> |
| 136 | + </ul></td> | ||
| 134 | <td>BFLOAT16、FLOAT16、FLOAT、INT32、INT64、INT16、INT8、UINT8、DOUBLE</td> | 137 | <td>BFLOAT16、FLOAT16、FLOAT、INT32、INT64、INT16、INT8、UINT8、DOUBLE</td> |
| 135 | <td>ND</td> | 138 | <td>ND</td> |
| 136 | <td>1</td> | 139 | <td>1</td> |
| @@ -188,7 +191,6 @@ aclnnStatus aclnnAddmv( | |||
| 188 | 191 | ||
| 189 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 192 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 190 | 193 | ||
| 191 | - | ||
| 192 | 第一段接口完成入参校验,出现如下场景时报错: | 194 | 第一段接口完成入参校验,出现如下场景时报错: |
| 193 | 195 | ||
| 194 | <table style="undefined;table-layout: fixed; width: 1149px"><colgroup> | 196 | <table style="undefined;table-layout: fixed; width: 1149px"><colgroup> |
| @@ -35,6 +35,7 @@ self必须要支持和batch1@batch2的结果做broadcast。(broadcast,广播 | |||
| 35 | - aclnnBaddbmm:需新建一个输出张量对象存储计算结果。 | 35 | - aclnnBaddbmm:需新建一个输出张量对象存储计算结果。 |
| 36 | - aclnnInplaceBaddbmm:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。 | 36 | - aclnnInplaceBaddbmm:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。 |
| 37 | - 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnBaddbmmGetWorkspaceSize”接口获取入参并根据流程计算所需workspace大小,再调用“aclnnBaddbmm”接口执行计算。 | 37 | - 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnBaddbmmGetWorkspaceSize”接口获取入参并根据流程计算所需workspace大小,再调用“aclnnBaddbmm”接口执行计算。 |
| 38 | + | ||
| 38 | ```cpp | 39 | ```cpp |
| 39 | aclnnStatus aclnnBaddbmmGetWorkspaceSize( | 40 | aclnnStatus aclnnBaddbmmGetWorkspaceSize( |
| 40 | const aclTensor* self, | 41 | const aclTensor* self, |
| @@ -47,6 +48,7 @@ aclnnStatus aclnnBaddbmmGetWorkspaceSize( | |||
| 47 | uint64_t* workspaceSize, | 48 | uint64_t* workspaceSize, |
| 48 | aclOpExecutor** executor) | 49 | aclOpExecutor** executor) |
| 49 | ``` | 50 | ``` |
| 51 | + | ||
| 50 | ```cpp | 52 | ```cpp |
| 51 | aclnnStatus aclnnBaddbmm( | 53 | aclnnStatus aclnnBaddbmm( |
| 52 | void* workspace, | 54 | void* workspace, |
| @@ -66,6 +68,7 @@ aclnnStatus aclnnInplaceBaddbmmGetWorkspaceSize( | |||
| 66 | uint64_t* workspaceSize, | 68 | uint64_t* workspaceSize, |
| 67 | aclOpExecutor** executor) | 69 | aclOpExecutor** executor) |
| 68 | ``` | 70 | ``` |
| 71 | + | ||
| 69 | ```cpp | 72 | ```cpp |
| 70 | aclnnStatus aclnnInplaceBaddbmm( | 73 | aclnnStatus aclnnInplaceBaddbmm( |
| 71 | void* workspace, | 74 | void* workspace, |
| @@ -339,7 +342,8 @@ aclnnStatus aclnnInplaceBaddbmm( | |||
| 339 | <td>输入|输出</td> | 342 | <td>输入|输出</td> |
| 340 | <td>输入输出tensor,即公式中的输入self与out。</td> | 343 | <td>输入输出tensor,即公式中的输入self与out。</td> |
| 341 | <td><ul> | 344 | <td><ul> |
| 342 | - <li>数据类型与batch1@batch2的数据类型需满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。<li>shape后两维需要与batch1@batch2后两维一致。</li> | 345 | + <li>数据类型与batch1@batch2的数据类型需满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。</li> |
| 346 | + <li>shape后两维需要与batch1@batch2后两维一致。</li> | ||
| 343 | <li>支持空Tensor。</li></ul></td> | 347 | <li>支持空Tensor。</li></ul></td> |
| 344 | <td>BFLOAT16、FLOAT16、FLOAT32</td> | 348 | <td>BFLOAT16、FLOAT16、FLOAT32</td> |
| 345 | <td>ND</td> | 349 | <td>ND</td> |
| @@ -538,6 +542,7 @@ aclnnStatus aclnnInplaceBaddbmm( | |||
| 538 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 542 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 539 | 543 | ||
| 540 | ## 约束说明 | 544 | ## 约束说明 |
| 545 | + | ||
| 541 | - 确定性说明: | 546 | - 确定性说明: |
| 542 | aclnnBaddbmm&aclnnInplaceBaddbmm默认确定性实现。 | 547 | aclnnBaddbmm&aclnnInplaceBaddbmm默认确定性实现。 |
| 543 | 548 | ||
| @@ -545,7 +550,9 @@ aclnnBaddbmm&aclnnInplaceBaddbmm默认确定性实现。 | |||
| 545 | - <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>:不支持batch1和batch2两输入其中一个输入为BFLOAT16, 另一个输入为FLOAT或FLOAT16的数据类型推导。 | 550 | - <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>:不支持batch1和batch2两输入其中一个输入为BFLOAT16, 另一个输入为FLOAT或FLOAT16的数据类型推导。 |
| 546 | 551 | ||
| 547 | ## 调用示例 | 552 | ## 调用示例 |
| 553 | + | ||
| 548 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 554 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 555 | + | ||
| 549 | ```Cpp | 556 | ```Cpp |
| 550 | #include <iostream> | 557 | #include <iostream> |
| 551 | #include <vector> | 558 | #include <vector> |
| @@ -1,6 +1,6 @@ | |||
| 1 | # FusedLinearCrossEntropyLossGrad | 1 | # FusedLinearCrossEntropyLossGrad |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | | :----------------------------------------------------------- | :------: | | 6 | | :----------------------------------------------------------- | :------: | |
| @@ -47,7 +47,7 @@ $$ | |||
| 47 | \text{grad\_weight} = \text{softmax}^T \cdot \text{input} \in \mathbb{R}^{V \times H} | 47 | \text{grad\_weight} = \text{softmax}^T \cdot \text{input} \in \mathbb{R}^{V \times H} |
| 48 | $$ | 48 | $$ |
| 49 | 49 | ||
| 50 | -</br> | 50 | +<br> |
| 51 |   省显存模式,softmaxOptional为nullptr: | 51 |   省显存模式,softmaxOptional为nullptr: |
| 52 | 52 | ||
| 53 | $$ | 53 | $$ |
| @@ -106,4 +106,4 @@ $$ | |||
| 106 | 106 | ||
| 107 | | 调用方式 | 调用样例 | 说明 | | 107 | | 调用方式 | 调用样例 | 说明 | |
| 108 | |-----------|-------------------------------------|-------------------------------------| | 108 | |-----------|-------------------------------------|-------------------------------------| |
| 109 | -| aclnn调用 | [test_aclnn_fused_linear_cross_entropy_loss_grad](./examples/test_aclnn_fused_linear_cross_entropy_loss_grad.cpp) | 通过aclnnFusedLinearCrossEntropyLossGrad接口方式调用FusedLinearCrossEntropyLossGrad算子。 | | 109 | +| aclnn调用 | [test_aclnn_fused_linear_cross_entropy_loss_grad](./examples/test_aclnn_fused_linear_cross_entropy_loss_grad.cpp) | 通过aclnnFusedLinearCrossEntropyLossGrad接口方式调用FusedLinearCrossEntropyLossGrad算子。 | |
| @@ -49,7 +49,7 @@ $$ | |||
| 49 | \text{grad\_weight} = \text{softmax}^T \cdot \text{input} \in \mathbb{R}^{V \times H} | 49 | \text{grad\_weight} = \text{softmax}^T \cdot \text{input} \in \mathbb{R}^{V \times H} |
| 50 | $$ | 50 | $$ |
| 51 | 51 | ||
| 52 | -</br> | 52 | +<br> |
| 53 |   省显存模式,softmaxOptional为nullptr: | 53 |   省显存模式,softmaxOptional为nullptr: |
| 54 | 54 | ||
| 55 | $$ | 55 | $$ |
| @@ -120,6 +120,7 @@ $$ | |||
| 120 | uint64_t *workspaceSize, | 120 | uint64_t *workspaceSize, |
| 121 | aclOpExecutor **executor) | 121 | aclOpExecutor **executor) |
| 122 | ``` | 122 | ``` |
| 123 | + | ||
| 123 | ```Cpp | 124 | ```Cpp |
| 124 | aclnnStatus aclnnFusedLinearCrossEntropyLossGrad( | 125 | aclnnStatus aclnnFusedLinearCrossEntropyLossGrad( |
| 125 | void *workspace, | 126 | void *workspace, |
| @@ -378,6 +379,7 @@ $$ | |||
| 378 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 379 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 379 | 380 | ||
| 380 | ## 约束说明 | 381 | ## 约束说明 |
| 382 | + | ||
| 381 | - 确定性说明: | 383 | - 确定性说明: |
| 382 | - aclnnFusedLinearCrossEntropyLossGrad默认确定性实现。 | 384 | - aclnnFusedLinearCrossEntropyLossGrad默认确定性实现。 |
| 383 | 385 | ||
| @@ -612,4 +614,4 @@ int main() | |||
| 612 | 614 | ||
| 613 | return 0; | 615 | return 0; |
| 614 | } | 616 | } |
| 615 | -``` | 617 | +``` |
| @@ -1,7 +1,6 @@ | |||
| 1 | # FusedMatMul | 1 | # FusedMatMul |
| 2 | 2 | ||
| 3 | - | 3 | +## 产品支持情况 |
| 4 | -## 产品支持情况 | ||
| 5 | 4 | ||
| 6 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 7 | | :----------------------------------------------------------- | :------: | | 6 | | :----------------------------------------------------------- | :------: | |
| @@ -21,7 +20,6 @@ | |||
| 21 | y = OP((x1 @ x2 + bias), x3) | 20 | y = OP((x1 @ x2 + bias), x3) |
| 22 | $$ | 21 | $$ |
| 23 | 22 | ||
| 24 | - | ||
| 25 | ## 参数说明 | 23 | ## 参数说明 |
| 26 | 24 | ||
| 27 | <table style="undefined;table-layout: fixed; width: 1550px"><colgroup> | 25 | <table style="undefined;table-layout: fixed; width: 1550px"><colgroup> |
| @@ -48,7 +46,7 @@ | |||
| 48 | <td>x1</td> | 46 | <td>x1</td> |
| 49 | <td>输入</td> | 47 | <td>输入</td> |
| 50 | <td>公式中的输入x1。</td> | 48 | <td>公式中的输入x1。</td> |
| 51 | - <td><ul><li>数据类型需要与x2满足数据类型推导规则(参见<a href="../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></td> | 49 | + <td><ul><li>数据类型需要与x2满足数据类型推导规则(参见<a href="../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></ul></td> |
| 52 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 50 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 53 | <td>ND</td> | 51 | <td>ND</td> |
| 54 | </tr> | 52 | </tr> |
| @@ -56,7 +54,7 @@ | |||
| 56 | <td>x2</td> | 54 | <td>x2</td> |
| 57 | <td>输入</td> | 55 | <td>输入</td> |
| 58 | <td>公式中的输入x2。</td> | 56 | <td>公式中的输入x2。</td> |
| 59 | - <td><ul><li>数据类型需要与x1满足数据类型推导规则(参见<a href="../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></td> | 57 | + <td><ul><li>数据类型需要与x1满足数据类型推导规则(参见<a href="../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></ul></td> |
| 60 | <td>数据类型与x1保持一致</td> | 58 | <td>数据类型与x1保持一致</td> |
| 61 | <td>ND</td> | 59 | <td>ND</td> |
| 62 | </tr> | 60 | </tr> |
| @@ -64,7 +62,7 @@ | |||
| 64 | <td>bias</td> | 62 | <td>bias</td> |
| 65 | <td>输入</td> | 63 | <td>输入</td> |
| 66 | <td>公式中的输入bias。</td> | 64 | <td>公式中的输入bias。</td> |
| 67 | - <td><ul><li>仅当fusedOpType为""、"relu"、"add"、"mul"时生效,其他情况传入空指针即可。</li></td> | 65 | + <td><ul><li>仅当fusedOpType为""、"relu"、"add"、"mul"时生效,其他情况传入空指针即可。</li></ul></td> |
| 68 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 66 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 69 | <td>ND</td> | 67 | <td>ND</td> |
| 70 | </tr> | 68 | </tr> |
| @@ -72,7 +70,7 @@ | |||
| 72 | <td>x3</td> | 70 | <td>x3</td> |
| 73 | <td>输入</td> | 71 | <td>输入</td> |
| 74 | <td>公式中的输入x3。</td> | 72 | <td>公式中的输入x3。</td> |
| 75 | - <td><ul>-</td> | 73 | + <td>-</td> |
| 76 | <td>数据类型与x1保持一致</td> | 74 | <td>数据类型与x1保持一致</td> |
| 77 | <td>ND</td> | 75 | <td>ND</td> |
| 78 | </tr> | 76 | </tr> |
| @@ -80,7 +78,7 @@ | |||
| 80 | <td>fusedOpType</td> | 78 | <td>fusedOpType</td> |
| 81 | <td>输入</td> | 79 | <td>输入</td> |
| 82 | <td>公式中的输入OP。</td> | 80 | <td>公式中的输入OP。</td> |
| 83 | - <td><ul><li>融合模式取值必须是""(表示不做融合)、"add"、"mul"、"gelu_erf"、"gelu_tanh"、"relu"中的一种。</li></td> | 81 | + <td><ul><li>融合模式取值必须是""(表示不做融合)、"add"、"mul"、"gelu_erf"、"gelu_tanh"、"relu"中的一种。</li></ul></td> |
| 84 | <td>STRING</td> | 82 | <td>STRING</td> |
| 85 | <td>-</td> | 83 | <td>-</td> |
| 86 | </tr> | 84 | </tr> |
| @@ -88,16 +86,16 @@ | |||
| 88 | <td>y</td> | 86 | <td>y</td> |
| 89 | <td>输出</td> | 87 | <td>输出</td> |
| 90 | <td>公式中的输出y。</td> | 88 | <td>公式中的输出y。</td> |
| 91 | - <td><ul><li>数据类型需要与x1和x2推导后的数据类型一致(参见<a href="../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></td> | 89 | + <td><ul><li>数据类型需要与x1和x2推导后的数据类型一致(参见<a href="../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></ul></td> |
| 92 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 90 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 93 | <td>ND</td> | 91 | <td>ND</td> |
| 94 | </tr> | 92 | </tr> |
| 95 | </tbody></table> | 93 | </tbody></table> |
| 96 | 94 | ||
| 97 | - | ||
| 98 | ## 约束说明 | 95 | ## 约束说明 |
| 99 | 96 | ||
| 100 | - 当fusedOpType取值为"gelu_erf"、"gelu_tanh"时,x1、x2、x3的数据类型必须为BFLOAT16、FLOAT16;当fusedOpType为""、"relu"、"add"、"mul"时, x1、x2、x3的数据类型必须为FLOAT32(仅支持使能HFLOAT32场景)、BFLOAT16、FLOAT16。 | 97 | - 当fusedOpType取值为"gelu_erf"、"gelu_tanh"时,x1、x2、x3的数据类型必须为BFLOAT16、FLOAT16;当fusedOpType为""、"relu"、"add"、"mul"时, x1、x2、x3的数据类型必须为FLOAT32(仅支持使能HFLOAT32场景)、BFLOAT16、FLOAT16。 |
| 98 | + | ||
| 101 | ## 调用说明 | 99 | ## 调用说明 |
| 102 | 100 | ||
| 103 | <table style="undefined;table-layout: fixed; width: 900px"><colgroup> | 101 | <table style="undefined;table-layout: fixed; width: 900px"><colgroup> |
| @@ -117,4 +115,4 @@ | |||
| 117 | <td><a href="examples/arch35/test_aclnn_fused_mat_mul.cpp">test_aclnn_fused_mat_mul</a></td> | 115 | <td><a href="examples/arch35/test_aclnn_fused_mat_mul.cpp">test_aclnn_fused_mat_mul</a></td> |
| 118 | <td>通过<a href="docs/aclnnFusedMatmul.md">aclnnFusedMatmul</a>接口方式调用FusedMatmul算子</td> | 116 | <td>通过<a href="docs/aclnnFusedMatmul.md">aclnnFusedMatmul</a>接口方式调用FusedMatmul算子</td> |
| 119 | </tr> | 117 | </tr> |
| 120 | - </tbody></table> | 118 | + </tbody></table> |
| @@ -68,6 +68,7 @@ aclnnStatus aclnnFusedMatmulGetWorkspaceSize( | |||
| 68 | uint64_t *workspaceSize, | 68 | uint64_t *workspaceSize, |
| 69 | aclOpExecutor **executor) | 69 | aclOpExecutor **executor) |
| 70 | ``` | 70 | ``` |
| 71 | + | ||
| 71 | ```cpp | 72 | ```cpp |
| 72 | aclnnStatus aclnnFusedMatmul( | 73 | aclnnStatus aclnnFusedMatmul( |
| 73 | void *workspace, | 74 | void *workspace, |
| @@ -105,7 +106,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 105 | <td>x1</td> | 106 | <td>x1</td> |
| 106 | <td>输入</td> | 107 | <td>输入</td> |
| 107 | <td>表示矩阵乘的第一个矩阵,对应公式中的x1。</td> | 108 | <td>表示矩阵乘的第一个矩阵,对应公式中的x1。</td> |
| 108 | - <td><ul><li>数据类型需要与x2满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></td> | 109 | + <td>数据类型需要与x2满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</td> |
| 109 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 110 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 110 | <td>ND</td> | 111 | <td>ND</td> |
| 111 | <td>2</td> | 112 | <td>2</td> |
| @@ -115,7 +116,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 115 | <td>x2</td> | 116 | <td>x2</td> |
| 116 | <td>输入</td> | 117 | <td>输入</td> |
| 117 | <td>表示矩阵乘的第二个矩阵,对应公式中的x2。</td> | 118 | <td>表示矩阵乘的第二个矩阵,对应公式中的x2。</td> |
| 118 | - <td><ul><li>数据类型需要与x1满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></td> | 119 | + <td>数据类型需要与x1满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</td> |
| 119 | <td>数据类型与x1保持一致</td> | 120 | <td>数据类型与x1保持一致</td> |
| 120 | <td>ND</td> | 121 | <td>ND</td> |
| 121 | <td>2</td> | 122 | <td>2</td> |
| @@ -125,7 +126,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 125 | <td>bias</td> | 126 | <td>bias</td> |
| 126 | <td>输入</td> | 127 | <td>输入</td> |
| 127 | <td>表示偏置项,对应公式中的bias。</td> | 128 | <td>表示偏置项,对应公式中的bias。</td> |
| 128 | - <td><ul><li>仅当fusedOpType为""、"relu"、"add"、"mul"时生效,其他情况传入空指针即可。</li></td> | 129 | + <td>仅当fusedOpType为""、"relu"、"add"、"mul"时生效,其他情况传入空指针即可。</td> |
| 129 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 130 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 130 | <td>ND</td> | 131 | <td>ND</td> |
| 131 | <td>1-2</td> | 132 | <td>1-2</td> |
| @@ -135,7 +136,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 135 | <td>x3</td> | 136 | <td>x3</td> |
| 136 | <td>输入</td> | 137 | <td>输入</td> |
| 137 | <td>表示融合操作的第二个矩阵,对应公式中的x3。</td> | 138 | <td>表示融合操作的第二个矩阵,对应公式中的x3。</td> |
| 138 | - <td><ul>-</td> | 139 | + <td>-</td> |
| 139 | <td>数据类型与x1保持一致</td> | 140 | <td>数据类型与x1保持一致</td> |
| 140 | <td>ND</td> | 141 | <td>ND</td> |
| 141 | <td>2</td> | 142 | <td>2</td> |
| @@ -145,7 +146,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 145 | <td>y</td> | 146 | <td>y</td> |
| 146 | <td>输出</td> | 147 | <td>输出</td> |
| 147 | <td>表示计算的输出矩阵,对应公式中的y。</td> | 148 | <td>表示计算的输出矩阵,对应公式中的y。</td> |
| 148 | - <td><ul><li>数据类型需要与x1和x2推导后的数据类型一致(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</li></td> | 149 | + <td>数据类型需要与x1和x2推导后的数据类型一致(参见<a href="../../../docs/zh/context/互推导关系.md" target="_blank">互推导关系</a>)。</td> |
| 149 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 150 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 150 | <td>ND</td> | 151 | <td>ND</td> |
| 151 | <td>2</td> | 152 | <td>2</td> |
| @@ -171,7 +172,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 171 | <td>fusedOpType</td> | 172 | <td>fusedOpType</td> |
| 172 | <td>输入</td> | 173 | <td>输入</td> |
| 173 | <td>表示指定Matmul算子支持的融合模式,对应公式中的OP。</td> | 174 | <td>表示指定Matmul算子支持的融合模式,对应公式中的OP。</td> |
| 174 | - <td><ul><li>融合模式取值必须是""(表示不做融合)、"add"、"mul"、"gelu_erf"、"gelu_tanh"、"relu"中的一种。</li></td> | 175 | + <td>融合模式取值必须是""(表示不做融合)、"add"、"mul"、"gelu_erf"、"gelu_tanh"、"relu"中的一种。</td> |
| 175 | <td>STRING</td> | 176 | <td>STRING</td> |
| 176 | <td>-</td> | 177 | <td>-</td> |
| 177 | <td>-</td> | 178 | <td>-</td> |
| @@ -181,7 +182,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 181 | <td>workspaceSize</td> | 182 | <td>workspaceSize</td> |
| 182 | <td>输出</td> | 183 | <td>输出</td> |
| 183 | <td>返回用户需要在Device侧申请的workspace大小。</td> | 184 | <td>返回用户需要在Device侧申请的workspace大小。</td> |
| 184 | - <td><ul>-</td> | 185 | + <td>-</td> |
| 185 | <td>-</td> | 186 | <td>-</td> |
| 186 | <td>-</td> | 187 | <td>-</td> |
| 187 | <td>-</td> | 188 | <td>-</td> |
| @@ -191,7 +192,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 191 | <td>executor</td> | 192 | <td>executor</td> |
| 192 | <td>输出</td> | 193 | <td>输出</td> |
| 193 | <td>返回op执行器,包含了算子计算流程。</td> | 194 | <td>返回op执行器,包含了算子计算流程。</td> |
| 194 | - <td><ul>-</td> | 195 | + <td>-</td> |
| 195 | <td>-</td> | 196 | <td>-</td> |
| 196 | <td>-</td> | 197 | <td>-</td> |
| 197 | <td>-</td> | 198 | <td>-</td> |
| @@ -258,7 +259,6 @@ aclnnStatus aclnnFusedMatmul( | |||
| 258 | </tr> | 259 | </tr> |
| 259 | </tbody></table> | 260 | </tbody></table> |
| 260 | 261 | ||
| 261 | - | ||
| 262 | ## aclnnFusedMatmul | 262 | ## aclnnFusedMatmul |
| 263 | 263 | ||
| 264 | - **参数说明:** | 264 | - **参数说明:** |
| @@ -301,6 +301,7 @@ aclnnStatus aclnnFusedMatmul( | |||
| 301 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 301 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 302 | 302 | ||
| 303 | ## 约束说明 | 303 | ## 约束说明 |
| 304 | + | ||
| 304 | - 确定性说明: | 305 | - 确定性说明: |
| 305 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>:aclnnFusedMatmul默认确定性实现。 | 306 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>:aclnnFusedMatmul默认确定性实现。 |
| 306 | 307 | ||
| @@ -460,4 +461,4 @@ int main() { | |||
| 460 | aclFinalize(); | 461 | aclFinalize(); |
| 461 | return 0; | 462 | return 0; |
| 462 | } | 463 | } |
| 463 | -``` | 464 | +``` |
| @@ -1,7 +1,6 @@ | |||
| 1 | # GemmV3 | 1 | # GemmV3 |
| 2 | 2 | ||
| 3 | - | 3 | +## 产品支持情况 |
| 4 | -## 产品支持情况 | ||
| 5 | 4 | ||
| 6 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 7 | | ---- | :----:| | 6 | | ---- | :----:| |
| @@ -98,7 +97,7 @@ | |||
| 98 | <tbody> | 97 | <tbody> |
| 99 | <tr> | 98 | <tr> |
| 100 | <td>aclnn接口</td> | 99 | <td>aclnn接口</td> |
| 101 | - <td>test_aclnn_gemmv3</a></td> | 100 | + <td>test_aclnn_gemmv3</td> |
| 102 | - <td>参考示例算子调用aclnnGemmv3</a>接口方式调用Gemmv3算子</td> | 101 | + <td>参考示例算子调用aclnnGemmv3接口方式调用Gemmv3算子</td> |
| 103 | </tr> | 102 | </tr> |
| 104 | - </tbody></table> | 103 | + </tbody></table> |
| @@ -32,6 +32,7 @@ | |||
| 32 | - aclnnAddmm:需新建一个输出张量对象存储计算结果。 | 32 | - aclnnAddmm:需新建一个输出张量对象存储计算结果。 |
| 33 | - aclnnInplaceAddmm:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。 | 33 | - aclnnInplaceAddmm:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。 |
| 34 | - 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnAddmmGetWorkspaceSize” 或者 “aclnnInplaceAddmmGetWorkspaceSize” 接口获取入参并根据计算流程计算所需workspace大小,再调用 “aclnnAddmm” 或者 “aclnnInplaceAddmm” 接口执行计算。 | 34 | - 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnAddmmGetWorkspaceSize” 或者 “aclnnInplaceAddmmGetWorkspaceSize” 接口获取入参并根据计算流程计算所需workspace大小,再调用 “aclnnAddmm” 或者 “aclnnInplaceAddmm” 接口执行计算。 |
| 35 | + | ||
| 35 | ```cpp | 36 | ```cpp |
| 36 | aclnnStatus aclnnAddmmGetWorkspaceSize( | 37 | aclnnStatus aclnnAddmmGetWorkspaceSize( |
| 37 | const aclTensor *self, | 38 | const aclTensor *self, |
| @@ -44,6 +45,7 @@ aclnnStatus aclnnAddmmGetWorkspaceSize( | |||
| 44 | uint64_t *workspaceSize, | 45 | uint64_t *workspaceSize, |
| 45 | aclOpExecutor **executor) | 46 | aclOpExecutor **executor) |
| 46 | ``` | 47 | ``` |
| 48 | + | ||
| 47 | ```cpp | 49 | ```cpp |
| 48 | aclnnStatus aclnnAddmm( | 50 | aclnnStatus aclnnAddmm( |
| 49 | void *workspace, | 51 | void *workspace, |
| @@ -51,6 +53,7 @@ aclnnStatus aclnnAddmm( | |||
| 51 | aclOpExecutor *executor, | 53 | aclOpExecutor *executor, |
| 52 | aclrtStream stream) | 54 | aclrtStream stream) |
| 53 | ``` | 55 | ``` |
| 56 | + | ||
| 54 | ```cpp | 57 | ```cpp |
| 55 | aclnnStatus aclnnInplaceAddmmGetWorkspaceSize( | 58 | aclnnStatus aclnnInplaceAddmmGetWorkspaceSize( |
| 56 | const aclTensor *selfRef, | 59 | const aclTensor *selfRef, |
| @@ -62,6 +65,7 @@ aclnnStatus aclnnInplaceAddmmGetWorkspaceSize( | |||
| 62 | uint64_t *workspaceSize, | 65 | uint64_t *workspaceSize, |
| 63 | aclOpExecutor **executor) | 66 | aclOpExecutor **executor) |
| 64 | ``` | 67 | ``` |
| 68 | + | ||
| 65 | ```cpp | 69 | ```cpp |
| 66 | aclnnStatus aclnnInplaceAddmm( | 70 | aclnnStatus aclnnInplaceAddmm( |
| 67 | void *workspace, | 71 | void *workspace, |
| @@ -153,6 +157,7 @@ aclnnStatus aclnnInplaceAddmm( | |||
| 153 | <td>-</td> | 157 | <td>-</td> |
| 154 | <td>-</td> | 158 | <td>-</td> |
| 155 | </tr> | 159 | </tr> |
| 160 | + <tr> | ||
| 156 | <td>out</td> | 161 | <td>out</td> |
| 157 | <td>输出</td> | 162 | <td>输出</td> |
| 158 | <td>表示矩阵乘的输出矩阵,公式中的out。</td> | 163 | <td>表示矩阵乘的输出矩阵,公式中的out。</td> |
| @@ -290,7 +295,6 @@ aclnnStatus aclnnInplaceAddmm( | |||
| 290 | </tbody> | 295 | </tbody> |
| 291 | </table> | 296 | </table> |
| 292 | 297 | ||
| 293 | - | ||
| 294 | - **返回值** | 298 | - **返回值** |
| 295 | 299 | ||
| 296 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 300 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -352,7 +356,6 @@ aclnnStatus aclnnInplaceAddmm( | |||
| 352 | <td>2</td> | 356 | <td>2</td> |
| 353 | <td>√</td> | 357 | <td>√</td> |
| 354 | </tr> | 358 | </tr> |
| 355 | - <tr> | ||
| 356 | <tr> | 359 | <tr> |
| 357 | <td>beta(β)</td> | 360 | <td>beta(β)</td> |
| 358 | <td>输入</td> | 361 | <td>输入</td> |
| @@ -372,6 +375,7 @@ aclnnStatus aclnnInplaceAddmm( | |||
| 372 | <td>-</td> | 375 | <td>-</td> |
| 373 | <td>-</td> | 376 | <td>-</td> |
| 374 | <td>-</td> | 377 | <td>-</td> |
| 378 | + </tr> | ||
| 375 | <tr> | 379 | <tr> |
| 376 | <td>cubeMathType</td> | 380 | <td>cubeMathType</td> |
| 377 | <td>输入</td> | 381 | <td>输入</td> |
| @@ -462,12 +466,10 @@ aclnnStatus aclnnInplaceAddmm( | |||
| 462 | </tbody> | 466 | </tbody> |
| 463 | </table> | 467 | </table> |
| 464 | 468 | ||
| 465 | - | ||
| 466 | ## aclnnInplaceAddmm | 469 | ## aclnnInplaceAddmm |
| 467 | 470 | ||
| 468 | - **参数说明** | 471 | - **参数说明** |
| 469 | 472 | ||
| 470 | - | ||
| 471 | <table style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 473 | <table style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 472 | <col style="width: 168px"> | 474 | <col style="width: 168px"> |
| 473 | <col style="width: 128px"> | 475 | <col style="width: 128px"> |
| @@ -503,12 +505,12 @@ aclnnStatus aclnnInplaceAddmm( | |||
| 503 | </tbody> | 505 | </tbody> |
| 504 | </table> | 506 | </table> |
| 505 | 507 | ||
| 506 | - | ||
| 507 | - **返回值** | 508 | - **返回值** |
| 508 | 509 | ||
| 509 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 510 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 510 | 511 | ||
| 511 | ## 约束说明 | 512 | ## 约束说明 |
| 513 | + | ||
| 512 | - 确定性说明: | 514 | - 确定性说明: |
| 513 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>:aclnnAddmm&aclnnInplaceAddmm默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。 | 515 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>:aclnnAddmm&aclnnInplaceAddmm默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。 |
| 514 | - <term>Ascend 950PR/Ascend 950DT</term>: aclnnAddmm&aclnnInplaceAddmm默认确定性实现。 | 516 | - <term>Ascend 950PR/Ascend 950DT</term>: aclnnAddmm&aclnnInplaceAddmm默认确定性实现。 |
| @@ -519,9 +521,10 @@ aclnnStatus aclnnInplaceAddmm( | |||
| 519 | - aclnnAddmm&aclnnInplaceAddmm默认非一致性实现,支持通过aclrtCtxSetSysParamOpt开启一致性。 | 521 | - aclnnAddmm&aclnnInplaceAddmm默认非一致性实现,支持通过aclrtCtxSetSysParamOpt开启一致性。 |
| 520 | - 例如,在进行矩阵乘时,不同基本块的累加顺序可能不同,这可能会导致相同数据在不同行的计算结果出现细微差异。然而,在开启强一致性计算的情况下,即使在不同的行中,只要输入相同,计算结果也将相同。 | 522 | - 例如,在进行矩阵乘时,不同基本块的累加顺序可能不同,这可能会导致相同数据在不同行的计算结果出现细微差异。然而,在开启强一致性计算的情况下,即使在不同的行中,只要输入相同,计算结果也将相同。 |
| 521 | 523 | ||
| 522 | - | ||
| 523 | ## 调用示例 | 524 | ## 调用示例 |
| 525 | + | ||
| 524 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 526 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 527 | + | ||
| 525 | ```Cpp | 528 | ```Cpp |
| 526 | #include <iostream> | 529 | #include <iostream> |
| 527 | #include <vector> | 530 | #include <vector> |
| @@ -27,8 +27,8 @@ | |||
| 27 | 27 | ||
| 28 | ## 函数原型 | 28 | ## 函数原型 |
| 29 | 29 | ||
| 30 | - | ||
| 31 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnAddmmWeightNzGetWorkspaceSize” 接口获取入参并根据计算流程计算所需workspace大小,再调用 “aclnnAddmmWeightNz”接口执行计算。 | 30 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnAddmmWeightNzGetWorkspaceSize” 接口获取入参并根据计算流程计算所需workspace大小,再调用 “aclnnAddmmWeightNz”接口执行计算。 |
| 31 | + | ||
| 32 | ```cpp | 32 | ```cpp |
| 33 | aclnnStatus aclnnAddmmWeightNzGetWorkspaceSize( | 33 | aclnnStatus aclnnAddmmWeightNzGetWorkspaceSize( |
| 34 | const aclTensor *self, | 34 | const aclTensor *self, |
| @@ -41,6 +41,7 @@ aclnnStatus aclnnAddmmWeightNzGetWorkspaceSize( | |||
| 41 | uint64_t *workspaceSize, | 41 | uint64_t *workspaceSize, |
| 42 | aclOpExecutor **executor) | 42 | aclOpExecutor **executor) |
| 43 | ``` | 43 | ``` |
| 44 | + | ||
| 44 | ```cpp | 45 | ```cpp |
| 45 | aclnnStatus aclnnAddmmWeightNz( | 46 | aclnnStatus aclnnAddmmWeightNz( |
| 46 | void *workspace, | 47 | void *workspace, |
| @@ -49,7 +50,6 @@ aclnnStatus aclnnAddmmWeightNz( | |||
| 49 | aclrtStream stream) | 50 | aclrtStream stream) |
| 50 | ``` | 51 | ``` |
| 51 | 52 | ||
| 52 | - | ||
| 53 | ## aclnnAddmmWeightNzGetWorkspaceSize | 53 | ## aclnnAddmmWeightNzGetWorkspaceSize |
| 54 | 54 | ||
| 55 | - **参数说明** | 55 | - **参数说明** |
| @@ -102,8 +102,8 @@ aclnnStatus aclnnAddmmWeightNz( | |||
| 102 | <td>输入</td> | 102 | <td>输入</td> |
| 103 | <td>表示矩阵乘的第二个矩阵,公式中的mat2。</td> | 103 | <td>表示矩阵乘的第二个矩阵,公式中的mat2。</td> |
| 104 | <td><ul><li>数据类型需要与mat1满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。</li><li>mat2的Reduce维度需要与mat1的Reduce维度大小相等。</li><li>需要与self、mat1满足<a href="../../../docs/zh/context/broadcast关系.md">broadcast关系</a>。</li> | 104 | <td><ul><li>数据类型需要与mat1满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。</li><li>mat2的Reduce维度需要与mat1的Reduce维度大小相等。</li><li>需要与self、mat1满足<a href="../../../docs/zh/context/broadcast关系.md">broadcast关系</a>。</li> |
| 105 | - </li><li>当mat2矩阵不转置时,NZ格式各个维度表示:(n1,k1,k0,n0),其中k0 = 16, n0为16。mat1 shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系:ceil(n, n0) = n1。</li> | 105 | + <li>当mat2矩阵不转置时,NZ格式各个维度表示:(n1,k1,k0,n0),其中k0 = 16, n0为16。mat1 shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系:ceil(n, n0) = n1。</li> |
| 106 | - </li><li>当mat2矩阵转置时,NZ格式各个维度表示:(k1,n1,n0,k0),其中n0 = 16, k0 = 16。mat1 shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系:ceil(n, n0) = n1。</li> | 106 | + <li>当mat2矩阵转置时,NZ格式各个维度表示:(k1,n1,n0,k0),其中n0 = 16, k0 = 16。mat1 shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系:ceil(n, n0) = n1。</li></ul> |
| 107 | </td> | 107 | </td> |
| 108 | <td>BFLOAT16、FLOAT16</td> | 108 | <td>BFLOAT16、FLOAT16</td> |
| 109 | <td>NZ</td> | 109 | <td>NZ</td> |
| @@ -223,12 +223,10 @@ aclnnStatus aclnnAddmmWeightNz( | |||
| 223 | </tbody> | 223 | </tbody> |
| 224 | </table> | 224 | </table> |
| 225 | 225 | ||
| 226 | - | ||
| 227 | ## aclnnAddmmWeightNz | 226 | ## aclnnAddmmWeightNz |
| 228 | 227 | ||
| 229 | - **参数说明** | 228 | - **参数说明** |
| 230 | 229 | ||
| 231 | - | ||
| 232 | <table style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 230 | <table style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 233 | <col style="width: 168px"> | 231 | <col style="width: 168px"> |
| 234 | <col style="width: 128px"> | 232 | <col style="width: 128px"> |
| @@ -264,12 +262,12 @@ aclnnStatus aclnnAddmmWeightNz( | |||
| 264 | </tbody> | 262 | </tbody> |
| 265 | </table> | 263 | </table> |
| 266 | 264 | ||
| 267 | - | ||
| 268 | - **返回值** | 265 | - **返回值** |
| 269 | 266 | ||
| 270 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 267 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 271 | 268 | ||
| 272 | ## 约束说明 | 269 | ## 约束说明 |
| 270 | + | ||
| 273 | - 确定性说明:aclnnAddmmWeightNz默认确定性实现。 | 271 | - 确定性说明:aclnnAddmmWeightNz默认确定性实现。 |
| 274 | 272 | ||
| 275 | - 计算一致性说明 | 273 | - 计算一致性说明 |
| @@ -281,9 +279,10 @@ aclnnStatus aclnnAddmmWeightNz( | |||
| 281 | - 不支持mat1与mat2两个输入中一个输入为BFLOAT16,另一个输入为FLOAT或者FLOAT16的数据类型推导。 | 279 | - 不支持mat1与mat2两个输入中一个输入为BFLOAT16,另一个输入为FLOAT或者FLOAT16的数据类型推导。 |
| 282 | - 不支持mat2最后两根轴其中一根轴为1,即k=1或者n=1。 | 280 | - 不支持mat2最后两根轴其中一根轴为1,即k=1或者n=1。 |
| 283 | 281 | ||
| 284 | - | ||
| 285 | ## 调用示例 | 282 | ## 调用示例 |
| 283 | + | ||
| 286 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 284 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 285 | + | ||
| 287 | ```Cpp | 286 | ```Cpp |
| 288 | #include <iostream> | 287 | #include <iostream> |
| 289 | #include <vector> | 288 | #include <vector> |
| @@ -24,6 +24,7 @@ | |||
| 24 | ## 函数原型 | 24 | ## 函数原型 |
| 25 | 25 | ||
| 26 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnMatmulGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMatmul”接口执行计算。 | 26 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnMatmulGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMatmul”接口执行计算。 |
| 27 | + | ||
| 27 | ```cpp | 28 | ```cpp |
| 28 | aclnnStatus aclnnMatmulGetWorkspaceSize( | 29 | aclnnStatus aclnnMatmulGetWorkspaceSize( |
| 29 | const aclTensor *self, | 30 | const aclTensor *self, |
| @@ -41,7 +42,9 @@ aclnnStatus aclnnMatmul( | |||
| 41 | aclOpExecutor *executor, | 42 | aclOpExecutor *executor, |
| 42 | aclrtStream stream) | 43 | aclrtStream stream) |
| 43 | ``` | 44 | ``` |
| 45 | + | ||
| 44 | ## aclnnMatmulGetWorkspaceSize | 46 | ## aclnnMatmulGetWorkspaceSize |
| 47 | + | ||
| 45 | - **参数说明:** | 48 | - **参数说明:** |
| 46 | <table style="undefined;table-layout: fixed; width: 1508px"><colgroup> | 49 | <table style="undefined;table-layout: fixed; width: 1508px"><colgroup> |
| 47 | <col style="width: 151px"> | 50 | <col style="width: 151px"> |
| @@ -229,12 +232,12 @@ aclnnStatus aclnnMatmul( | |||
| 229 | </table> | 232 | </table> |
| 230 | </div> | 233 | </div> |
| 231 | 234 | ||
| 232 | - | ||
| 233 | - **返回值:** | 235 | - **返回值:** |
| 234 | 236 | ||
| 235 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 237 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 236 | 238 | ||
| 237 | ## 约束说明 | 239 | ## 约束说明 |
| 240 | + | ||
| 238 | - 确定性说明: | 241 | - 确定性说明: |
| 239 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>:aclnnMatmul默认确定性实现。 | 242 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>:aclnnMatmul默认确定性实现。 |
| 240 | - <term>Ascend 950PR/Ascend 950DT</term>: aclnnMatmul默认确定性实现。 | 243 | - <term>Ascend 950PR/Ascend 950DT</term>: aclnnMatmul默认确定性实现。 |
| @@ -251,6 +254,7 @@ aclnnStatus aclnnMatmul( | |||
| 251 | ## 调用示例 | 254 | ## 调用示例 |
| 252 | 255 | ||
| 253 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 256 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 257 | + | ||
| 254 | ```Cpp | 258 | ```Cpp |
| 255 | #include <iostream> | 259 | #include <iostream> |
| 256 | #include <vector> | 260 | #include <vector> |
| @@ -24,6 +24,7 @@ | |||
| 24 | ## 函数原型 | 24 | ## 函数原型 |
| 25 | 25 | ||
| 26 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnMatmulWeightNzGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMatmulWeightNz”接口执行计算。 | 26 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnMatmulWeightNzGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMatmulWeightNz”接口执行计算。 |
| 27 | + | ||
| 27 | ```cpp | 28 | ```cpp |
| 28 | aclnnStatus aclnnMatmulWeightNzGetWorkspaceSize( | 29 | aclnnStatus aclnnMatmulWeightNzGetWorkspaceSize( |
| 29 | const aclTensor *self, | 30 | const aclTensor *self, |
| @@ -33,6 +34,7 @@ aclnnStatus aclnnMatmulWeightNzGetWorkspaceSize( | |||
| 33 | uint64_t *workspaceSize, | 34 | uint64_t *workspaceSize, |
| 34 | aclOpExecutor **executor) | 35 | aclOpExecutor **executor) |
| 35 | ``` | 36 | ``` |
| 37 | + | ||
| 36 | ```cpp | 38 | ```cpp |
| 37 | aclnnStatus aclnnMatmulWeightNz( | 39 | aclnnStatus aclnnMatmulWeightNz( |
| 38 | void *workspace, | 40 | void *workspace, |
| @@ -42,6 +44,7 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 42 | ``` | 44 | ``` |
| 43 | 45 | ||
| 44 | ## aclnnMatmulWeightNzGetWorkspaceSize | 46 | ## aclnnMatmulWeightNzGetWorkspaceSize |
| 47 | + | ||
| 45 | - **参数说明** | 48 | - **参数说明** |
| 46 | <table style="undefined;table-layout: fixed; width: 1508px"><colgroup> | 49 | <table style="undefined;table-layout: fixed; width: 1508px"><colgroup> |
| 47 | <col style="width: 151px"> | 50 | <col style="width: 151px"> |
| @@ -69,9 +72,9 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 69 | <td>self</td> | 72 | <td>self</td> |
| 70 | <td>输入</td> | 73 | <td>输入</td> |
| 71 | <td>表示矩阵乘的第一个矩阵,公式中的self。</td> | 74 | <td>表示矩阵乘的第一个矩阵,公式中的self。</td> |
| 72 | - <td>数据类型需要与mat2满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。</br> | 75 | + <td>数据类型需要与mat2满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。<br> |
| 73 | - - 在self不转置的情况下各个维度表示:(m,k)</br> | 76 | + - 在self不转置的情况下各个维度表示:(m,k)<br> |
| 74 | - - 在self转置的情况下各个维度表示:(k,m)</br></td> | 77 | + - 在self转置的情况下各个维度表示:(k,m)</td> |
| 75 | <td>BFLOAT16、FLOAT16</td> | 78 | <td>BFLOAT16、FLOAT16</td> |
| 76 | <td>ND</td> | 79 | <td>ND</td> |
| 77 | <td>2</td> | 80 | <td>2</td> |
| @@ -81,10 +84,10 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 81 | <td>mat2</td> | 84 | <td>mat2</td> |
| 82 | <td>输入</td> | 85 | <td>输入</td> |
| 83 | <td>表示矩阵乘的第二个矩阵,公式中的mat2。</td> | 86 | <td>表示矩阵乘的第二个矩阵,公式中的mat2。</td> |
| 84 | - <td>数据类型需要与self满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。</br> | 87 | + <td>数据类型需要与self满足数据类型推导规则(参见<a href="../../../docs/zh/context/互推导关系.md">互推导关系</a>和<a href="#约束说明">约束说明</a>)。<br> |
| 85 | - mat2的Reduce维度需要与self的Reduce维度大小相等。</br> | 88 | + mat2的Reduce维度需要与self的Reduce维度大小相等。<br> |
| 86 | - 当B矩阵不转置时, NZ格式各个维度表示:(n1,k1,k0,n0),其中k0 = 16, n0为16。self shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系: ceil(n, n0) = n1。</br> | 89 | + 当B矩阵不转置时, NZ格式各个维度表示:(n1,k1,k0,n0),其中k0 = 16, n0为16。self shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系: ceil(n, n0) = n1。<br> |
| 87 | - 当B矩阵转置时, NZ格式各个维度表示:(k1,n1,n0,k0),其中n0 = 16, k0为16。self shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系: ceil(n, n0) = n1。</br> | 90 | + 当B矩阵转置时, NZ格式各个维度表示:(k1,n1,n0,k0),其中n0 = 16, k0为16。self shape中的k和mat2 shape中的k1需要满足以下关系:ceil(k,k0) = k1, mat2 shape中的n1与out的n满足以下关系: ceil(n, n0) = n1。<br> |
| 88 | </td> | 91 | </td> |
| 89 | <td>BFLOAT16、FLOAT16、FLOAT32</td> | 92 | <td>BFLOAT16、FLOAT16、FLOAT32</td> |
| 90 | <td>NZ</td> | 93 | <td>NZ</td> |
| @@ -178,9 +181,10 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 178 | </tr> | 181 | </tr> |
| 179 | <tr> | 182 | <tr> |
| 180 | <td>self和mat2无法做数据类型推导。</td> | 183 | <td>self和mat2无法做数据类型推导。</td> |
| 184 | + </tr> | ||
| 181 | <tr> | 185 | <tr> |
| 182 | <td>推导出的数据类型无法转换为指定输出out的类型。</td> | 186 | <td>推导出的数据类型无法转换为指定输出out的类型。</td> |
| 183 | - <tr> | 187 | + </tr> |
| 184 | </tbody> | 188 | </tbody> |
| 185 | </table> | 189 | </table> |
| 186 | 190 | ||
| @@ -188,7 +192,6 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 188 | 192 | ||
| 189 | - **参数说明** | 193 | - **参数说明** |
| 190 | 194 | ||
| 191 | - | ||
| 192 | <div style="overflow-x: auto;"> | 195 | <div style="overflow-x: auto;"> |
| 193 | <table style="undefined;table-layout: fixed; width: 1030px"><colgroup> | 196 | <table style="undefined;table-layout: fixed; width: 1030px"><colgroup> |
| 194 | <col style="width: 250px"> | 197 | <col style="width: 250px"> |
| @@ -226,12 +229,12 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 226 | </table> | 229 | </table> |
| 227 | </div> | 230 | </div> |
| 228 | 231 | ||
| 229 | - | ||
| 230 | - **返回值** | 232 | - **返回值** |
| 231 | 233 | ||
| 232 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 234 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 233 | 235 | ||
| 234 | ## 约束说明 | 236 | ## 约束说明 |
| 237 | + | ||
| 235 | - 确定性说明: | 238 | - 确定性说明: |
| 236 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>、<term>Ascend 950PR/Ascend 950DT</term>:aclnnMatmulWeightNz默认确定性实现。 | 239 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>、<term>Ascend 950PR/Ascend 950DT</term>:aclnnMatmulWeightNz默认确定性实现。 |
| 237 | 240 | ||
| @@ -250,6 +253,7 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 250 | 253 | ||
| 251 | - <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>: | 254 | - <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>: |
| 252 | self和mat2数据类型为float16,mat2为NZ格式场景下的示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 255 | self和mat2数据类型为float16,mat2为NZ格式场景下的示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 256 | + | ||
| 253 | ```Cpp | 257 | ```Cpp |
| 254 | #include <iostream> | 258 | #include <iostream> |
| 255 | #include <vector> | 259 | #include <vector> |
| @@ -474,6 +478,7 @@ aclnnStatus aclnnMatmulWeightNz( | |||
| 474 | 478 | ||
| 475 | - <term>Ascend 950PR/Ascend 950DT</term>: | 479 | - <term>Ascend 950PR/Ascend 950DT</term>: |
| 476 | self和mat2数据类型为bfloat16,mat2为NZ格式场景下的示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 480 | self和mat2数据类型为bfloat16,mat2为NZ格式场景下的示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 481 | + | ||
| 477 | ```Cpp | 482 | ```Cpp |
| 478 | #include <iostream> | 483 | #include <iostream> |
| 479 | #include <vector> | 484 | #include <vector> |
| @@ -23,6 +23,7 @@ | |||
| 23 | ## 函数原型 | 23 | ## 函数原型 |
| 24 | 24 | ||
| 25 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnMmGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMm”接口执行计算。 | 25 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnMmGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMm”接口执行计算。 |
| 26 | + | ||
| 26 | ```cpp | 27 | ```cpp |
| 27 | aclnnStatus aclnnMmGetWorkspaceSize( | 28 | aclnnStatus aclnnMmGetWorkspaceSize( |
| 28 | const aclTensor *self, | 29 | const aclTensor *self, |
| @@ -32,6 +33,7 @@ aclnnStatus aclnnMmGetWorkspaceSize( | |||
| 32 | uint64_t *workspaceSize, | 33 | uint64_t *workspaceSize, |
| 33 | aclOpExecutor **executor) | 34 | aclOpExecutor **executor) |
| 34 | ``` | 35 | ``` |
| 36 | + | ||
| 35 | ```cpp | 37 | ```cpp |
| 36 | aclnnStatus aclnnMm( | 38 | aclnnStatus aclnnMm( |
| 37 | void *workspace, | 39 | void *workspace, |
| @@ -39,6 +41,7 @@ aclnnStatus aclnnMm( | |||
| 39 | aclOpExecutor *executor, | 41 | aclOpExecutor *executor, |
| 40 | aclrtStream stream) | 42 | aclrtStream stream) |
| 41 | ``` | 43 | ``` |
| 44 | + | ||
| 42 | ## aclnnMmGetWorkspaceSize | 45 | ## aclnnMmGetWorkspaceSize |
| 43 | 46 | ||
| 44 | - **参数说明:** | 47 | - **参数说明:** |
| @@ -185,54 +188,54 @@ aclnnStatus aclnnMm( | |||
| 185 | </tr> | 188 | </tr> |
| 186 | </tbody> | 189 | </tbody> |
| 187 | </table> | 190 | </table> |
| 191 | + | ||
| 188 | ## aclnnMm | 192 | ## aclnnMm |
| 189 | 193 | ||
| 190 | - **参数说明:** | 194 | - **参数说明:** |
| 191 | 195 | ||
| 192 | - | ||
| 193 | <div style="overflow-x: auto;"> | 196 | <div style="overflow-x: auto;"> |
| 194 | - <table style="undefined;table-layout: fixed; width: 1030px"><colgroup> | 197 | + <table style="undefined;table-layout: fixed; width: 1030px"><colgroup> |
| 195 | - <col style="width: 250px"> | 198 | + <col style="width: 250px"> |
| 196 | - <col style="width: 130px"> | 199 | + <col style="width: 130px"> |
| 197 | - <col style="width: 650px"> | 200 | + <col style="width: 650px"> |
| 198 | - </colgroup> | 201 | + </colgroup> |
| 199 | - <table><thead> | 202 | + <table><thead> |
| 200 | - <tr> | 203 | + <tr> |
| 201 | - <th>参数名</th> | 204 | + <th>参数名</th> |
| 202 | - <th>输入/输出</th> | 205 | + <th>输入/输出</th> |
| 203 | - <th>描述</th> | 206 | + <th>描述</th> |
| 204 | - </tr></thead> | 207 | + </tr></thead> |
| 205 | - <tbody> | 208 | + <tbody> |
| 206 | - <tr> | 209 | + <tr> |
| 207 | - <td>workspace</td> | 210 | + <td>workspace</td> |
| 208 | - <td>输入</td> | 211 | + <td>输入</td> |
| 209 | - <td>在Device侧申请的workspace内存地址。</td> | 212 | + <td>在Device侧申请的workspace内存地址。</td> |
| 210 | - </tr> | 213 | + </tr> |
| 211 | - <tr> | 214 | + <tr> |
| 212 | - <td>workspaceSize</td> | 215 | + <td>workspaceSize</td> |
| 213 | - <td>输入</td> | 216 | + <td>输入</td> |
| 214 | - <td>在Device侧申请的workspace大小,由第一段接口aclnnMmGetWorkspaceSize获取。</td> | 217 | + <td>在Device侧申请的workspace大小,由第一段接口aclnnMmGetWorkspaceSize获取。</td> |
| 215 | - </tr> | 218 | + </tr> |
| 216 | - <tr> | 219 | + <tr> |
| 217 | - <td>executor</td> | 220 | + <td>executor</td> |
| 218 | - <td>输入</td> | 221 | + <td>输入</td> |
| 219 | - <td>op执行器,包含了算子计算流程。</td> | 222 | + <td>op执行器,包含了算子计算流程。</td> |
| 220 | - </tr> | 223 | + </tr> |
| 221 | - <tr> | 224 | + <tr> |
| 222 | - <td>stream</td> | 225 | + <td>stream</td> |
| 223 | - <td>输入</td> | 226 | + <td>输入</td> |
| 224 | - <td>指定执行任务的stream。</td> | 227 | + <td>指定执行任务的stream。</td> |
| 225 | - </tr> | 228 | + </tr> |
| 226 | - </tbody> | 229 | + </tbody> |
| 227 | - </table> | 230 | + </table> |
| 228 | - </div> | 231 | + </div> |
| 229 | - | ||
| 230 | 232 | ||
| 231 | - **返回值:** | 233 | - **返回值:** |
| 232 | 234 | ||
| 233 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 235 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 234 | 236 | ||
| 235 | ## 约束说明 | 237 | ## 约束说明 |
| 238 | + | ||
| 236 | - 确定性说明: | 239 | - 确定性说明: |
| 237 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>、<term>Ascend 950PR/Ascend 950DT</term>:aclnnMm默认确定性实现。 | 240 | - <term>Atlas 训练系列产品</term>、<term>Atlas 推理系列产品</term>、<term>Ascend 950PR/Ascend 950DT</term>:aclnnMm默认确定性实现。 |
| 238 | 241 | ||
| @@ -245,6 +248,7 @@ aclnnStatus aclnnMm( | |||
| 245 | ## 调用示例 | 248 | ## 调用示例 |
| 246 | 249 | ||
| 247 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 250 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 251 | + | ||
| 248 | ```Cpp | 252 | ```Cpp |
| 249 | #include <iostream> | 253 | #include <iostream> |
| 250 | #include <vector> | 254 | #include <vector> |
| @@ -195,7 +195,8 @@ aclnnStatus aclnnQuantBatchMatmulInplaceAdd( | |||
| 195 | <td>-</td> | 195 | <td>-</td> |
| 196 | <td>-</td> | 196 | <td>-</td> |
| 197 | </tr> | 197 | </tr> |
| 198 | - <tbody></table> | 198 | + </tbody> |
| 199 | + </table> | ||
| 199 | 200 | ||
| 200 | - 计算公式:<a name='f1'></a> | 201 | - 计算公式:<a name='f1'></a> |
| 201 | 202 | ||
| @@ -272,10 +273,13 @@ aclnnStatus aclnnQuantBatchMatmulInplaceAdd( | |||
| 272 | $$ | 273 | $$ |
| 273 | - 动态量化(mx 量化)场景约束: | 274 | - 动态量化(mx 量化)场景约束: |
| 274 | - 输入和输出支持以下数据类型组合: | 275 | - 输入和输出支持以下数据类型组合: |
| 276 | + | ||
| 275 | | x1 | x2 | x1Scale | x2Scale | outRef | | 277 | | x1 | x2 | x1Scale | x2Scale | outRef | |
| 276 | |:-------:|:-------:| :------- | :------ | :------ | | 278 | |:-------:|:-------:| :------- | :------ | :------ | |
| 277 | |FLOAT8_E5M2/FLOAT8_E4M3FN |FLOAT8_E5M2/FLOAT8_E4M3FN| FLOAT8_E8M0 | FLOAT8_E8M0 | FLOAT32 | | 279 | |FLOAT8_E5M2/FLOAT8_E4M3FN |FLOAT8_E5M2/FLOAT8_E4M3FN| FLOAT8_E8M0 | FLOAT8_E8M0 | FLOAT32 | |
| 280 | + | ||
| 278 | - x1数据类型、x2数据类型、x1、x2、x1Scale、x2Scale和groupSize的取值关系: | 281 | - x1数据类型、x2数据类型、x1、x2、x1Scale、x2Scale和groupSize的取值关系: |
| 282 | + | ||
| 279 | | x1数据类型 | x2数据类型 | x1 shape | x2 shape | x1Scale Shape | x2Scale Shape | yRef Shape | [gsM, gsN, gsK] | groupSize | | 283 | | x1数据类型 | x2数据类型 | x1 shape | x2 shape | x1Scale Shape | x2Scale Shape | yRef Shape | [gsM, gsN, gsK] | groupSize | |
| 280 | |:-------:|:-------:| :------- | :------ | :------ | :------ | :------ | :------ | :------ | | 284 | |:-------:|:-------:| :------- | :------ | :------ | :------ | :------ | :------ | :------ | |
| 281 | |FLOAT8_E5M2/FLOAT8_E4M3FN |FLOAT8_E5M2/FLOAT8_E4M3FN| (k, m) | (k, n) | (ceil(k / 64), m, 2) | (ceil(k / 64), n, 2) | (m, n) | [1, 1, 32] | 32 | | 285 | |FLOAT8_E5M2/FLOAT8_E4M3FN |FLOAT8_E5M2/FLOAT8_E4M3FN| (k, m) | (k, n) | (ceil(k / 64), m, 2) | (ceil(k / 64), n, 2) | (m, n) | [1, 1, 32] | 32 | |
| @@ -492,4 +496,5 @@ int main() | |||
| 492 | Finalize(deviceId, stream); | 496 | Finalize(deviceId, stream); |
| 493 | return 0; | 497 | return 0; |
| 494 | } | 498 | } |
| 495 | - ``` | 499 | + ``` |
| 500 | + | ||
| @@ -107,8 +107,9 @@ aclnnStatus aclnnQuantMatmulV3( | |||
| 107 | <td>输入</td> | 107 | <td>输入</td> |
| 108 | <td>公式中的输入x2。</td> | 108 | <td>公式中的输入x2。</td> |
| 109 | <td><ul> | 109 | <td><ul> |
| 110 | - <li>ND:<ul><li>支持最后两根轴转置情况下的非连续tensor,其他场景的非连续的Tensor不支持</li> | 110 | + <li>ND: |
| 111 | - <li>在transposeX1为false时shape形如(batch,n,k),在transposeX1为true时shape形如(batch,k,n),batch可不存在,其中k与x1的shape中的k一致</li></ul> | 111 | + <ul><li>支持最后两根轴转置情况下的非连续tensor,其他场景的非连续的Tensor不支持</li> |
| 112 | + <li>在transposeX1为false时shape形如(batch,n,k),在transposeX1为true时shape形如(batch,k,n),batch可不存在,其中k与x1的shape中的k一致</li></ul></li> | ||
| 112 | <li>NZ: | 113 | <li>NZ: |
| 113 | <ul><li>在transposeX2为true时shape形如(batch,k1,n1,n0,k0),batch可不存在,其中k0=32,n0=16,x1 shape中的k和x2 shape中的k1需要满足ceil(k / 32) = k1</li></ul> | 114 | <ul><li>在transposeX2为true时shape形如(batch,k1,n1,n0,k0),batch可不存在,其中k0=32,n0=16,x1 shape中的k和x2 shape中的k1需要满足ceil(k / 32) = k1</li></ul> |
| 114 | <ul><li>在transposeX2为false时shape形如(batch,n1,k1,k0,n0),batch可不存在,其中k0=16,n0=32,x1 shape中的k和x2 shape中的k1需要满足ceil(k / 16) = k1</li></ul> | 115 | <ul><li>在transposeX2为false时shape形如(batch,n1,k1,k0,n0),batch可不存在,其中k0=16,n0=32,x1 shape中的k和x2 shape中的k1需要满足ceil(k / 16) = k1</li></ul> |
| @@ -291,7 +292,7 @@ aclnnStatus aclnnQuantMatmulV3( | |||
| 291 | <tr> | 292 | <tr> |
| 292 | <td>workspaceSize</td> | 293 | <td>workspaceSize</td> |
| 293 | <td>输入</td> | 294 | <td>输入</td> |
| 294 | - <td>在Device侧申请的workspace大小,由第一段接口aclnnQuantMatmulV3GetWorkspaceSize获取</ td> | 295 | + <td>在Device侧申请的workspace大小,由第一段接口aclnnQuantMatmulV3GetWorkspaceSize获取</td> |
| 295 | </tr> | 296 | </tr> |
| 296 | <tr> | 297 | <tr> |
| 297 | <td>executor</td> | 298 | <td>executor</td> |
| @@ -871,6 +872,7 @@ aclnnStatus aclnnQuantMatmulV3( | |||
| 871 | return 0; | 872 | return 0; |
| 872 | } | 873 | } |
| 873 | ``` | 874 | ``` |
| 875 | + | ||
| 874 | - <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>:INT4量化场景示例代码如下(x1和x2数据类型为INT4,transposeX2=false),仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 876 | - <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term>、<term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term>:INT4量化场景示例代码如下(x1和x2数据类型为INT4,transposeX2=false),仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 875 | 877 | ||
| 876 | ```Cpp | 878 | ```Cpp |
| @@ -1125,6 +1127,7 @@ aclnnStatus aclnnQuantMatmulV3( | |||
| 1125 | return 0; | 1127 | return 0; |
| 1126 | } | 1128 | } |
| 1127 | ``` | 1129 | ``` |
| 1130 | + | ||
| 1128 | - <term>Atlas 推理系列产品</term>:x2为NZ场景的示例代码如下(transposeX2=true),仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 1131 | - <term>Atlas 推理系列产品</term>:x2为NZ场景的示例代码如下(transposeX2=true),仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 1129 | 1132 | ||
| 1130 | ```Cpp | 1133 | ```Cpp |
| @@ -174,7 +174,7 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 174 | <ul> | 174 | <ul> |
| 175 | <li>在transposeX2为true情况下各个维度表示:(batch, k1, n1, n0, k0),batch可不存在,k0 = 32, n0 = 16。</li> | 175 | <li>在transposeX2为true情况下各个维度表示:(batch, k1, n1, n0, k0),batch可不存在,k0 = 32, n0 = 16。</li> |
| 176 | <li>在transposeX2为false情况下各个维度表示:(batch, n1, k1, k0, n0),batch可不存在,k0 = 16, n0 = 32。</li> | 176 | <li>在transposeX2为false情况下各个维度表示:(batch, n1, k1, k0, n0),batch可不存在,k0 = 16, n0 = 32。</li> |
| 177 | - <li>x1 shape中的k和x2 shape中的k1需要满足ceil(k / k0) = k1, </br>x2 shape中的n1与out的n需要满足ceil(n / n0) = n1。</li> | 177 | + <li>x1 shape中的k和x2 shape中的k1需要满足ceil(k / k0) = k1, <br>x2 shape中的n1与out的n需要满足ceil(n / n0) = n1。</li> |
| 178 | </ul> | 178 | </ul> |
| 179 | </td> | 179 | </td> |
| 180 | <td>INT4<sup>1、3</sup>、INT8、INT32<sup>1、3</sup>、FLOAT4_E2M1<sup>1、2</sup>、FLOAT32<sup>1、2</sup>、FLOAT8_E4M3FN<sup>1、2</sup></td> | 180 | <td>INT4<sup>1、3</sup>、INT8、INT32<sup>1、3</sup>、FLOAT4_E2M1<sup>1、2</sup>、FLOAT32<sup>1、2</sup>、FLOAT8_E4M3FN<sup>1、2</sup></td> |
| @@ -259,7 +259,6 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 259 | <td>1</td> | 259 | <td>1</td> |
| 260 | <td>-</td> | 260 | <td>-</td> |
| 261 | </tr> | 261 | </tr> |
| 262 | - <tr> | ||
| 263 | <tr> | 262 | <tr> |
| 264 | <td>bias</td> | 263 | <td>bias</td> |
| 265 | <td>输入</td> | 264 | <td>输入</td> |
| @@ -379,7 +378,6 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 379 | - 支持groupSize传非0。 | 378 | - 支持groupSize传非0。 |
| 380 | </details> | 379 | </details> |
| 381 | 380 | ||
| 382 | - | ||
| 383 | - **返回值:** | 381 | - **返回值:** |
| 384 | 382 | ||
| 385 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 383 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -426,7 +424,6 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 426 | </tbody> | 424 | </tbody> |
| 427 | </table> | 425 | </table> |
| 428 | 426 | ||
| 429 | - | ||
| 430 | ## aclnnQuantMatmulWeightNz | 427 | ## aclnnQuantMatmulWeightNz |
| 431 | 428 | ||
| 432 | - **参数说明:** | 429 | - **参数说明:** |
| @@ -490,10 +487,10 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 490 | | INT8 | INT8 | null | FLOAT32/BFLOAT16 | null | null | null/INT32 | INT32 | | 487 | | INT8 | INT8 | null | FLOAT32/BFLOAT16 | null | null | null/INT32 | INT32 | |
| 491 | | INT4 | INT4 | null/FLOAT32 | BFLOAT16 | null/FLOAT32 | null | null/BFLOAT16 | BFLOAT16 | | 488 | | INT4 | INT4 | null/FLOAT32 | BFLOAT16 | null/FLOAT32 | null | null/BFLOAT16 | BFLOAT16 | |
| 492 | | INT4 | INT4 | null/FLOAT32 | FLOAT32 | null/FLOAT32 | null | null/BFLOAT16 | BFLOAT16 | | 489 | | INT4 | INT4 | null/FLOAT32 | FLOAT32 | null/FLOAT32 | null | null/BFLOAT16 | BFLOAT16 | |
| 493 | - | INT4 | INT4 | null/FLOAT32 | UINT64 | null/FLOAT32 | null | null/INT32 | FLOAT16 | | 490 | + | INT4 | INT4 | null/FLOAT32 | UINT64 | null/FLOAT32 | null | null/INT32 | FLOAT16 | |
| 494 | - | INT4 | INT4 | null/FLOAT32 | FLOAT32 | null/FLOAT32 | null | null/INT32 | FLOAT16 | | 491 | + | INT4 | INT4 | null/FLOAT32 | FLOAT32 | null/FLOAT32 | null | null/INT32 | FLOAT16 | |
| 495 | - | INT8 | INT32 | UINT64 | FLOAT32 | null | FLOAT32 | null | FLOAT16/BFLOAT16 | | 492 | + | INT8 | INT32 | UINT64 | FLOAT32 | null | FLOAT32 | null | FLOAT16/BFLOAT16 | |
| 496 | - | 493 | + |
| 497 | - x1的约束:当数据类型为INT8时,且x2的数据类型为INT32时,transposeX1为false。维度为:(m,k),要求k为偶数,并小于29576。 | 494 | - x1的约束:当数据类型为INT8时,且x2的数据类型为INT32时,transposeX1为false。维度为:(m,k),要求k为偶数,并小于29576。 |
| 498 | - yOffset的约束:shape支持1维(n)。为计算过程中离线计算的辅助结果,值要求为8 * x2 * x2Scale,并在第1维累加。 | 495 | - yOffset的约束:shape支持1维(n)。为计算过程中离线计算的辅助结果,值要求为8 * x2 * x2Scale,并在第1维累加。 |
| 499 | 496 | ||
| @@ -511,6 +508,7 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 511 | | INT8 | INT8 | null | UINT64/INT64 | null | null/INT32 | FLOAT16 | | 508 | | INT8 | INT8 | null | UINT64/INT64 | null | null/INT32 | FLOAT16 | |
| 512 | | INT8 | INT8 | null | UINT64/INT64 | null/FLOAT32 | null/INT32 | INT8 | | 509 | | INT8 | INT8 | null | UINT64/INT64 | null/FLOAT32 | null/INT32 | INT8 | |
| 513 | | INT8 | INT8 | FLOAT | FLOAT | null | null/INT32 | FLOAT16 | | 510 | | INT8 | INT8 | FLOAT | FLOAT | null | null/INT32 | FLOAT16 | |
| 511 | + | ||
| 514 | - 当x1Scale不为null时,只支持K-C量化。 | 512 | - 当x1Scale不为null时,只支持K-C量化。 |
| 515 | 513 | ||
| 516 | </details> | 514 | </details> |
| @@ -526,6 +524,7 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 526 | <a id="T-C量化 && T-T量化"></a> | 524 | <a id="T-C量化 && T-T量化"></a> |
| 527 | - 输入和输出支持以下数据类型组合: | 525 | - 输入和输出支持以下数据类型组合: |
| 528 | <a id="输入和输出支持以下数据类型组合TC/TT"></a> | 526 | <a id="输入和输出支持以下数据类型组合TC/TT"></a> |
| 527 | + | ||
| 529 | | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | | 528 | | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | |
| 530 | | --------------- | ----------- | ----------- | --------------- | ------------ | -------| -------------------------- | ----------------------| | 529 | | --------------- | ----------- | ----------- | --------------- | ------------ | -------| -------------------------- | ----------------------| |
| 531 | | INT8 | INT8 | null | UINT64/INT64 | null | null | null/INT32 | FLOAT16/ BFLOAT16 | | 530 | | INT8 | INT8 | null | UINT64/INT64 | null | null | null/INT32 | FLOAT16/ BFLOAT16 | |
| @@ -541,6 +540,7 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 541 | <a id="K-C量化 && K-T量化"></a> | 540 | <a id="K-C量化 && K-T量化"></a> |
| 542 | - 输入和输出支持以下数据类型组合: | 541 | - 输入和输出支持以下数据类型组合: |
| 543 | <a id="输入和输出支持以下数据类型组合KC/KT"></a> | 542 | <a id="输入和输出支持以下数据类型组合KC/KT"></a> |
| 543 | + | ||
| 544 | | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | | 544 | | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | |
| 545 | | -------------------- | -------------------- | ------- | --------------- | -------- | -------| ------------------------- | --------------- | | 545 | | -------------------- | -------------------- | ------- | --------------- | -------- | -------| ------------------------- | --------------- | |
| 546 | | INT8 | INT8 | FLOAT32 | FLOAT32/BFLOAT16| null | null | null/INT32/FLOAT32/BFLOAT16 | BFLOAT16 | | 546 | | INT8 | INT8 | FLOAT32 | FLOAT32/BFLOAT16| null | null | null/INT32/FLOAT32/BFLOAT16 | BFLOAT16 | |
| @@ -553,11 +553,13 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 553 | <a id="mx量化"></a> | 553 | <a id="mx量化"></a> |
| 554 | - 输入和输出支持以下数据类型组合: | 554 | - 输入和输出支持以下数据类型组合: |
| 555 | <a id="输入和输出支持以下数据类型组合mx"></a> | 555 | <a id="输入和输出支持以下数据类型组合mx"></a> |
| 556 | + | ||
| 556 | | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | | 557 | | x1 | x2 | x1Scale | x2Scale | x2Offset | yScale | bias | out | |
| 557 | |---------------| ------------- | ----------- | ----------- | -------- | ------ | -------------| --------------------------- | | 558 | |---------------| ------------- | ----------- | ----------- | -------- | ------ | -------------| --------------------------- | |
| 558 | | FLOAT8_E4M3FN | FLOAT8_E4M3FN | FLOAT8_E8M0 | FLOAT8_E8M0 | null | null | null/FLOAT32 | FLOAT16/BFLOAT16/FLOAT32 | | 559 | | FLOAT8_E4M3FN | FLOAT8_E4M3FN | FLOAT8_E8M0 | FLOAT8_E8M0 | null | null | null/FLOAT32 | FLOAT16/BFLOAT16/FLOAT32 | |
| 559 | 560 | ||
| 560 | - x1数据类型、x2数据类型、x1、x2、x1Scale、x2Scale和groupSize的取值关系: | 561 | - x1数据类型、x2数据类型、x1、x2、x1Scale、x2Scale和groupSize的取值关系: |
| 562 | + | ||
| 561 | |量化类型|x1数据类型|x2数据类型|x1 shape|x2 shape|x1Scale shape|x2Scale shape|bias shape|yScale shape|[groupSizeM, groupSizeN, groupSizeK]|groupSize| | 563 | |量化类型|x1数据类型|x2数据类型|x1 shape|x2 shape|x1Scale shape|x2Scale shape|bias shape|yScale shape|[groupSizeM, groupSizeN, groupSizeK]|groupSize| |
| 562 | |-------|--------|--------|--------|--------|-------------|-------------|------------|---------------------------------------|--|--| | 564 | |-------|--------|--------|--------|--------|-------------|-------------|------------|---------------------------------------|--|--| |
| 563 | |mx 全量化|FLOAT8_E4M3FN|FLOAT8_E4M3FN|<li>非转置:(batch, m, k)</li><li>转置:(batch, k, m)</li>|<li>非转置:(batch, k, n)</li><li>转置:(batch, n, k)</li>|<li>非转置:(m, ceil(k / 64), 2)</li><li>转置:(ceil(k / 64), m, 2)</li>|<li>非转置:(ceil(k / 64), n, 2)</li><li>转置:(n, ceil(k / 64), 2)</li>|(n,)或(batch, 1, n)|null|[1, 1, 32]|4295032864| | 565 | |mx 全量化|FLOAT8_E4M3FN|FLOAT8_E4M3FN|<li>非转置:(batch, m, k)</li><li>转置:(batch, k, m)</li>|<li>非转置:(batch, k, n)</li><li>转置:(batch, n, k)</li>|<li>非转置:(m, ceil(k / 64), 2)</li><li>转置:(ceil(k / 64), m, 2)</li>|<li>非转置:(ceil(k / 64), n, 2)</li><li>转置:(n, ceil(k / 64), 2)</li>|(n,)或(batch, 1, n)|null|[1, 1, 32]|4295032864| |
| @@ -572,6 +574,7 @@ aclnnStatus aclnnQuantMatmulWeightNz( | |||
| 572 | | mx量化 |FLOAT8_E4M3FN |FLOAT32 |FLOAT8_E8M0 |FLOAT8_E8M0 |null/BFLOAT16|(m, k) |(n, k/8)|(m, k/32) |(n, k/32) |(1, n) | null | [0, 0, 32] / [1, 1, 32] | | 574 | | mx量化 |FLOAT8_E4M3FN |FLOAT32 |FLOAT8_E8M0 |FLOAT8_E8M0 |null/BFLOAT16|(m, k) |(n, k/8)|(m, k/32) |(n, k/32) |(1, n) | null | [0, 0, 32] / [1, 1, 32] | |
| 573 | | T-CG量化 |FLOAT8_E4M3FN |FLOAT4_E2M1 |null |BFLOAT16 |null |(m, k) |(k, n) |null |(k/32, n) |null |(1, n) | [0, 0, 32] / [1, 1, 32] | | 575 | | T-CG量化 |FLOAT8_E4M3FN |FLOAT4_E2M1 |null |BFLOAT16 |null |(m, k) |(k, n) |null |(k/32, n) |null |(1, n) | [0, 0, 32] / [1, 1, 32] | |
| 574 | | T-CG量化 |FLOAT8_E4M3FN |FLOAT32 |null |BFLOAT16 |null |(m, k) |(k, n/8)|null |(k/32, n) |null |(1, n) | [0, 0, 32] / [1, 1, 32] | | 576 | | T-CG量化 |FLOAT8_E4M3FN |FLOAT32 |null |BFLOAT16 |null |(m, k) |(k, n/8)|null |(k/32, n) |null |(1, n) | [0, 0, 32] / [1, 1, 32] | |
| 577 | + | ||
| 575 | - 约束说明: | 578 | - 约束说明: |
| 576 | - k, n大小要求64对齐。 | 579 | - k, n大小要求64对齐。 |
| 577 | - x1是FLOAT8_E4M3FN,x2是FLOAT32时, x2表示一个FLOAT32存储8个FLOAT4_E2M1的紧密排布的数据格式。 | 580 | - x1是FLOAT8_E4M3FN,x2是FLOAT32时, x2表示一个FLOAT32存储8个FLOAT4_E2M1的紧密排布的数据格式。 |
| @@ -128,6 +128,7 @@ aclnnStatus aclnnQuantMatmulDequant( | |||
| 128 | <td>2、4</td> | 128 | <td>2、4</td> |
| 129 | <td>√</td> | 129 | <td>√</td> |
| 130 | </tr> | 130 | </tr> |
| 131 | + <tr> | ||
| 131 | <td>weightScale(aclTensor*)</td> | 132 | <td>weightScale(aclTensor*)</td> |
| 132 | <td>输入</td> | 133 | <td>输入</td> |
| 133 | <td>表示weight的量化系数,公式中的scale_{weight}。</td> | 134 | <td>表示weight的量化系数,公式中的scale_{weight}。</td> |
| @@ -1,7 +1,6 @@ | |||
| 1 | # QuantMatmulReduceSum | 1 | # QuantMatmulReduceSum |
| 2 | 2 | ||
| 3 | - | 3 | +## 产品支持情况 |
| 4 | -## 产品支持情况 | ||
| 5 | 4 | ||
| 6 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 7 | | ---- | :----:| | 6 | | ---- | :----:| |
| @@ -87,4 +86,4 @@ | |||
| 87 | 86 | ||
| 88 | | 调用方式 | 样例代码 | 说明 | | 87 | | 调用方式 | 样例代码 | 说明 | |
| 89 | | ---------------- | --------------------------- | --------------------------------------------------- | | 88 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 90 | -| aclnn接口 | [test_aclnn_quant_matmul_reduce_sum](examples/test_aclnn_quant_matmul_reduce_sum_weight_nz.cpp) | 通过<br>[aclnnQuantMatmulReduceSumWeightNz](docs/aclnnQuantMatmulReduceSumWeightNz.md)</br>等方式调用QuantMatmulReduceSum算子。 | | 89 | +| aclnn接口 | [test_aclnn_quant_matmul_reduce_sum](examples/test_aclnn_quant_matmul_reduce_sum_weight_nz.cpp) | 通过[aclnnQuantMatmulReduceSumWeightNz](docs/aclnnQuantMatmulReduceSumWeightNz.md)等方式调用QuantMatmulReduceSum算子。 | |
| @@ -100,7 +100,7 @@ aclnnStatus aclnnQuantMatmulReduceSumWeightNz( | |||
| 100 | <td> | 100 | <td> |
| 101 | <ul><li>不支持空Tensor。</li> | 101 | <ul><li>不支持空Tensor。</li> |
| 102 | <li>各个维度表示:(batch,n1,k1,k0,n0),其中k0 = 16, n0 = 32, x1 shape中的k和x2 shape中的k1需要满足以下关系:ceil(k / 16) = k1, x2 shape中的n1与out的n满足以下关系: ceil(n / n0) = n1。</li> | 102 | <li>各个维度表示:(batch,n1,k1,k0,n0),其中k0 = 16, n0 = 32, x1 shape中的k和x2 shape中的k1需要满足以下关系:ceil(k / 16) = k1, x2 shape中的n1与out的n满足以下关系: ceil(n / n0) = n1。</li> |
| 103 | - <li>可使用aclnnCalculateMatmulWeightSizeV2接口以及aclnnTransMatmulWeight接口完成输入Format从ND到AI处理器亲和数据排布格式的转换。原始的ND格式的shape为(batch, k, n)。</li> | 103 | + <li>可使用aclnnCalculateMatmulWeightSizeV2接口以及aclnnTransMatmulWeight接口完成输入Format从ND到AI处理器亲和数据排布格式的转换。原始的ND格式的shape为(batch, k, n)。</li></ul> |
| 104 | </td> | 104 | </td> |
| 105 | <td>INT8</td> | 105 | <td>INT8</td> |
| 106 | <td>NZ</td> | 106 | <td>NZ</td> |
| @@ -112,7 +112,7 @@ aclnnStatus aclnnQuantMatmulReduceSumWeightNz( | |||
| 112 | <td>输入</td> | 112 | <td>输入</td> |
| 113 | <td>公式中的x1Scale。</td> | 113 | <td>公式中的x1Scale。</td> |
| 114 | <td> | 114 | <td> |
| 115 | - <ul><li>不支持空Tensor。</li> | 115 | + <ul><li>不支持空Tensor。</li></ul> |
| 116 | <li>在实际计算时,x1Scale会被广播为(batch,m,n)。</li> | 116 | <li>在实际计算时,x1Scale会被广播为(batch,m,n)。</li> |
| 117 | </td> | 117 | </td> |
| 118 | <td>FLOAT32</td> | 118 | <td>FLOAT32</td> |
| @@ -125,7 +125,7 @@ aclnnStatus aclnnQuantMatmulReduceSumWeightNz( | |||
| 125 | <td>输入</td> | 125 | <td>输入</td> |
| 126 | <td>公式中的x2Scale。</td> | 126 | <td>公式中的x2Scale。</td> |
| 127 | <td> | 127 | <td> |
| 128 | - <ul><li>不支持空Tensor。</li> | 128 | + <ul><li>不支持空Tensor。</li></ul> |
| 129 | <li>在实际计算时,x2Scale会被广播为(batch,m,n)。</li> | 129 | <li>在实际计算时,x2Scale会被广播为(batch,m,n)。</li> |
| 130 | </td> | 130 | </td> |
| 131 | <td>BFLOAT16</td> | 131 | <td>BFLOAT16</td> |
| @@ -302,7 +302,6 @@ aclnnStatus aclnnQuantMatmulReduceSumWeightNz( | |||
| 302 | </tbody> | 302 | </tbody> |
| 303 | </table> | 303 | </table> |
| 304 | 304 | ||
| 305 | - | ||
| 306 | ## aclnnQuantMatmulReduceSumWeightNz | 305 | ## aclnnQuantMatmulReduceSumWeightNz |
| 307 | 306 | ||
| 308 | - 参数说明 | 307 | - 参数说明 |
| @@ -351,7 +350,6 @@ aclnnStatus aclnnQuantMatmulReduceSumWeightNz( | |||
| 351 | - 确定性说明: | 350 | - 确定性说明: |
| 352 | - aclnnQuantMatmulReduceSumWeightNz默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。 | 351 | - aclnnQuantMatmulReduceSumWeightNz默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。 |
| 353 | 352 | ||
| 354 | - | ||
| 355 | ## 调用示例 | 353 | ## 调用示例 |
| 356 | 354 | ||
| 357 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 355 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| @@ -134,11 +134,9 @@ aclnnStatus aclnnTransSparse4to2Para( | |||
| 134 | <td>-</td> | 134 | <td>-</td> |
| 135 | <td>-</td> | 135 | <td>-</td> |
| 136 | </tr> | 136 | </tr> |
| 137 | - </tr> | ||
| 138 | </tbody> | 137 | </tbody> |
| 139 | </table> | 138 | </table> |
| 140 | 139 | ||
| 141 | - | ||
| 142 | - **返回值:** | 140 | - **返回值:** |
| 143 | 141 | ||
| 144 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 142 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -169,7 +167,6 @@ aclnnStatus aclnnTransSparse4to2Para( | |||
| 169 | </tr> | 167 | </tr> |
| 170 | </tbody></table> | 168 | </tbody></table> |
| 171 | 169 | ||
| 172 | - | ||
| 173 | ## 调用示例 | 170 | ## 调用示例 |
| 174 | 171 | ||
| 175 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 172 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| @@ -11,7 +11,6 @@ | |||
| 11 | | <term>Atlas 推理系列产品</term> | × | | 11 | | <term>Atlas 推理系列产品</term> | × | |
| 12 | | <term>Atlas 训练系列产品</term> | × | | 12 | | <term>Atlas 训练系列产品</term> | × | |
| 13 | 13 | ||
| 14 | - | ||
| 15 | ## 功能说明 | 14 | ## 功能说明 |
| 16 | 15 | ||
| 17 | - 接口功能:完成张量x1与张量x2的矩阵乘计算。仅支持三维的Tensor传入。Tensor支持转置,转置序列根据传入的数列进行变更。permX1代表张量x1的转置序列,permX2代表张量x2的转置序列,序列值为0的是batch维度,其余两个维度做矩阵乘法。 | 16 | - 接口功能:完成张量x1与张量x2的矩阵乘计算。仅支持三维的Tensor传入。Tensor支持转置,转置序列根据传入的数列进行变更。permX1代表张量x1的转置序列,permX2代表张量x2的转置序列,序列值为0的是batch维度,其余两个维度做矩阵乘法。 |
| @@ -73,7 +72,7 @@ aclnnStatus aclnnTransposeBatchMatMul( | |||
| 73 | <th>数据格式</th> | 72 | <th>数据格式</th> |
| 74 | <th>维度(shape)</th> | 73 | <th>维度(shape)</th> |
| 75 | <th>非连续Tensor</th> | 74 | <th>非连续Tensor</th> |
| 76 | - <tr> | 75 | + </tr> |
| 77 | </thead> | 76 | </thead> |
| 78 | <tbody> | 77 | <tbody> |
| 79 | <tr> | 78 | <tr> |
| @@ -74,7 +74,7 @@ aclnnStatus aclnnTransposeQuantBatchMatMul( | |||
| 74 | <th>数据格式</th> | 74 | <th>数据格式</th> |
| 75 | <th>维度(shape)</th> | 75 | <th>维度(shape)</th> |
| 76 | <th>非连续Tensor</th> | 76 | <th>非连续Tensor</th> |
| 77 | - <tr> | 77 | + </tr> |
| 78 | </thead> | 78 | </thead> |
| 79 | <tbody> | 79 | <tbody> |
| 80 | <tr> | 80 | <tr> |
| @@ -221,7 +221,6 @@ aclnnStatus aclnnTransposeQuantBatchMatMul( | |||
| 221 | </tbody> | 221 | </tbody> |
| 222 | </table> | 222 | </table> |
| 223 | 223 | ||
| 224 | - | ||
| 225 | - **返回值:** | 224 | - **返回值:** |
| 226 | 225 | ||
| 227 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 226 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| @@ -91,7 +91,7 @@ | |||
| 91 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 91 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 92 | <td>ND</td> | 92 | <td>ND</td> |
| 93 | </tr> | 93 | </tr> |
| 94 | - </tr> | 94 | + <tr> |
| 95 | <tr> | 95 | <tr> |
| 96 | <td>beta1_power</td> | 96 | <td>beta1_power</td> |
| 97 | <td>计算输入</td> | 97 | <td>计算输入</td> |
| @@ -107,7 +107,7 @@ | |||
| 107 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 107 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 108 | <td>ND</td> | 108 | <td>ND</td> |
| 109 | </tr> | 109 | </tr> |
| 110 | - </tr> | 110 | + <tr> |
| 111 | <tr> | 111 | <tr> |
| 112 | <td>lr</td> | 112 | <td>lr</td> |
| 113 | <td>计算输入</td> | 113 | <td>计算输入</td> |
| @@ -123,7 +123,7 @@ | |||
| 123 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 123 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 124 | <td>ND</td> | 124 | <td>ND</td> |
| 125 | </tr> | 125 | </tr> |
| 126 | - </tr> | 126 | + <tr> |
| 127 | <tr> | 127 | <tr> |
| 128 | <td>beta1</td> | 128 | <td>beta1</td> |
| 129 | <td>计算输入</td> | 129 | <td>计算输入</td> |
| @@ -131,7 +131,7 @@ | |||
| 131 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 131 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 132 | <td>ND</td> | 132 | <td>ND</td> |
| 133 | </tr> | 133 | </tr> |
| 134 | - </tr> | 134 | + <tr> |
| 135 | <tr> | 135 | <tr> |
| 136 | <td>beta2</td> | 136 | <td>beta2</td> |
| 137 | <td>计算输入</td> | 137 | <td>计算输入</td> |
| @@ -155,8 +155,7 @@ | |||
| 155 | <td>FLOAT16、BFLOAT16、FLOAT32</td> | 155 | <td>FLOAT16、BFLOAT16、FLOAT32</td> |
| 156 | <td>ND</td> | 156 | <td>ND</td> |
| 157 | </tr> | 157 | </tr> |
| 158 | - </tr> | 158 | + <tr> |
| 159 | - <tr> | ||
| 160 | <td>max_grad_norm</td> | 159 | <td>max_grad_norm</td> |
| 161 | <td>计算输入</td> | 160 | <td>计算输入</td> |
| 162 | <td>保存v参数的最大值,公式中的v。</td> | 161 | <td>保存v参数的最大值,公式中的v。</td> |
| @@ -193,4 +192,4 @@ | |||
| 193 | 192 | ||
| 194 | | 调用方式 | 调用样例 | 说明 | | 193 | | 调用方式 | 调用样例 | 说明 | |
| 195 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| | 194 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| |
| 196 | -| aclnn调用 | [test_aclnn_apply_adam_w](./examples/arch35/test_aclnn_apply_adam_w.cpp) | 通过[aclnnApplyAdamW](./docs/aclnnApplyAdamW.md)接口方式调用ApplyAdamW算子。 | | 195 | +| aclnn调用 | [test_aclnn_apply_adam_w](./examples/arch35/test_aclnn_apply_adam_w.cpp) | 通过[aclnnApplyAdamW](./docs/aclnnApplyAdamW.md)接口方式调用ApplyAdamW算子。 | |
| @@ -13,7 +13,6 @@ | |||
| 13 | | <term>Atlas 推理系列产品</term> | √ | | 13 | | <term>Atlas 推理系列产品</term> | √ | |
| 14 | | <term>Atlas 训练系列产品</term> | √ | | 14 | | <term>Atlas 训练系列产品</term> | √ | |
| 15 | 15 | ||
| 16 | - | ||
| 17 | ## 功能说明 | 16 | ## 功能说明 |
| 18 | 17 | ||
| 19 | - **接口功能:** 实现AdamW优化器功能。 | 18 | - **接口功能:** 实现AdamW优化器功能。 |
| @@ -98,7 +97,6 @@ aclnnStatus aclnnApplyAdamW( | |||
| 98 | 97 | ||
| 99 | - **参数说明:** | 98 | - **参数说明:** |
| 100 | 99 | ||
| 101 | - </style> | ||
| 102 | <table class="tg" style="undefined;table-layout: fixed; width: 1428px"><colgroup> | 100 | <table class="tg" style="undefined;table-layout: fixed; width: 1428px"><colgroup> |
| 103 | <col style="width: 230px"> | 101 | <col style="width: 230px"> |
| 104 | <col style="width: 120px"> | 102 | <col style="width: 120px"> |
| @@ -285,10 +283,10 @@ aclnnStatus aclnnApplyAdamW( | |||
| 285 | 283 | ||
| 286 | - **返回值:** | 284 | - **返回值:** |
| 287 | 285 | ||
| 288 | - aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 286 | + aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 289 | 287 | ||
| 290 | 第一段接口完成入参校验,出现以下场景时报错: | 288 | 第一段接口完成入参校验,出现以下场景时报错: |
| 291 | - </style> | 289 | + |
| 292 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 290 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 293 | <col style="width: 270px"> | 291 | <col style="width: 270px"> |
| 294 | <col style="width: 130px"> | 292 | <col style="width: 130px"> |
| @@ -370,15 +368,17 @@ aclnnStatus aclnnApplyAdamW( | |||
| 370 | 368 | ||
| 371 | - **返回值:** | 369 | - **返回值:** |
| 372 | 370 | ||
| 373 | - aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 371 | + aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 374 | 372 | ||
| 375 | ## 约束说明 | 373 | ## 约束说明 |
| 376 | 374 | ||
| 377 | -- 确定性计算: | 375 | +- 确定性计算: |
| 378 | - aclnnApplyAdamW默认确定性实现。 | 376 | - aclnnApplyAdamW默认确定性实现。 |
| 379 | 377 | ||
| 380 | ## 调用示例 | 378 | ## 调用示例 |
| 379 | + | ||
| 381 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 380 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 381 | + | ||
| 382 | ```Cpp | 382 | ```Cpp |
| 383 | #include <iostream> | 383 | #include <iostream> |
| 384 | #include <vector> | 384 | #include <vector> |
| @@ -23,22 +23,18 @@ | |||
| 23 | m_{t}=\beta_{1} m_{t-1}+\left(1-\beta_{1}\right) g_{t} \\ | 23 | m_{t}=\beta_{1} m_{t-1}+\left(1-\beta_{1}\right) g_{t} \\ |
| 24 | $$ | 24 | $$ |
| 25 | 25 | ||
| 26 | - | ||
| 27 | $$ | 26 | $$ |
| 28 | v_{t}=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2} | 27 | v_{t}=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2} |
| 29 | $$ | 28 | $$ |
| 30 | 29 | ||
| 31 | - | ||
| 32 | $$ | 30 | $$ |
| 33 | \hat{m}_{t}=\frac{m_{t}}{1-\beta_{1}^{t}} \\ | 31 | \hat{m}_{t}=\frac{m_{t}}{1-\beta_{1}^{t}} \\ |
| 34 | $$ | 32 | $$ |
| 35 | 33 | ||
| 36 | - | ||
| 37 | $$ | 34 | $$ |
| 38 | \hat{v}_{t}=\frac{v_{t}}{1-\beta_{2}^{t}} \\ | 35 | \hat{v}_{t}=\frac{v_{t}}{1-\beta_{2}^{t}} \\ |
| 39 | $$ | 36 | $$ |
| 40 | 37 | ||
| 41 | - | ||
| 42 | $$ | 38 | $$ |
| 43 | \theta_{t+1}=\theta_{t}-\frac{\eta}{\sqrt{\hat{v}_{t}}+\epsilon} \hat{m}_{t}-\eta \cdot \lambda \cdot \theta_{t-1} | 39 | \theta_{t+1}=\theta_{t}-\frac{\eta}{\sqrt{\hat{v}_{t}}+\epsilon} \hat{m}_{t}-\eta \cdot \lambda \cdot \theta_{t-1} |
| 44 | $$ | 40 | $$ |
| @@ -82,7 +78,6 @@ aclnnStatus aclnnApplyAdamWQuant( | |||
| 82 | 78 | ||
| 83 | - **参数说明:** | 79 | - **参数说明:** |
| 84 | 80 | ||
| 85 | - </style> | ||
| 86 | <table class="tg" style="undefined;table-layout: fixed; width: 1498px"><colgroup> | 81 | <table class="tg" style="undefined;table-layout: fixed; width: 1498px"><colgroup> |
| 87 | <col style="width: 250px"> | 82 | <col style="width: 250px"> |
| 88 | <col style="width: 120px"> | 83 | <col style="width: 120px"> |
| @@ -302,7 +297,7 @@ aclnnStatus aclnnApplyAdamWQuant( | |||
| 302 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 297 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 303 | 298 | ||
| 304 | 第一段接口完成入参校验,出现以下场景时报错: | 299 | 第一段接口完成入参校验,出现以下场景时报错: |
| 305 | - </style> | 300 | + |
| 306 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 301 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 307 | <col style="width: 270px"> | 302 | <col style="width: 270px"> |
| 308 | <col style="width: 130px"> | 303 | <col style="width: 130px"> |
| @@ -372,7 +367,9 @@ aclnnStatus aclnnApplyAdamWQuant( | |||
| 372 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 367 | aclnnStatus: 返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 373 | 368 | ||
| 374 | ## 约束说明 | 369 | ## 约束说明 |
| 370 | + | ||
| 375 | varRef的shape满足约束: | 371 | varRef的shape满足约束: |
| 372 | + | ||
| 376 | - varRef.shape = grad.shape | 373 | - varRef.shape = grad.shape |
| 377 | - varRef.shape = mRef.shape | 374 | - varRef.shape = mRef.shape |
| 378 | - varRef.shape = vRef.shape | 375 | - varRef.shape = vRef.shape |
| @@ -380,10 +377,13 @@ aclnnStatus aclnnApplyAdamWQuant( | |||
| 380 | - varRef.size/blockSize = absmaxVRef.size | 377 | - varRef.size/blockSize = absmaxVRef.size |
| 381 | 378 | ||
| 382 | 确定性计算: | 379 | 确定性计算: |
| 380 | + | ||
| 383 | - aclnnApplyAdamWQuant默认确定性实现。 | 381 | - aclnnApplyAdamWQuant默认确定性实现。 |
| 384 | 382 | ||
| 385 | ## 调用示例 | 383 | ## 调用示例 |
| 384 | + | ||
| 386 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 385 | 示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 |
| 386 | + | ||
| 387 | ```Cpp | 387 | ```Cpp |
| 388 | #include <iostream> | 388 | #include <iostream> |
| 389 | #include <vector> | 389 | #include <vector> |
| @@ -594,4 +594,4 @@ aclrtResetDevice(deviceId); | |||
| 594 | aclFinalize(); | 594 | aclFinalize(); |
| 595 | return 0; | 595 | return 0; |
| 596 | } | 596 | } |
| 597 | -``` | 597 | +``` |
| @@ -23,32 +23,26 @@ | |||
| 23 | if(maximize) : g_{t} = - g_{t} | 23 | if(maximize) : g_{t} = - g_{t} |
| 24 | $$ | 24 | $$ |
| 25 | 25 | ||
| 26 | - | ||
| 27 | $$ | 26 | $$ |
| 28 | m_{t}=\beta_{1} m_{t-1}+\left(1-\beta_{1}\right) g_{t} | 27 | m_{t}=\beta_{1} m_{t-1}+\left(1-\beta_{1}\right) g_{t} |
| 29 | $$ | 28 | $$ |
| 30 | 29 | ||
| 31 | - | ||
| 32 | $$ | 30 | $$ |
| 33 | v_{t}=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2} | 31 | v_{t}=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2} |
| 34 | $$ | 32 | $$ |
| 35 | 33 | ||
| 36 | - | ||
| 37 | $$ | 34 | $$ |
| 38 | \hat{m}_{t}=\frac{m_{t}}{1-\beta_{1}^{t}} | 35 | \hat{m}_{t}=\frac{m_{t}}{1-\beta_{1}^{t}} |
| 39 | $$ | 36 | $$ |
| 40 | 37 | ||
| 41 | - | ||
| 42 | $$ | 38 | $$ |
| 43 | \hat{v}_{t}=\frac{v_{t}}{1-\beta_{2}^{t}} | 39 | \hat{v}_{t}=\frac{v_{t}}{1-\beta_{2}^{t}} |
| 44 | $$ | 40 | $$ |
| 45 | 41 | ||
| 46 | - | ||
| 47 | $$ | 42 | $$ |
| 48 | if(amsgrad) : maxGradNorm = max(maxGradNorm,\hat{v}_{t}) | 43 | if(amsgrad) : maxGradNorm = max(maxGradNorm,\hat{v}_{t}) |
| 49 | $$ | 44 | $$ |
| 50 | 45 | ||
| 51 | - | ||
| 52 | $$ | 46 | $$ |
| 53 | \theta_{t+1}=\theta_{t}-\frac{\eta}{\sqrt{\hat{v}_{t}}+\epsilon} \hat{m}_{t}-\eta \cdot \lambda \cdot \theta_{t-1} | 47 | \theta_{t+1}=\theta_{t}-\frac{\eta}{\sqrt{\hat{v}_{t}}+\epsilon} \hat{m}_{t}-\eta \cdot \lambda \cdot \theta_{t-1} |
| 54 | $$ | 48 | $$ |
| @@ -74,7 +68,7 @@ | |||
| 74 | <tr> | 68 | <tr> |
| 75 | <td>varRef</td> | 69 | <td>varRef</td> |
| 76 | <td>输入/输出</td> | 70 | <td>输入/输出</td> |
| 77 | - <td>待计算的权重输入同时也是输出,公式中的输入/输出θ | 71 | + <td>待计算的权重输入同时也是输出,公式中的输入/输出θ</td> |
| 78 | <td>FLOAT16、BFLOAT16、FLOAT</td> | 72 | <td>FLOAT16、BFLOAT16、FLOAT</td> |
| 79 | <td>ND</td> | 73 | <td>ND</td> |
| 80 | </tr> | 74 | </tr> |
| @@ -121,7 +115,7 @@ | |||
| 121 | <td>-</td> | 115 | <td>-</td> |
| 122 | </tr> | 116 | </tr> |
| 123 | <tr> | 117 | <tr> |
| 124 | - <td>beta1 | 118 | + <td>beta1</td> |
| 125 | <td>属性</td> | 119 | <td>属性</td> |
| 126 | <td><ul><li>beta1参数。</li><li>取值范围是(0,1),默认为0.1。计算公式中的β1。</li></ul></td> | 120 | <td><ul><li>beta1参数。</li><li>取值范围是(0,1),默认为0.1。计算公式中的β1。</li></ul></td> |
| 127 | <td>FLOAT</td> | 121 | <td>FLOAT</td> |
| @@ -102,7 +102,7 @@ aclnnStatus aclnnApplyFusedEmaAdam( | |||
| 102 | ## aclnnApplyFusedEmaAdamGetWorkspaceSize | 102 | ## aclnnApplyFusedEmaAdamGetWorkspaceSize |
| 103 | 103 | ||
| 104 | - **参数说明:** | 104 | - **参数说明:** |
| 105 | - </style> | 105 | + |
| 106 | <table class="tg" style="undefined;table-layout: fixed; width: 1500px"><colgroup> | 106 | <table class="tg" style="undefined;table-layout: fixed; width: 1500px"><colgroup> |
| 107 | <col style="width: 200px"> | 107 | <col style="width: 200px"> |
| 108 | <col style="width: 120px"> | 108 | <col style="width: 120px"> |
| @@ -292,7 +292,7 @@ aclnnStatus aclnnApplyFusedEmaAdam( | |||
| 292 | 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 292 | 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 293 | 293 | ||
| 294 | 第一段接口完成入参校验,出现以下场景时报错: | 294 | 第一段接口完成入参校验,出现以下场景时报错: |
| 295 | - </style> | 295 | + |
| 296 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> | 296 | <table class="tg" style="undefined;table-layout: fixed; width: 1150px"><colgroup> |
| 297 | <col style="width: 270px"> | 297 | <col style="width: 270px"> |
| 298 | <col style="width: 130px"> | 298 | <col style="width: 130px"> |
| @@ -18,7 +18,9 @@ | |||
| 18 | 在指定三维输出shape信息(outputSize)的情况下,完成张量self的3D自适应平均池化计算。aclnnAdaptiveAvgPool3d与aclnnAvgPool3d不同的是,aclnnAdaptiveAvgPool3d只需要指定输出的大小,就可以自动推导出kernel的大小与对应的步长。 | 18 | 在指定三维输出shape信息(outputSize)的情况下,完成张量self的3D自适应平均池化计算。aclnnAdaptiveAvgPool3d与aclnnAvgPool3d不同的是,aclnnAdaptiveAvgPool3d只需要指定输出的大小,就可以自动推导出kernel的大小与对应的步长。 |
| 19 | 19 | ||
| 20 | ## 函数原型 | 20 | ## 函数原型 |
| 21 | + | ||
| 21 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnAdaptiveAvgPool3dGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnAdaptiveAvgPool3d”接口执行计算。 | 22 | 每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用“aclnnAdaptiveAvgPool3dGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnAdaptiveAvgPool3d”接口执行计算。 |
| 23 | + | ||
| 22 | ```Cpp | 24 | ```Cpp |
| 23 | aclnnStatus aclnnAdaptiveAvgPool3dGetWorkspaceSize( | 25 | aclnnStatus aclnnAdaptiveAvgPool3dGetWorkspaceSize( |
| 24 | const aclTensor *self, | 26 | const aclTensor *self, |
| @@ -27,6 +29,7 @@ aclnnStatus aclnnAdaptiveAvgPool3dGetWorkspaceSize( | |||
| 27 | uint64_t *workspaceSize, | 29 | uint64_t *workspaceSize, |
| 28 | aclOpExecutor **executor) | 30 | aclOpExecutor **executor) |
| 29 | ``` | 31 | ``` |
| 32 | + | ||
| 30 | ```Cpp | 33 | ```Cpp |
| 31 | aclnnStatus aclnnAdaptiveAvgPool3d( | 34 | aclnnStatus aclnnAdaptiveAvgPool3d( |
| 32 | void *workspace, | 35 | void *workspace, |
| @@ -34,6 +37,7 @@ aclnnStatus aclnnAdaptiveAvgPool3d( | |||
| 34 | aclOpExecutor *executor, | 37 | aclOpExecutor *executor, |
| 35 | aclrtStream stream) | 38 | aclrtStream stream) |
| 36 | ``` | 39 | ``` |
| 40 | + | ||
| 37 | ## aclnnAdaptiveAvgPool3dGetWorkspaceSize | 41 | ## aclnnAdaptiveAvgPool3dGetWorkspaceSize |
| 38 | 42 | ||
| 39 | - **参数说明:** | 43 | - **参数说明:** |
| @@ -112,11 +116,14 @@ aclnnStatus aclnnAdaptiveAvgPool3d( | |||
| 112 | </tr> | 116 | </tr> |
| 113 | </tbody></table> | 117 | </tbody></table> |
| 114 | 118 | ||
| 115 | - - <term>Atlas 推理系列产品</term>: 参数`self`、`out`的数据类型不支持BFLOAT16。 | 119 | + - <term>Atlas 推理系列产品</term>: 参数`self`、`out`的数据类型不支持BFLOAT16。 |
| 116 | -- **返回值:** | 120 | + |
| 121 | +- **返回值:** | ||
| 117 | 122 | ||
| 118 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 123 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 124 | + | ||
| 119 | 第一段接口完成入参校验,出现以下场景时报错: | 125 | 第一段接口完成入参校验,出现以下场景时报错: |
| 126 | + | ||
| 120 | <table style="undefined;table-layout: fixed; width: 1166px"><colgroup> | 127 | <table style="undefined;table-layout: fixed; width: 1166px"><colgroup> |
| 121 | <col style="width: 267px"> | 128 | <col style="width: 267px"> |
| 122 | <col style="width: 124px"> | 129 | <col style="width: 124px"> |
| @@ -203,6 +210,7 @@ aclnnStatus aclnnAdaptiveAvgPool3d( | |||
| 203 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 210 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 204 | 211 | ||
| 205 | ## 约束说明 | 212 | ## 约束说明 |
| 213 | + | ||
| 206 | - 确定性计算: | 214 | - 确定性计算: |
| 207 | - aclnnAdaptiveAvgPool3d默认确定性实现。 | 215 | - aclnnAdaptiveAvgPool3d默认确定性实现。 |
| 208 | 216 | ||
| @@ -350,4 +358,3 @@ int main() { | |||
| 350 | return 0; | 358 | return 0; |
| 351 | } | 359 | } |
| 352 | ``` | 360 | ``` |
| 353 | - | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # MaxPoolWithArgmaxV3 | 1 | # MaxPoolWithArgmaxV3 |
| 2 | 2 | ||
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | 4 | ||
| 5 | |产品 | 是否支持 | | 5 | |产品 | 是否支持 | |
| 6 | |:-------------------------|:----------:| | 6 | |:-------------------------|:----------:| |
| @@ -96,7 +96,7 @@ | |||
| 96 | <td>FLOAT16、BFLOAT16、FLOAT</td> | 96 | <td>FLOAT16、BFLOAT16、FLOAT</td> |
| 97 | <td>ND</td> | 97 | <td>ND</td> |
| 98 | </tr> | 98 | </tr> |
| 99 | - </tr> | 99 | + <tr> |
| 100 | <td>argmax</td> | 100 | <td>argmax</td> |
| 101 | <td>输出</td> | 101 | <td>输出</td> |
| 102 | <td>输出的损失tensor</td> | 102 | <td>输出的损失tensor</td> |
| @@ -113,4 +113,4 @@ | |||
| 113 | 113 | ||
| 114 | | 调用方式 | 样例代码 | 说明 | | 114 | | 调用方式 | 样例代码 | 说明 | |
| 115 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| | 115 | |--------------|------------------------------------------------------------------------|--------------------------------------------------------------| |
| 116 | -| aclnn调用 | [test_aclnn_max_pool_with_argmax_v3](examples/arch35/test_aclnn_max_pool_with_argmax_v3.cpp) | 通过[aclnnMaxPool2dWithIndices](../max_pool3d_with_argmax_v2/docs/aclnnMaxPool2dWithIndices.md)接口方式调用MaxPoolWithArgmaxV3算子。 | | 116 | +| aclnn调用 | [test_aclnn_max_pool_with_argmax_v3](examples/arch35/test_aclnn_max_pool_with_argmax_v3.cpp) | 通过[aclnnMaxPool2dWithIndices](../max_pool3d_with_argmax_v2/docs/aclnnMaxPool2dWithIndices.md)接口方式调用MaxPoolWithArgmaxV3算子。 | |
| @@ -167,7 +167,7 @@ | |||
| 167 | </tr> | 167 | </tr> |
| 168 | <tr> | 168 | <tr> |
| 169 | <td>packed</td> | 169 | <td>packed</td> |
| 170 | - <td属性</td> | 170 | + <td>属性</td> |
| 171 | <td>表示输入x是否压缩。仅在batchSizeOptional不为空时生效。</td> | 171 | <td>表示输入x是否压缩。仅在batchSizeOptional不为空时生效。</td> |
| 172 | <td>BOOL</td> | 172 | <td>BOOL</td> |
| 173 | <td>-</td> | 173 | <td>-</td> |
| @@ -203,4 +203,4 @@ | |||
| 203 | 203 | ||
| 204 | | 调用方式 | 调用样例 | 说明 | | 204 | | 调用方式 | 调用样例 | 说明 | |
| 205 | |--------------|------------------------------------------------------------------------|----------------------------------------------------------------| | 205 | |--------------|------------------------------------------------------------------------|----------------------------------------------------------------| |
| 206 | -| aclnn调用 | [test_aclnn_bidirection_lstm_v2](examples/test_aclnn_bidirection_lstm_v2.cpp) | 通过[aclnnBidirectionLSTMV2](docs/aclnnBidirectionLSTMV2.md)接口方式调用BidirectionLSTMV2算子。 | | 206 | +| aclnn调用 | [test_aclnn_bidirection_lstm_v2](examples/test_aclnn_bidirection_lstm_v2.cpp) | 通过[aclnnBidirectionLSTMV2](docs/aclnnBidirectionLSTMV2.md)接口方式调用BidirectionLSTMV2算子。 | |
| @@ -1,4 +1,5 @@ | |||
| 1 | # SingleLayerLstmGrad | 1 | # SingleLayerLstmGrad |
| 2 | + | ||
| 2 | ## 产品支持情况 | 3 | ## 产品支持情况 |
| 3 | 4 | ||
| 4 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| @@ -31,6 +32,7 @@ | |||
| 31 | | 隐藏状态 | $\mathbf{h}_t = \mathbf{o}_t \odot \tanh(\mathbf{c}_t)$ | | 32 | | 隐藏状态 | $\mathbf{h}_t = \mathbf{o}_t \odot \tanh(\mathbf{c}_t)$ | |
| 32 | 33 | ||
| 33 | 其中: | 34 | 其中: |
| 35 | + | ||
| 34 | - $\sigma$ 是 sigmoid 函数 | 36 | - $\sigma$ 是 sigmoid 函数 |
| 35 | - $\odot$ 表示逐元素乘法 (Hadamard product) | 37 | - $\odot$ 表示逐元素乘法 (Hadamard product) |
| 36 | - $W_*$ 是可学习的权重矩阵 | 38 | - $W_*$ 是可学习的权重矩阵 |
| @@ -302,42 +304,42 @@ $$ | |||
| 302 | <tr> | 304 | <tr> |
| 303 | <td>seq_length</td> | 305 | <td>seq_length</td> |
| 304 | <td>可选输入</td> | 306 | <td>可选输入</td> |
| 305 | - <td><ul><li>表示实际序列长度对应的掩码矩阵。</li><li>shape为[T, Batch, hidden_size]。</li></td> | 307 | + <td><ul><li>表示实际序列长度对应的掩码矩阵。</li><li>shape为[T, Batch, hidden_size]。</li></ul></td> |
| 306 | <td>FLOAT16、FLOAT32</td> | 308 | <td>FLOAT16、FLOAT32</td> |
| 307 | <td>ND</td> | 309 | <td>ND</td> |
| 308 | </tr> | 310 | </tr> |
| 309 | <tr> | 311 | <tr> |
| 310 | <td>dw</td> | 312 | <td>dw</td> |
| 311 | <td>输出</td> | 313 | <td>输出</td> |
| 312 | - <td><ul><li>表示LSTM输入权重上的梯度,对应公式中的∂L/∂W。</li><li>shape为[4 * hidden_size,input_size+hidden_size]。</li></td> | 314 | + <td><ul><li>表示LSTM输入权重上的梯度,对应公式中的∂L/∂W。</li><li>shape为[4 * hidden_size,input_size+hidden_size]。</li></ul></td> |
| 313 | <td>FLOAT16、FLOAT32</td> | 315 | <td>FLOAT16、FLOAT32</td> |
| 314 | <td>ND</td> | 316 | <td>ND</td> |
| 315 | </tr> | 317 | </tr> |
| 316 | <tr> | 318 | <tr> |
| 317 | <td>db</td> | 319 | <td>db</td> |
| 318 | <td>输出</td> | 320 | <td>输出</td> |
| 319 | - <td><ul><li>表示LSTM输入偏置上的梯度,对应公式中的∂L/∂b。</li><li>shape为[4, hidden_size]。</li></td> | 321 | + <td><ul><li>表示LSTM输入偏置上的梯度,对应公式中的∂L/∂b。</li><li>shape为[4, hidden_size]。</li></ul></td> |
| 320 | <td>FLOAT16、FLOAT32</td> | 322 | <td>FLOAT16、FLOAT32</td> |
| 321 | <td>ND</td> | 323 | <td>ND</td> |
| 322 | </tr> | 324 | </tr> |
| 323 | <tr> | 325 | <tr> |
| 324 | <td>dx</td> | 326 | <td>dx</td> |
| 325 | <td>输出</td> | 327 | <td>输出</td> |
| 326 | - <td><ul><li>表示LSTM输入序列x上的梯度,对应公式中的δx。</li><li>shape为[T, Batch, input_size]。</li></td> | 328 | + <td><ul><li>表示LSTM输入序列x上的梯度,对应公式中的δx。</li><li>shape为[T, Batch, input_size]。</li></ul></td> |
| 327 | <td>FLOAT16、FLOAT32</td> | 329 | <td>FLOAT16、FLOAT32</td> |
| 328 | <td>ND</td> | 330 | <td>ND</td> |
| 329 | </tr> | 331 | </tr> |
| 330 | <tr> | 332 | <tr> |
| 331 | <td>dh_prev</td> | 333 | <td>dh_prev</td> |
| 332 | <td>输出</td> | 334 | <td>输出</td> |
| 333 | - <td><ul><li>表示LSTM输入inith的梯度,对应公式中在t=0时的δh_prev。</li><li>shape为[1, Batch, hidden_size]。</li></td> | 335 | + <td><ul><li>表示LSTM输入inith的梯度,对应公式中在t=0时的δh_prev。</li><li>shape为[1, Batch, hidden_size]。</li></ul></td> |
| 334 | <td>FLOAT16、FLOAT32</td> | 336 | <td>FLOAT16、FLOAT32</td> |
| 335 | <td>ND</td> | 337 | <td>ND</td> |
| 336 | </tr> | 338 | </tr> |
| 337 | <tr> | 339 | <tr> |
| 338 | <td>dc_prev</td> | 340 | <td>dc_prev</td> |
| 339 | <td>输出</td> | 341 | <td>输出</td> |
| 340 | - <td><ul><li>表示LSTM输入initc的梯度,对应公式中在t=0时的δc_prev。</li><li>shape为[1, Batch, hidden_size]。</td> | 342 | + <td><ul><li>表示LSTM输入initc的梯度,对应公式中在t=0时的δc_prev。</li><li>shape为[1, Batch, hidden_size]。</li></ul></td> |
| 341 | <td>FLOAT16、FLOAT32</td> | 343 | <td>FLOAT16、FLOAT32</td> |
| 342 | <td>ND</td> | 344 | <td>ND</td> |
| 343 | </tr> | 345 | </tr> |
| @@ -348,6 +350,7 @@ $$ | |||
| 348 | <td>STRING</td> | 350 | <td>STRING</td> |
| 349 | <td>-</td> | 351 | <td>-</td> |
| 350 | </tr> | 352 | </tr> |
| 353 | + <tr> | ||
| 351 | <td>gate_order</td> | 354 | <td>gate_order</td> |
| 352 | <td>属性</td> | 355 | <td>属性</td> |
| 353 | <td>ijfo的排布顺序。支持"ijfo"或"ifjo"。</td> | 356 | <td>ijfo的排布顺序。支持"ijfo"或"ifjo"。</td> |
| @@ -364,4 +367,4 @@ $$ | |||
| 364 | 367 | ||
| 365 | | 调用方式 | 样例代码 | 说明 | | 368 | | 调用方式 | 样例代码 | 说明 | |
| 366 | | ---------------- | --------------------------- | --------------------------------------------------- | | 369 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 367 | -| aclnn接口 | [test_aclnn_single_layer_lstm_grad.cpp](examples/test_aclnn_single_layer_lstm_grad.cpp) | 通过[aclnnLstmBackward](docs/aclnnLstmBackward.md)接口方式调用SingleLayerLstmGrad算子。 | | | 370 | +| aclnn接口 | [test_aclnn_single_layer_lstm_grad.cpp](examples/test_aclnn_single_layer_lstm_grad.cpp) | 通过[aclnnLstmBackward](docs/aclnnLstmBackward.md)接口方式调用SingleLayerLstmGrad算子。 | | |
| @@ -90,6 +90,7 @@ aclnnStatus aclnnThnnFusedLstmCell( | |||
| 90 | <col style="width: 122px"> | 90 | <col style="width: 122px"> |
| 91 | <col style="width: 230px"> | 91 | <col style="width: 230px"> |
| 92 | <col style="width: 145px"> | 92 | <col style="width: 145px"> |
| 93 | + </colgroup> | ||
| 93 | <thead> | 94 | <thead> |
| 94 | <tr> | 95 | <tr> |
| 95 | <th>参数名</th> | 96 | <th>参数名</th> |
| @@ -276,7 +277,8 @@ aclnnStatus aclnnThnnFusedLstmCell( | |||
| 276 | </tr> | 277 | </tr> |
| 277 | </tbody> | 278 | </tbody> |
| 278 | </table> | 279 | </table> |
| 279 | -- **返回值:** | 280 | + |
| 281 | + - **返回值:** | ||
| 280 | 282 | ||
| 281 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 283 | aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 |
| 282 | 284 | ||
| @@ -1,4 +1,5 @@ | |||
| 1 | # ThnnFusedLstmCellGrad | 1 | # ThnnFusedLstmCellGrad |
| 2 | + | ||
| 2 | ## 产品支持情况 | 3 | ## 产品支持情况 |
| 3 | 4 | ||
| 4 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| @@ -55,7 +56,6 @@ $$ | |||
| 55 | \delta b = \sum_{n=1}^{N} \begin{bmatrix} \delta a_i \\ \delta a_f \\ \delta a_g \\ \delta a_o \end{bmatrix}_n | 56 | \delta b = \sum_{n=1}^{N} \begin{bmatrix} \delta a_i \\ \delta a_f \\ \delta a_g \\ \delta a_o \end{bmatrix}_n |
| 56 | $$ | 57 | $$ |
| 57 | 58 | ||
| 58 | - | ||
| 59 | - **参数说明:** | 59 | - **参数说明:** |
| 60 | <table style="undefined;table-layout: fixed; width: 1250px"><colgroup> | 60 | <table style="undefined;table-layout: fixed; width: 1250px"><colgroup> |
| 61 | <col style="width: 150px"> | 61 | <col style="width: 150px"> |
| @@ -129,6 +129,7 @@ $$ | |||
| 129 | <td>FLOAT、FLOAT16</td> | 129 | <td>FLOAT、FLOAT16</td> |
| 130 | <td>ND</td> | 130 | <td>ND</td> |
| 131 | </tr> | 131 | </tr> |
| 132 | + <tr> | ||
| 132 | <td>has_bias</td> | 133 | <td>has_bias</td> |
| 133 | <td>属性</td> | 134 | <td>属性</td> |
| 134 | <td>是否需要计算bias梯度。</td> | 135 | <td>是否需要计算bias梯度。</td> |
| @@ -145,4 +146,4 @@ $$ | |||
| 145 | 146 | ||
| 146 | | 调用方式 | 样例代码 | 说明 | | 147 | | 调用方式 | 样例代码 | 说明 | |
| 147 | | ---------------- | --------------------------- | --------------------------------------------------- | | 148 | | ---------------- | --------------------------- | --------------------------------------------------- | |
| 148 | -| aclnn接口 | [test_aclnn_thnn_fused_lstm_cell_grad.cpp](examples/test_aclnn_thnn_fused_lstm_cell_grad.cpp) | 通过[aclnnThnnFusedLstmCellBackward](docs/aclnnThnnFusedLstmCellBackward.md)接口方式调用ThnnFusedLstmCellGrad算子。 | | | 149 | +| aclnn接口 | [test_aclnn_thnn_fused_lstm_cell_grad.cpp](examples/test_aclnn_thnn_fused_lstm_cell_grad.cpp) | 通过[aclnnThnnFusedLstmCellBackward](docs/aclnnThnnFusedLstmCellBackward.md)接口方式调用ThnnFusedLstmCellGrad算子。 | | |
| @@ -122,7 +122,7 @@ aclnnStatus aclnnThnnFusedLstmCellBackward( | |||
| 122 | <td>gradCOptional</td> | 122 | <td>gradCOptional</td> |
| 123 | <td>可选输入</td> | 123 | <td>可选输入</td> |
| 124 | <td>表示LSTMCell正向输出细胞状态的梯度。</td> | 124 | <td>表示LSTMCell正向输出细胞状态的梯度。</td> |
| 125 | - <td><ul><li>数据类型与gradHy一致。</td> | 125 | + <td>数据类型与gradHy一致。</td> |
| 126 | <td>FLOAT32、FLOAT16</td> | 126 | <td>FLOAT32、FLOAT16</td> |
| 127 | <td>ND</td> | 127 | <td>ND</td> |
| 128 | <td>[batch,hidden_size]</td> | 128 | <td>[batch,hidden_size]</td> |
| @@ -132,7 +132,7 @@ aclnnStatus aclnnThnnFusedLstmCellBackward( | |||
| 132 | <td>cx</td> | 132 | <td>cx</td> |
| 133 | <td>输入</td> | 133 | <td>输入</td> |
| 134 | <td>表示LSTMCell正向输入细胞状态。</td> | 134 | <td>表示LSTMCell正向输入细胞状态。</td> |
| 135 | - <td><ul><li>数据类型与gradHy一致。</td> | 135 | + <td>数据类型与gradHy一致。</td> |
| 136 | <td>FLOAT32、FLOAT16</td> | 136 | <td>FLOAT32、FLOAT16</td> |
| 137 | <td>ND</td> | 137 | <td>ND</td> |
| 138 | <td>[batch,hidden_size]</td> | 138 | <td>[batch,hidden_size]</td> |
| @@ -142,7 +142,7 @@ aclnnStatus aclnnThnnFusedLstmCellBackward( | |||
| 142 | <td>cy</td> | 142 | <td>cy</td> |
| 143 | <td>输入</td> | 143 | <td>输入</td> |
| 144 | <td>表示LSTMCell正向输出细胞状态。</td> | 144 | <td>表示LSTMCell正向输出细胞状态。</td> |
| 145 | - <td><ul><li>数据类型与gradHy一致。</td> | 145 | + <td>数据类型与gradHy一致。</td> |
| 146 | <td>FLOAT32、FLOAT16</td> | 146 | <td>FLOAT32、FLOAT16</td> |
| 147 | <td>ND</td> | 147 | <td>ND</td> |
| 148 | <td>[batch,hidden_size]</td> | 148 | <td>[batch,hidden_size]</td> |
| @@ -152,7 +152,7 @@ aclnnStatus aclnnThnnFusedLstmCellBackward( | |||
| 152 | <td>storage</td> | 152 | <td>storage</td> |
| 153 | <td>输入</td> | 153 | <td>输入</td> |
| 154 | <td>表示LSTMCell正向输出四个门的激活值。</td> | 154 | <td>表示LSTMCell正向输出四个门的激活值。</td> |
| 155 | - <td><ul><li>数据类型与input一致。</td> | 155 | + <td>数据类型与input一致。</td> |
| 156 | <td>FLOAT32、FLOAT16</td> | 156 | <td>FLOAT32、FLOAT16</td> |
| 157 | <td>ND</td> | 157 | <td>ND</td> |
| 158 | <td>[batch,4 * hidden_size]</td> | 158 | <td>[batch,4 * hidden_size]</td> |
| @@ -172,7 +172,7 @@ aclnnStatus aclnnThnnFusedLstmCellBackward( | |||
| 172 | <td>gradGatesOut</td> | 172 | <td>gradGatesOut</td> |
| 173 | <td>输出</td> | 173 | <td>输出</td> |
| 174 | <td>表示LSTMCell正向中四个门预激活值的梯度。</td> | 174 | <td>表示LSTMCell正向中四个门预激活值的梯度。</td> |
| 175 | - <td><ul><li>数据类型与input一致。</td> | 175 | + <td>数据类型与input一致。</td> |
| 176 | <td>FLOAT32、FLOAT16</td> | 176 | <td>FLOAT32、FLOAT16</td> |
| 177 | <td>ND</td> | 177 | <td>ND</td> |
| 178 | <td>[batch, 4 * hidden_size]</td> | 178 | <td>[batch, 4 * hidden_size]</td> |
| @@ -182,7 +182,7 @@ aclnnStatus aclnnThnnFusedLstmCellBackward( | |||
| 182 | <td>gradCxOut</td> | 182 | <td>gradCxOut</td> |
| 183 | <td>输出</td> | 183 | <td>输出</td> |
| 184 | <td>表示LSTMCell正向中输入细胞状态的梯度。</td> | 184 | <td>表示LSTMCell正向中输入细胞状态的梯度。</td> |
| 185 | - <td><ul><li>数据类型与input一致。</td> | 185 | + <td>数据类型与input一致。</td> |
| 186 | <td>FLOAT32、FLOAT16</td> | 186 | <td>FLOAT32、FLOAT16</td> |
| 187 | <td>ND</td> | 187 | <td>ND</td> |
| 188 | <td>[batch,hidden_size]</td> | 188 | <td>[batch,hidden_size]</td> |
| @@ -192,7 +192,7 @@ aclnnStatus aclnnThnnFusedLstmCellBackward( | |||
| 192 | <td>gradBiasOut</td> | 192 | <td>gradBiasOut</td> |
| 193 | <td>输出</td> | 193 | <td>输出</td> |
| 194 | <td>表示LSTM正向中输入偏置的梯度。</td> | 194 | <td>表示LSTM正向中输入偏置的梯度。</td> |
| 195 | - <td><ul><li>数据类型与input一致。</td> | 195 | + <td>数据类型与input一致。</td> |
| 196 | <td>FLOAT32、FLOAT16</td> | 196 | <td>FLOAT32、FLOAT16</td> |
| 197 | <td>ND</td> | 197 | <td>ND</td> |
| 198 | <td>[4 * hidden_size]</td> | 198 | <td>[4 * hidden_size]</td> |
| @@ -524,4 +524,4 @@ int main() { | |||
| 524 | 524 | ||
| 525 | return 0; | 525 | return 0; |
| 526 | } | 526 | } |
| 527 | -``` | 527 | +``` |