return clamped;
}
-CV__DNN_EXPERIMENTAL_NS_END
+ static inline
+ bool isAllOnes(const MatShape &inputShape, int startPos, int endPos)
+ {
+ CV_Assert(!inputShape.empty());
+
+ CV_CheckGE((int) inputShape.size(), startPos, "");
+ CV_CheckGE(startPos, 0, "");
+ CV_CheckLE(startPos, endPos, "");
+ CV_CheckLE((size_t)endPos, inputShape.size(), "");
+
+ for (size_t i = startPos; i < endPos; i++)
+ {
+ if (inputShape[i] != 1)
+ return false;
+ }
+ return true;
+ }
++
+CV__DNN_INLINE_NS_END
}
}
#endif
virtual bool supportBackend(int backendId) CV_OVERRIDE
{
+ if (hasVecInput && ELTWISE_CHANNNELS_SAME)
+ return backendId == DNN_BACKEND_OPENCV;
+
+ if (backendId == DNN_BACKEND_CUDA)
+ {
+ if(channelsModeInput == ELTWISE_CHANNNELS_INPUT_0 || channelsModeInput == ELTWISE_CHANNNELS_INPUT_0_TRUNCATE)
+ return op == SUM && coeffs.empty();
+ return channelsModeInput == ELTWISE_CHANNNELS_SAME;
+ }
+
return backendId == DNN_BACKEND_OPENCV ||
- backendId == DNN_BACKEND_HALIDE ||
+ (backendId == DNN_BACKEND_HALIDE && op != DIV) || // TODO: not implemented, see PR #15811
((((backendId == DNN_BACKEND_INFERENCE_ENGINE_NN_BUILDER_2019 && (preferableTarget != DNN_TARGET_OPENCL || coeffs.empty()))
|| backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH) && channelsMode == ELTWISE_CHANNNELS_SAME));
}
// see validateVPUType(): CV_TEST_TAG_DNN_SKIP_IE_MYRIAD_2, CV_TEST_TAG_DNN_SKIP_IE_MYRIAD_X
CV_TEST_TAG_DNN_SKIP_IE_OPENCL, CV_TEST_TAG_DNN_SKIP_IE_OPENCL_FP16
);
+ #endif
+#ifdef HAVE_VULKAN
+ registerGlobalSkipTag(
+ CV_TEST_TAG_DNN_SKIP_VULKAN
+ );
+#endif
+
+#ifdef HAVE_CUDA
+ registerGlobalSkipTag(
+ CV_TEST_TAG_DNN_SKIP_CUDA, CV_TEST_TAG_DNN_SKIP_CUDA_FP32, CV_TEST_TAG_DNN_SKIP_CUDA_FP16
+ );
+#endif
}
} // namespace