File tree Expand file tree Collapse file tree 4 files changed +29
-1
lines changed
onnxruntime/core/providers/openvino Expand file tree Collapse file tree 4 files changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -502,6 +502,15 @@ void BackendManager::Compute(OrtKernelContext* context) {
502
502
503
503
dynamic_backend->Infer (context);
504
504
} 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
+ }
505
514
concrete_backend_->Infer (context);
506
515
}
507
516
#ifdef OPENVINO_FIL_ENABLED
Original file line number Diff line number Diff line change @@ -30,6 +30,7 @@ class BackendManager {
30
30
GlobalContext& GetGlobalContext ();
31
31
Status ExportCompiledBlobAsEPCtxNode (const onnxruntime::GraphViewer& subgraph,
32
32
const logging::Logger& logger);
33
+ std::string dynamic_workload_type = " DEFAULT" ;
33
34
34
35
private:
35
36
std::unique_ptr<ONNX_NAMESPACE::ModelProto> GetModelProtoFromFusedNode (
Original file line number Diff line number Diff line change @@ -150,7 +150,7 @@ common::Status OpenVINOExecutionProvider::Compile(
150
150
graph_body_viewer,
151
151
*GetLogger (),
152
152
ep_ctx_handle_);
153
-
153
+ backend_manager_ = backend_manager;
154
154
compute_info.create_state_func =
155
155
[backend_manager](ComputeContext* context, FunctionState* state) {
156
156
OpenVINOEPFunctionState* p = new OpenVINOEPFunctionState ();
@@ -198,4 +198,18 @@ std::vector<AllocatorPtr> OpenVINOExecutionProvider::CreatePreferredAllocators()
198
198
}
199
199
#endif
200
200
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
+ }
201
215
} // namespace onnxruntime
Original file line number Diff line number Diff line change @@ -188,6 +188,9 @@ class OpenVINOExecutionProvider : public IExecutionProvider {
188
188
Status Compile (const std::vector<FusedNodeAndGraph>& fused_nodes,
189
189
std::vector<NodeComputeInfo>& node_compute_funcs) override ;
190
190
191
+ Status SetEpDynamicOptions (gsl::span<const char * const > /* keys*/ ,
192
+ gsl::span<const char * const > /* values*/ ) override ;
193
+
191
194
const void * GetExecutionHandle () const noexcept override {
192
195
return nullptr ;
193
196
}
@@ -196,6 +199,7 @@ class OpenVINOExecutionProvider : public IExecutionProvider {
196
199
#endif
197
200
private:
198
201
std::unique_ptr<openvino_ep::GlobalContext> global_context_;
202
+ std::shared_ptr<openvino_ep::BackendManager> backend_manager_;
199
203
openvino_ep::EPCtxHandler ep_ctx_handle_{};
200
204
};
201
205
You can’t perform that action at this time.
0 commit comments