Skip to content

Commit a3246ac

Browse files
committed
Add support for dynmaic workload type
1 parent a8350bb commit a3246ac

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

onnxruntime/core/providers/openvino/backend_manager.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,15 @@ void BackendManager::Compute(OrtKernelContext* context) {
502502

503503
dynamic_backend->Infer(context);
504504
} else {
505+
if (dynamic_workload_type == "EFFICIENT") {
506+
auto ov_execution_network = concrete_backend_->GetOVCompiledModel();
507+
ov_execution_network.set_property({{"WORKLOAD_TYPE", "EFFICIENT"}});
508+
LOGS_DEFAULT(VERBOSE) << "[OpenVINO-EP]" << " OV WORKLOAD_TYPE property is set to EFFICIENT mode for OV inference";
509+
} else if (dynamic_workload_type == "DEFAULT") {
510+
auto ov_execution_network = concrete_backend_->GetOVCompiledModel();
511+
ov_execution_network.set_property({{"WORKLOAD_TYPE", "DEFAULT"}});
512+
LOGS_DEFAULT(VERBOSE) << "[OpenVINO-EP]" << " OV WORKLOAD_TYPE property is set to DEFAULT mode for OV inference";
513+
}
505514
concrete_backend_->Infer(context);
506515
}
507516
#ifdef OPENVINO_FIL_ENABLED

onnxruntime/core/providers/openvino/backend_manager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class BackendManager {
3030
GlobalContext& GetGlobalContext();
3131
Status ExportCompiledBlobAsEPCtxNode(const onnxruntime::GraphViewer& subgraph,
3232
const logging::Logger& logger);
33+
std::string dynamic_workload_type = "DEFAULT";
3334

3435
private:
3536
std::unique_ptr<ONNX_NAMESPACE::ModelProto> GetModelProtoFromFusedNode(

onnxruntime/core/providers/openvino/openvino_execution_provider.cc

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ common::Status OpenVINOExecutionProvider::Compile(
150150
graph_body_viewer,
151151
*GetLogger(),
152152
ep_ctx_handle_);
153-
153+
backend_manager_ = backend_manager;
154154
compute_info.create_state_func =
155155
[backend_manager](ComputeContext* context, FunctionState* state) {
156156
OpenVINOEPFunctionState* p = new OpenVINOEPFunctionState();
@@ -198,4 +198,18 @@ std::vector<AllocatorPtr> OpenVINOExecutionProvider::CreatePreferredAllocators()
198198
}
199199
#endif
200200

201+
common::Status OpenVINOExecutionProvider::SetEpDynamicOptions(gsl::span<const char* const> keys,
202+
gsl::span<const char* const> values) {
203+
if ((std::find(keys.begin(), keys.end(), "ep.dynamic.workload_type") != keys.end()) &&
204+
(std::find(values.begin(), values.end(), "Efficient") != values.end())) {
205+
backend_manager_->dynamic_workload_type = "EFFICIENT";
206+
LOGS_DEFAULT(VERBOSE) << "[OpenVINO-EP]" << backend_manager_->dynamic_workload_type << " mode is set for OV inference";
207+
}
208+
if ((std::find(keys.begin(), keys.end(), "ep.dynamic.workload_type") != keys.end()) &&
209+
(std::find(values.begin(), values.end(), "Default") != values.end())) {
210+
backend_manager_->dynamic_workload_type = "DEFAULT";
211+
LOGS_DEFAULT(VERBOSE) << "[OpenVINO-EP]" << backend_manager_->dynamic_workload_type << " mode is set for OV inference";
212+
}
213+
return Status::OK();
214+
}
201215
} // namespace onnxruntime

onnxruntime/core/providers/openvino/openvino_execution_provider.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ class OpenVINOExecutionProvider : public IExecutionProvider {
188188
Status Compile(const std::vector<FusedNodeAndGraph>& fused_nodes,
189189
std::vector<NodeComputeInfo>& node_compute_funcs) override;
190190

191+
Status SetEpDynamicOptions(gsl::span<const char* const> /*keys*/,
192+
gsl::span<const char* const> /*values*/) override;
193+
191194
const void* GetExecutionHandle() const noexcept override {
192195
return nullptr;
193196
}
@@ -196,6 +199,7 @@ class OpenVINOExecutionProvider : public IExecutionProvider {
196199
#endif
197200
private:
198201
std::unique_ptr<openvino_ep::GlobalContext> global_context_;
202+
std::shared_ptr<openvino_ep::BackendManager> backend_manager_;
199203
openvino_ep::EPCtxHandler ep_ctx_handle_{};
200204
};
201205

0 commit comments

Comments
 (0)