Merged
【unfold_grad】修复issue问题 aclnn接口输入为空指针时使用ACLNN_ERR_PARAM_NULLPTR错误码 & 修正正确的dim值域 #6650
tangkaidiAdd on 18 days ago
【unfold_grad】修复issue问题 aclnn接口输入为空指针时使用ACLNN_ERR_PARAM_NULLPTR错误码 & 修正正确的dim值域 #6650
Merged
tangkaidiAdd on 18 days ago
Total: 4 files changed+38-11
@@ -46,7 +46,7 @@
46| ---------- | -------------- | ------------------------------------------------------------ | ------------------------ | -------- |46| ---------- | -------------- | ------------------------------------------------------------ | ------------------------ | -------- |
47| gradOutput | 输入张量 | 表示梯度更新系数,shape为(..., (sizedim-size)/step+1, size),要求满足gradOutput的第dim维等于$(inputSizes[dim]-size)/step+1$和gradOut的size等于inputSizes的size+1。 | FLOAT、FLOAT16、BFLOAT16 | ND |47| gradOutput | 输入张量 | 表示梯度更新系数,shape为(..., (sizedim-size)/step+1, size),要求满足gradOutput的第dim维等于$(inputSizes[dim]-size)/step+1$和gradOut的size等于inputSizes的size+1。 | FLOAT、FLOAT16、BFLOAT16 | ND |
48| inputSizes | 输入数组 | 表示输出张量的形状,值为(..., sizedim),inputSizes的size小于等于8。 | INT64 | ND |48| inputSizes | 输入数组 | 表示输出张量的形状,值为(..., sizedim),inputSizes的size小于等于8。 | INT64 | ND |
49-| dim | 输入 | 公式中的$dim$。表示展开发生的维度。$dim$仅支持len($inputSizes$)-1或者len($inputSizes$)-2。 | INT64 | - |49+| dim | 输入 | 公式中的$dim$。表示展开发生的维度。$dim$大于等于0且小于len($inputSizes$)。 | INT64 | - |
50| size | 输入 | 公式中的$size$。表示展开的每个切片的大小。$size$需要满足$size$大于0且$size$小于等于$inputSizes$的第$dim$维。 | INT64 | - |50| size | 输入 | 公式中的$size$。表示展开的每个切片的大小。$size$需要满足$size$大于0且$size$小于等于$inputSizes$的第$dim$维。 | INT64 | - |
51| step | 输入 | 公式中的$step$。表示每个切片之间的步长。$step$需要满足$step$大于0。 | INT64 | |51| step | 输入 | 公式中的$step$。表示每个切片之间的步长。$step$需要满足$step$大于0。 | INT64 | |
52| gradIn | 输出 | 表示Unfold的对应梯度,数据类型必须和gradOut一致。 | FLOAT、FLOAT16、BFLOAT16 | |52| gradIn | 输出 | 表示Unfold的对应梯度,数据类型必须和gradOut一致。 | FLOAT、FLOAT16、BFLOAT16 | |
@@ -59,7 +59,7 @@
592. dim、size、step的要求:592. dim、size、step的要求:
60 - size大于0且size小于等于inputSizes的第dim维。60 - size大于0且size小于等于inputSizes的第dim维。
61 - step大于0。61 - step大于0。
62- - dim等于len(inputSizes)-1或者dim等于len(inputSizes)-2轴。62+ - dim大于等于0且小于len(inputSizes)。
63 63 
64## 调用说明64## 调用说明
65 65 
@@ -124,7 +124,7 @@ aclnnStatus aclnnUnfoldGrad(
124 <td>dim(int64_t)</td>124 <td>dim(int64_t)</td>
125 <td>输入</td>125 <td>输入</td>
126 <td>表示展开发生的维度,公式中的dim。</td>126 <td>表示展开发生的维度,公式中的dim。</td>
127- <td>dim仅支持len(inputSizes)-1或者len(inputSizes)-2。</td>127+ <td>dim大于等于0且小于len(inputSizes)。</td>
128 <td>INT64</td>128 <td>INT64</td>
129 <td>-</td>129 <td>-</td>
130 <td>-</td>130 <td>-</td>
@@ -207,11 +207,11 @@ aclnnStatus aclnnUnfoldGrad(
207 <tr>207 <tr>
208 <td>ACLNN_ERR_PARAM_INVALID</td>208 <td>ACLNN_ERR_PARAM_INVALID</td>
209 <td>161002</td>209 <td>161002</td>
210- <td>输入和输出的数据类型和数据格式不在支持的范围之内。</td>210+ <td>输入和输出的数据类型和数据格式不在支持的范围之内,或dim小于0或大于等于len(inputSizes)。</td>
211 </tr>211 </tr>
212 <tr>212 <tr>
213- <td rowspan="5">ACLNN_ERR_INNER_TILING_ERROR</td>213+ <td rowspan="4">ACLNN_ERR_INNER_TILING_ERROR</td>
214- <td rowspan="5">561002</td>214+ <td rowspan="4">561002</td>
215 <td>gradOut的第dim维不等于(inputSizes[dim]-size)/step+1。</td>215 <td>gradOut的第dim维不等于(inputSizes[dim]-size)/step+1。</td>
216 </tr>216 </tr>
217 <tr>217 <tr>
@@ -223,9 +223,6 @@ aclnnStatus aclnnUnfoldGrad(
223 <tr>223 <tr>
224 <td>step小于等于0。</td>224 <td>step小于等于0。</td>
225 </tr>225 </tr>
226- <tr>
227- <td>dim不等于len(inputSizes)-1且dim不等于len(inputSizes)-2轴。</td>
228- </tr>
229 </tbody>226 </tbody>
230 </table>227 </table>
231 228 
@@ -282,7 +279,7 @@ aclnnStatus aclnnUnfoldGrad(
2822. dim、size、step的要求:2792. dim、size、step的要求:
283 - size大于0且size小于等于inputSizes的第dim维。280 - size大于0且size小于等于inputSizes的第dim维。
284 - step大于0。281 - step大于0。
285- - dim等于len(inputSizes)-1或者dim等于len(inputSizes)-2轴。282+ - dim大于等于0且小于len(inputSizes)。
286 283 
287## 调用示例284## 调用示例
288 285 
@@ -118,7 +118,7 @@ static bool CheckFormat(const aclTensor* gradOut)
118static aclnnStatus CheckParams(const aclTensor* gradOut, const aclIntArray* inputSizes, int64_t dim, int64_t size,118static aclnnStatus CheckParams(const aclTensor* gradOut, const aclIntArray* inputSizes, int64_t dim, int64_t size,
119 int64_t step, const aclTensor* gradIn)119 int64_t step, const aclTensor* gradIn)
120{120{
121- CHECK_RET(CheckNotNull(gradOut, inputSizes, gradIn), ACLNN_ERR_INNER_NULLPTR);121+ CHECK_RET(CheckNotNull(gradOut, inputSizes, gradIn), ACLNN_ERR_PARAM_NULLPTR);
122 122 
123 CHECK_RET(CheckDtypeValid(gradOut, gradIn), ACLNN_ERR_PARAM_INVALID);123 CHECK_RET(CheckDtypeValid(gradOut, gradIn), ACLNN_ERR_PARAM_INVALID);
124 124 
@@ -78,3 +78,33 @@ TEST_F(l2_unfold_grad_test, case_empty_grad_out_nonzero_grad_in)
78 aclnnStatus aclRet = ut.TestGetWorkspaceSize(&workspace_size);78 aclnnStatus aclRet = ut.TestGetWorkspaceSize(&workspace_size);
79 EXPECT_EQ(aclRet, ACLNN_SUCCESS);79 EXPECT_EQ(aclRet, ACLNN_SUCCESS);
80}80}
81+ 
82+TEST_F(l2_unfold_grad_test, case_null_grad_out)
83+{
84+ auto input_sizes_desc = IntArrayDesc(vector<int64_t>{2, 3, 4});
85+ auto out_desc = TensorDesc({2, 3, 4}, ACL_FLOAT, ACL_FORMAT_ND);
86+ auto ut = OP_API_UT(aclnnUnfoldGrad, INPUT(nullptr, input_sizes_desc, 2, 2, 1), OUTPUT(out_desc));
87+ uint64_t workspace_size = 0;
88+ aclnnStatus aclRet = ut.TestGetWorkspaceSize(&workspace_size);
89+ EXPECT_EQ(aclRet, ACLNN_ERR_PARAM_NULLPTR);
90+}
91+ 
92+TEST_F(l2_unfold_grad_test, case_null_input_sizes)
93+{
94+ auto grad_out_desc = TensorDesc({2, 3, 3, 2}, ACL_FLOAT, ACL_FORMAT_ND);
95+ auto out_desc = TensorDesc({2, 3, 4}, ACL_FLOAT, ACL_FORMAT_ND);
96+ auto ut = OP_API_UT(aclnnUnfoldGrad, INPUT(grad_out_desc, nullptr, 2, 2, 1), OUTPUT(out_desc));
97+ uint64_t workspace_size = 0;
98+ aclnnStatus aclRet = ut.TestGetWorkspaceSize(&workspace_size);
99+ EXPECT_EQ(aclRet, ACLNN_ERR_PARAM_NULLPTR);
100+}
101+ 
102+TEST_F(l2_unfold_grad_test, case_null_grad_in)
103+{
104+ auto grad_out_desc = TensorDesc({2, 3, 3, 2}, ACL_FLOAT, ACL_FORMAT_ND);
105+ auto input_sizes_desc = IntArrayDesc(vector<int64_t>{2, 3, 4});
106+ auto ut = OP_API_UT(aclnnUnfoldGrad, INPUT(grad_out_desc, input_sizes_desc, 2, 2, 1), OUTPUT(nullptr));
107+ uint64_t workspace_size = 0;
108+ aclnnStatus aclRet = ut.TestGetWorkspaceSize(&workspace_size);
109+ EXPECT_EQ(aclRet, ACLNN_ERR_PARAM_NULLPTR);
110+}