Skip to content

Commit 64c67a9

Browse files
committed
Merge pull request opencv#18246 from YashasSamaga:dnn-permute-fix-unwanted-ocl-init
2 parents 154380c + 1df533c commit 64c67a9

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

modules/dnn/src/layers/permute_layer.cpp

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -174,21 +174,9 @@ class PermuteLayerImpl CV_FINAL : public PermuteLayer
174174
computeStrides(shape(inputs[0]), shape(outputs[0]));
175175

176176
#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();
192180
#endif
193181
}
194182

@@ -276,6 +264,22 @@ class PermuteLayerImpl CV_FINAL : public PermuteLayer
276264
if (!_needsPermute)
277265
return false;
278266

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+
279283
bool use_half = (inps.depth() == CV_16S);
280284
String opts = format("-DDtype=%s", use_half ? "half" : "float");
281285
for (size_t i = 0; i < inputs.size(); i++)

modules/dnn/test/test_layers.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2343,7 +2343,7 @@ TEST_P(ConvolutionEltwiseActivationFusion, Accuracy)
23432343
if (eltwiseOp != "sum" && weightedEltwise)
23442344
throw SkipTestException("weighted eltwise not supported");
23452345
LayerParams eltwiseParams;
2346-
TestLayerFusion::makeDefaultTestEltwiseLayer(eltwiseParams, eltwiseOp, false);
2346+
TestLayerFusion::makeDefaultTestEltwiseLayer(eltwiseParams, eltwiseOp, weightedEltwise);
23472347

23482348
std::string actType = get<3>(GetParam());
23492349
LayerParams activationParams;
@@ -2353,7 +2353,7 @@ TEST_P(ConvolutionEltwiseActivationFusion, Accuracy)
23532353
Target targetId = get<1>(get<4>(GetParam()));
23542354

23552355
// bug: https://github.com/opencv/opencv/issues/17945
2356-
if (eltwiseOp != "sum" && backendId == DNN_BACKEND_OPENCV && (targetId == DNN_TARGET_OPENCL || targetId == DNN_TARGET_OPENCL_FP16))
2356+
if ((eltwiseOp != "sum" || weightedEltwise) && backendId == DNN_BACKEND_OPENCV && (targetId == DNN_TARGET_OPENCL || targetId == DNN_TARGET_OPENCL_FP16))
23572357
applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL);
23582358

23592359
// bug: https://github.com/opencv/opencv/issues/17953
@@ -2440,7 +2440,7 @@ TEST_P(ConvolutionActivationEltwiseFusion, Accuracy)
24402440
if (eltwiseOp != "sum" && weightedEltwise)
24412441
throw SkipTestException("weighted eltwise not supported");
24422442
LayerParams eltwiseParams;
2443-
TestLayerFusion::makeDefaultTestEltwiseLayer(eltwiseParams, eltwiseOp, false);
2443+
TestLayerFusion::makeDefaultTestEltwiseLayer(eltwiseParams, eltwiseOp, weightedEltwise);
24442444

24452445
Backend backendId = get<0>(get<4>(GetParam()));
24462446
Target targetId = get<1>(get<4>(GetParam()));

0 commit comments

Comments
 (0)