@@ -174,21 +174,9 @@ class PermuteLayerImpl CV_FINAL : public PermuteLayer
174
174
computeStrides (shape (inputs[0 ]), shape (outputs[0 ]));
175
175
176
176
#ifdef HAVE_OPENCL
177
- if (uorder.empty ())
178
- {
179
- std::vector<int > orderVec (_order.begin (), _order.end ());;
180
- Mat morder (1 , orderVec.size (), CV_32SC1, &orderVec[0 ]);
181
-
182
- std::vector<int > oldStrideVec (_oldStride.begin (), _oldStride.end ());
183
- Mat mold_stride (1 , _oldStride.size (), CV_32SC1, &oldStrideVec[0 ]);
184
-
185
- std::vector<int > newStrideVec (_newStride.begin (), _newStride.end ());
186
- Mat mnew_stride (1 , newStrideVec.size (), CV_32SC1, &newStrideVec[0 ]);
187
-
188
- morder.copyTo (uorder);
189
- mold_stride.copyTo (uold_stride);
190
- mnew_stride.copyTo (unew_stride);
191
- }
177
+ uorder.release ();
178
+ uold_stride.release ();
179
+ unew_stride.release ();
192
180
#endif
193
181
}
194
182
@@ -276,6 +264,22 @@ class PermuteLayerImpl CV_FINAL : public PermuteLayer
276
264
if (!_needsPermute)
277
265
return false ;
278
266
267
+ if (uorder.empty ())
268
+ {
269
+ std::vector<int > orderVec (_order.begin (), _order.end ());;
270
+ Mat morder (1 , orderVec.size (), CV_32SC1, &orderVec[0 ]);
271
+
272
+ std::vector<int > oldStrideVec (_oldStride.begin (), _oldStride.end ());
273
+ Mat mold_stride (1 , _oldStride.size (), CV_32SC1, &oldStrideVec[0 ]);
274
+
275
+ std::vector<int > newStrideVec (_newStride.begin (), _newStride.end ());
276
+ Mat mnew_stride (1 , newStrideVec.size (), CV_32SC1, &newStrideVec[0 ]);
277
+
278
+ morder.copyTo (uorder);
279
+ mold_stride.copyTo (uold_stride);
280
+ mnew_stride.copyTo (unew_stride);
281
+ }
282
+
279
283
bool use_half = (inps.depth () == CV_16S);
280
284
String opts = format (" -DDtype=%s" , use_half ? " half" : " float" );
281
285
for (size_t i = 0 ; i < inputs.size (); i++)
0 commit comments