Commit 0d9c6374 authored by Vladislav Sovrasov's avatar Vladislav Sovrasov Committed by Vadim Pisarevsky

Add CPU default extensions loading in IE dnn backend (#11252)

* Add CPU default extensions loading in IE dnn backend

* Load cpu_extensions for the future Intel's Inference Engine
parent 20334e3f
...@@ -50,6 +50,7 @@ set(ie_lib_list inference_engine) ...@@ -50,6 +50,7 @@ set(ie_lib_list inference_engine)
link_directories( link_directories(
${INTEL_CVSDK_DIR}/external/mklml_lnx/lib ${INTEL_CVSDK_DIR}/external/mklml_lnx/lib
${INTEL_CVSDK_DIR}/inference_engine/external/mklml_lnx/lib ${INTEL_CVSDK_DIR}/inference_engine/external/mklml_lnx/lib
${INTEL_CVSDK_DIR}/inference_engine/external/mkltiny_lnx/lib
${INTEL_CVSDK_DIR}/external/cldnn/lib ${INTEL_CVSDK_DIR}/external/cldnn/lib
${INTEL_CVSDK_DIR}/inference_engine/external/cldnn/lib ${INTEL_CVSDK_DIR}/inference_engine/external/cldnn/lib
) )
......
...@@ -9,6 +9,11 @@ ...@@ -9,6 +9,11 @@
#include "op_inf_engine.hpp" #include "op_inf_engine.hpp"
#include <opencv2/dnn/shape_utils.hpp> #include <opencv2/dnn/shape_utils.hpp>
#ifdef HAVE_INF_ENGINE
#include <ie_extension.h>
#include <ie_plugin_dispatcher.hpp>
#endif // HAVE_INF_ENGINE
namespace cv { namespace dnn { namespace cv { namespace dnn {
#ifdef HAVE_INF_ENGINE #ifdef HAVE_INF_ENGINE
...@@ -309,13 +314,26 @@ void InfEngineBackendNet::init() ...@@ -309,13 +314,26 @@ void InfEngineBackendNet::init()
void InfEngineBackendNet::initPlugin(InferenceEngine::ICNNNetwork& net) void InfEngineBackendNet::initPlugin(InferenceEngine::ICNNNetwork& net)
{ {
CV_Assert(!isInitialized()); CV_Assert(!isInitialized());
InferenceEngine::StatusCode status;
InferenceEngine::ResponseDesc resp;
const InferenceEngine::Version* v = InferenceEngine::GetInferenceEngineVersion();
plugin = InferenceEngine::PluginDispatcher({""}).getSuitablePlugin(InferenceEngine::TargetDevice::eCPU);
if (std::atoi(v->buildNumber) > 5855)
{
#ifdef _WIN32 #ifdef _WIN32
plugin = InferenceEngine::InferenceEnginePluginPtr("MKLDNNPlugin.dll"); InferenceEngine::IExtensionPtr extension =
InferenceEngine::make_so_pointer<InferenceEngine::IExtension>("cpu_extension.dll");
#else #else
plugin = InferenceEngine::InferenceEnginePluginPtr("libMKLDNNPlugin.so"); InferenceEngine::IExtensionPtr extension =
InferenceEngine::make_so_pointer<InferenceEngine::IExtension>("libcpu_extension.so");
#endif // _WIN32 #endif // _WIN32
InferenceEngine::ResponseDesc resp; status = plugin->AddExtension(extension, &resp);
InferenceEngine::StatusCode status = plugin->LoadNetwork(net, &resp); if (status != InferenceEngine::StatusCode::OK)
CV_Error(Error::StsAssert, resp.msg);
}
status = plugin->LoadNetwork(net, &resp);
if (status != InferenceEngine::StatusCode::OK) if (status != InferenceEngine::StatusCode::OK)
CV_Error(Error::StsAssert, resp.msg); CV_Error(Error::StsAssert, resp.msg);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment