Skip to content

Commit 3c43029

Browse files
committed
temporary way to get provider option without proper API
1 parent c8e3d6f commit 3c43029

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

plugin_execution_providers/tensorrt/tensorrt_execution_provider.cc

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,17 +1980,36 @@ TensorrtExecutionProvider::TensorrtExecutionProvider(TensorrtExecutionProviderFa
19801980

19811981
// The implementation of the SessionOptionsAppendExecutionProvider C API function automatically adds EP options to
19821982
// the session option configurations with the key prefix "ep.<lowercase_ep_name>.".
1983-
const std::string key_prefix = OrtSessionOptions::GetProviderOptionPrefix(name_.c_str());
1984-
const ConfigOptions& config_options = session_options.GetConfigOptions();
1985-
const std::unordered_map<std::string, std::string>& config_options_map = config_options.GetConfigOptionsMap();
1983+
// We extract those EP options to create a new "provider options" key/value map.
1984+
std::string lowercase_ep_name = name_.c_str();
1985+
std::transform(lowercase_ep_name.begin(), lowercase_ep_name.end(), lowercase_ep_name.begin(),
1986+
[](unsigned char c) { return static_cast<char>(std::tolower(c)); });
19861987

1988+
// The implementation of the SessionOptionsAppendExecutionProvider C API function automatically adds EP options to
1989+
// the session option configurations with the key prefix "ep.<lowercase_ep_name>.".
1990+
std::string key_prefix = "ep." + lowercase_ep_name + ".";
1991+
1992+
/*
19871993
// Get provider options as key-value pair strings
19881994
ProviderOptions provider_options;
19891995
for (const auto& [key, value] : config_options_map) {
19901996
if (key.rfind(key_prefix, 0) == 0) {
19911997
provider_options[key.substr(key_prefix.size())] = value;
19921998
}
19931999
}
2000+
*/
2001+
2002+
// Get all the provider options as session config from sesson
2003+
ProviderOptions provider_options;
2004+
int has_session_config_entry = 0;
2005+
std::string provider_option = key_prefix + "trt_engine_cache_enable";
2006+
auto status = ort_api.HasSessionConfigEntry(&session_options, provider_option.c_str(), & has_session_config_entry);
2007+
if (has_session_config_entry) {
2008+
char* value = nullptr;
2009+
size_t size = 0;
2010+
status = ort_api.GetSessionConfigEntry(&session_options, provider_option.c_str(), value, &size);
2011+
provider_options[provider_option.substr(key_prefix.size())] = value;
2012+
}
19942013

19952014
// Provider options to TensorrtExecutionProviderInfo
19962015
info_ = TensorrtExecutionProviderInfo::FromProviderOptions(provider_options);

plugin_execution_providers/tensorrt/utils/provider_options.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,8 @@
77
#include <unordered_map>
88
#include <vector>
99

10-
namespace onnxruntime {
11-
1210
// data types for execution provider options
1311

1412
using ProviderOptions = std::unordered_map<std::string, std::string>;
1513
using ProviderOptionsVector = std::vector<ProviderOptions>;
1614
using ProviderOptionsMap = std::unordered_map<std::string, ProviderOptions>;
17-
18-
} // namespace onnxruntime

0 commit comments

Comments
 (0)