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