Skip to content

Commit db255cb

Browse files
committed
feat: add support for custom OpenVINO execution provider parameters
Replace hardcoded OpenVINO provider options with dynamic parameter parsing from model configuration. Parse parameters from execution accelerator config, maintain device_type default as CPU when not specified, and use SessionOptionsAppendExecutionProvider_OpenVINO_V2 API with key-value arrays.
1 parent 1eef85d commit db255cb

1 file changed

Lines changed: 36 additions & 5 deletions

File tree

src/onnxruntime.cc

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -922,13 +922,44 @@ ModelState::LoadModel(
922922
#ifdef TRITON_ENABLE_ONNXRUNTIME_OPENVINO
923923
if (name == kOpenVINOExecutionAccelerator) {
924924
need_lock = true;
925-
OrtOpenVINOProviderOptions openvino_options;
926-
openvino_options.device_type =
927-
"CPU"; // device_type default is CPU
925+
926+
std::vector<std::string> openvino_option_keys;
927+
std::vector<std::string> openvino_option_values;
928+
929+
triton::common::TritonJson::Value params;
930+
bool has_device_type = false;
931+
if (ea.Find("parameters", &params)) {
932+
std::vector<std::string> param_keys;
933+
RETURN_IF_ERROR(params.Members(&param_keys));
934+
for (const auto& param_key : param_keys) {
935+
std::string value;
936+
RETURN_IF_ERROR(
937+
params.MemberAsString(param_key.c_str(), &value));
938+
if (param_key == "device_type") {
939+
has_device_type = true;
940+
}
941+
openvino_option_keys.push_back(param_key);
942+
openvino_option_values.push_back(value);
943+
}
944+
}
945+
946+
if (!has_device_type) {
947+
openvino_option_keys.push_back("device_type");
948+
openvino_option_values.push_back(
949+
"CPU"); // device_type default is CPU
950+
}
951+
952+
std::vector<const char*> option_keys;
953+
std::vector<const char*> option_values;
954+
for (size_t idx = 0; idx < openvino_option_keys.size(); ++idx) {
955+
option_keys.push_back(openvino_option_keys[idx].c_str());
956+
option_values.push_back(openvino_option_values[idx].c_str());
957+
}
928958

929959
RETURN_IF_ORT_ERROR(
930-
ort_api->SessionOptionsAppendExecutionProvider_OpenVINO(
931-
soptions, &openvino_options));
960+
ort_api->SessionOptionsAppendExecutionProvider_OpenVINO_V2(
961+
soptions, option_keys.data(), option_values.data(),
962+
option_keys.size()));
932963

933964
LOG_MESSAGE(
934965
TRITONSERVER_LOG_VERBOSE,

0 commit comments

Comments
 (0)