mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 07:43:03 +04:00
dnn: add the CANN backend (#22634)
* cann backend impl v1 * cann backend impl v2: use opencv parsers to build models for cann * adjust fc according to the new transA and transB * put cann net in cann backend node and reuse forwardLayer * use fork() to create a child process and compile cann model * remove legacy code * remove debug code * fall bcak to CPU backend if there is one layer not supoorted by CANN backend * fix netInput forward
This commit is contained in:
@@ -31,6 +31,7 @@ void PrintTo(const cv::dnn::Backend& v, std::ostream* os)
|
||||
case DNN_BACKEND_INFERENCE_ENGINE_NGRAPH: *os << "NGRAPH"; return;
|
||||
case DNN_BACKEND_WEBNN: *os << "WEBNN"; return;
|
||||
case DNN_BACKEND_TIMVX: *os << "TIMVX"; return;
|
||||
case DNN_BACKEND_CANN: *os << "CANN"; return;
|
||||
} // don't use "default:" to emit compiler warnings
|
||||
*os << "DNN_BACKEND_UNKNOWN(" << (int)v << ")";
|
||||
}
|
||||
@@ -251,7 +252,8 @@ testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTarget
|
||||
bool withVkCom /*= true*/,
|
||||
bool withCUDA /*= true*/,
|
||||
bool withNgraph /*= true*/,
|
||||
bool withWebnn /*= false*/
|
||||
bool withWebnn /*= false*/,
|
||||
bool withCann /*= true*/
|
||||
)
|
||||
{
|
||||
bool withVPU = validateVPUType();
|
||||
@@ -311,6 +313,16 @@ testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTarget
|
||||
CV_UNUSED(withWebnn);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CANN
|
||||
if (withCann)
|
||||
{
|
||||
for (auto target : getAvailableTargets(DNN_BACKEND_CANN))
|
||||
targets.push_back(make_tuple(DNN_BACKEND_CANN, target));
|
||||
}
|
||||
#else
|
||||
CV_UNUSED(withCann);
|
||||
#endif // HAVE_CANN
|
||||
|
||||
{
|
||||
available = getAvailableTargets(DNN_BACKEND_OPENCV);
|
||||
for (std::vector< Target >::const_iterator i = available.begin(); i != available.end(); ++i)
|
||||
@@ -477,6 +489,11 @@ void initDNNTests()
|
||||
registerGlobalSkipTag(
|
||||
CV_TEST_TAG_DNN_SKIP_TIMVX
|
||||
);
|
||||
#endif
|
||||
#ifdef HAVE_CANN
|
||||
registerGlobalSkipTag(
|
||||
CV_TEST_TAG_DNN_SKIP_CANN
|
||||
);
|
||||
#endif
|
||||
registerGlobalSkipTag(
|
||||
CV_TEST_TAG_DNN_SKIP_ONNX_CONFORMANCE,
|
||||
|
||||
Reference in New Issue
Block a user