Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR optimizes the device availability check in OVEP by removing redundant calls to get_available_devices(), which is an expensive function causing memory regression and high execution time.
Removed unnecessary get_available_devices() call in ParseDeviceType and openvino_execution_provider.cc.
Introduced a global vector to store the available devices at OVEP initialization.
The cached device list will persist throughout OVEP’s lifetime, preventing repeated calls to get_available_devices().
Motivation and Context
Performance Improvement: Avoids multiple redundant calls to get_available_devices(), reducing initialization overhead.
Memory Optimization: Prevents unnecessary memory allocations from repeated device queries.
https://jira.devtools.intel.com/browse/HAFP-2960
FYI: get_available_devices() takes approximately 300 to 350 milliseconds for each call.