diff --git a/onnxruntime/core/providers/openvino/backend_manager.cc b/onnxruntime/core/providers/openvino/backend_manager.cc index 9ef7e4b86db5f..2333aaefbe305 100644 --- a/onnxruntime/core/providers/openvino/backend_manager.cc +++ b/onnxruntime/core/providers/openvino/backend_manager.cc @@ -28,9 +28,10 @@ SessionContext& BackendManager::GetSessionContext() { return session_context_; } -ov::CompiledModel& BackendManager::GetOVCompiledModel() { - ov::CompiledModel& ov_ptr = concrete_backend_->GetOVCompiledModel(); - return (ov_ptr); +ov::CompiledModel BackendManager::GetOVCompiledModel() { + if (concrete_backend_) + return concrete_backend_->GetOVCompiledModel(); + return ov::CompiledModel(); } BackendManager::BackendManager(SessionContext& session_context, diff --git a/onnxruntime/core/providers/openvino/backend_manager.h b/onnxruntime/core/providers/openvino/backend_manager.h index cdc27701ec2e6..cb1ca7001a00c 100644 --- a/onnxruntime/core/providers/openvino/backend_manager.h +++ b/onnxruntime/core/providers/openvino/backend_manager.h @@ -29,7 +29,7 @@ class BackendManager { void ShutdownBackendManager(); SessionContext& GetSessionContext(); Status ExportCompiledBlobAsEPCtxNode(const onnxruntime::GraphViewer& subgraph); - ov::CompiledModel& GetOVCompiledModel(); + ov::CompiledModel GetOVCompiledModel(); private: std::unique_ptr GetModelProtoFromFusedNode( diff --git a/onnxruntime/core/providers/openvino/backends/basic_backend.h b/onnxruntime/core/providers/openvino/backends/basic_backend.h index 7d905f4a1e2f7..8bd5b65d71d1a 100644 --- a/onnxruntime/core/providers/openvino/backends/basic_backend.h +++ b/onnxruntime/core/providers/openvino/backends/basic_backend.h @@ -38,7 +38,7 @@ class BasicBackend : public IBackend { void Infer(OrtKernelContext* context) override; ~BasicBackend() override = default; - ov::CompiledModel& GetOVCompiledModel() override { + ov::CompiledModel GetOVCompiledModel() override { return exe_network_.Get(); } diff --git a/onnxruntime/core/providers/openvino/ibackend.h b/onnxruntime/core/providers/openvino/ibackend.h index 04d1f52cbf834..4532349897d17 100644 --- a/onnxruntime/core/providers/openvino/ibackend.h +++ b/onnxruntime/core/providers/openvino/ibackend.h @@ -15,7 +15,7 @@ namespace openvino_ep { class IBackend { public: virtual void Infer(OrtKernelContext* context) = 0; - virtual ov::CompiledModel& GetOVCompiledModel() = 0; + virtual ov::CompiledModel GetOVCompiledModel() = 0; virtual ~IBackend() = default; }; using ptr_stream_t = std::unique_ptr; diff --git a/onnxruntime/core/providers/openvino/openvino_execution_provider.cc b/onnxruntime/core/providers/openvino/openvino_execution_provider.cc index 70bc64c0f65bc..3793317749a04 100644 --- a/onnxruntime/core/providers/openvino/openvino_execution_provider.cc +++ b/onnxruntime/core/providers/openvino/openvino_execution_provider.cc @@ -238,10 +238,20 @@ common::Status OpenVINOExecutionProvider::SetEpDynamicOptions(gsl::span