@@ -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);
0 commit comments