diff --git a/inference-engine/src/cldnn_engine/cldnn_engine.cpp b/inference-engine/src/cldnn_engine/cldnn_engine.cpp index a875f01aad3f8d..8f3199aad27e17 100644 --- a/inference-engine/src/cldnn_engine/cldnn_engine.cpp +++ b/inference-engine/src/cldnn_engine/cldnn_engine.cpp @@ -536,7 +536,12 @@ QueryNetworkResult clDNNEngine::QueryNetwork(const CNNNetwork& network, CLDNNPlugin::Config conf = _impl->m_config; UpdateConfig(conf, network, config); - Program prog; + if (m_defaultContext == nullptr) { + m_defaultContext.reset(new CLDNNRemoteCLContext( + std::const_pointer_cast(shared_from_this()), + ParamMap(), conf)); + } + Program prog(m_defaultContext->getImpl()->GetEngine(), conf); auto function = network.getFunction(); if (function == nullptr) { THROW_IE_EXCEPTION << "CNNetworkImpl representation is not supported anymore"; diff --git a/inference-engine/src/cldnn_engine/cldnn_engine.h b/inference-engine/src/cldnn_engine/cldnn_engine.h index 963d9fd6069c69..c7a38426b1abc7 100644 --- a/inference-engine/src/cldnn_engine/cldnn_engine.h +++ b/inference-engine/src/cldnn_engine/cldnn_engine.h @@ -24,7 +24,7 @@ class clDNNEngine : public InferenceEngine::InferencePluginInternal, std::map device_map; std::mutex engine_mutex; - CLDNNRemoteCLContext::Ptr m_defaultContext; + mutable CLDNNRemoteCLContext::Ptr m_defaultContext; cldnn::device_info GetDeviceInfo(const std::map &config) const; InferenceEngine::CNNNetwork CloneAndTransformNetwork(const InferenceEngine::CNNNetwork& network, diff --git a/inference-engine/src/cldnn_engine/cldnn_program.h b/inference-engine/src/cldnn_engine/cldnn_program.h index ebae4c466053c2..51e0eaa4a5f0f1 100644 --- a/inference-engine/src/cldnn_engine/cldnn_program.h +++ b/inference-engine/src/cldnn_engine/cldnn_program.h @@ -71,6 +71,8 @@ struct PerfCounter { class Program { public: Program(InferenceEngine::CNNNetwork& network, std::shared_ptr engine, const Config& config); + Program(std::shared_ptr engine, const Config& config) : m_config(config), m_engine(engine), + m_curBatch(-1), queryMode(false), m_max_batch(1) {} Program() : m_config({}), m_engine(nullptr), m_curBatch(-1), queryMode(false), m_max_batch(1) {} static const cldnn::primitive_id m_preProcessTag;