Skip to content

Commit 1b4cd82

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 dd49b10 commit 1b4cd82

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
@@ -925,13 +925,44 @@ ModelState::LoadModel(
925925
#ifdef TRITON_ENABLE_ONNXRUNTIME_OPENVINO
926926
if (name == kOpenVINOExecutionAccelerator) {
927927
need_lock = true;
928-
OrtOpenVINOProviderOptions openvino_options;
929-
openvino_options.device_type =
930-
"CPU"; // device_type default is CPU
928+
929+
std::vector<std::string> openvino_option_keys;
930+
std::vector<std::string> openvino_option_values;
931+
932+
triton::common::TritonJson::Value params;
933+
bool has_device_type = false;
934+
if (ea.Find("parameters", &params)) {
935+
std::vector<std::string> param_keys;
936+
RETURN_IF_ERROR(params.Members(&param_keys));
937+
for (const auto& param_key : param_keys) {
938+
std::string value;
939+
RETURN_IF_ERROR(
940+
params.MemberAsString(param_key.c_str(), &value));
941+
if (param_key == "device_type") {
942+
has_device_type = true;
943+
}
944+
openvino_option_keys.push_back(param_key);
945+
openvino_option_values.push_back(value);
946+
}
947+
}
948+
949+
if (!has_device_type) {
950+
openvino_option_keys.push_back("device_type");
951+
openvino_option_values.push_back(
952+
"CPU"); // device_type default is CPU
953+
}
954+
955+
std::vector<const char*> option_keys;
956+
std::vector<const char*> option_values;
957+
for (size_t idx = 0; idx < openvino_option_keys.size(); ++idx) {
958+
option_keys.push_back(openvino_option_keys[idx].c_str());
959+
option_values.push_back(openvino_option_values[idx].c_str());
960+
}
931961

932962
RETURN_IF_ORT_ERROR(
933-
ort_api->SessionOptionsAppendExecutionProvider_OpenVINO(
934-
soptions, &openvino_options));
963+
ort_api->SessionOptionsAppendExecutionProvider_OpenVINO_V2(
964+
soptions, option_keys.data(), option_values.data(),
965+
option_keys.size()));
935966

936967
LOG_MESSAGE(
937968
TRITONSERVER_LOG_VERBOSE,

0 commit comments

Comments
 (0)