From 35dd2b820eb28b884ad1733b64e164ba3573d373 Mon Sep 17 00:00:00 2001 From: "Javier E. Martinez" Date: Thu, 7 Nov 2024 16:26:53 -0800 Subject: [PATCH] Fixing dynamic workload type implementation to update the type on SetEpDynamicOptions() --- .../core/providers/openvino/backend_manager.cc | 6 ++++++ .../core/providers/openvino/backend_manager.h | 1 + .../openvino/openvino_execution_provider.cc | 15 +++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/onnxruntime/core/providers/openvino/backend_manager.cc b/onnxruntime/core/providers/openvino/backend_manager.cc index 4fca4037301fb..ffbdbecfe20f9 100644 --- a/onnxruntime/core/providers/openvino/backend_manager.cc +++ b/onnxruntime/core/providers/openvino/backend_manager.cc @@ -225,6 +225,12 @@ Status BackendManager::ExportCompiledBlobAsEPCtxNode(const onnxruntime::GraphVie return Status::OK(); } +void BackendManager::SetDynamicWorkloadType(const std::string& value) { + auto ov_execution_network = concrete_backend_->GetOVCompiledModel(); + ov_execution_network.set_property({{"WORKLOAD_TYPE", value}}); + LOGS_DEFAULT(VERBOSE) << "[OpenVINO-EP] " << value << " workload type mode is set for OV inference"; +} + bool BackendManager::ModelHasBatchedInputs(const ONNX_NAMESPACE::ModelProto& model_proto) const { bool has_batched_inputs = true; diff --git a/onnxruntime/core/providers/openvino/backend_manager.h b/onnxruntime/core/providers/openvino/backend_manager.h index b9ff7a72372b3..3f50d7ac38977 100644 --- a/onnxruntime/core/providers/openvino/backend_manager.h +++ b/onnxruntime/core/providers/openvino/backend_manager.h @@ -30,6 +30,7 @@ class BackendManager { GlobalContext& GetGlobalContext(); Status ExportCompiledBlobAsEPCtxNode(const onnxruntime::GraphViewer& subgraph, const logging::Logger& logger); + void SetDynamicWorkloadType(const std::string &value); private: std::unique_ptr GetModelProtoFromFusedNode( diff --git a/onnxruntime/core/providers/openvino/openvino_execution_provider.cc b/onnxruntime/core/providers/openvino/openvino_execution_provider.cc index 313e164f654c2..73c607dd4a31f 100644 --- a/onnxruntime/core/providers/openvino/openvino_execution_provider.cc +++ b/onnxruntime/core/providers/openvino/openvino_execution_provider.cc @@ -206,4 +206,19 @@ std::vector OpenVINOExecutionProvider::CreatePreferredAllocators() } #endif +common::Status OpenVINOExecutionProvider::SetEpDynamicOptions( + gsl::span keys, gsl::span values) { + for (auto key : keys) { + if (strcmp(key, "ep.dynamic.workload_type") == 0) { + for (auto val : values) { + if (strcmp(val, "Efficient") == 0) { + backend_manager_->SetDynamicWorkloadType("EFFICIENT"); + } else if (strcmp(val, "Default") == 0) { + backend_manager_->SetDynamicWorkloadType("DEFAULT"); + } + } + } + } + return Status::OK(); +} } // namespace onnxruntime