[Plugin EP] Add OrtEp::OnSessionInitializationEnd()

Merged
AD
6mo ago
+74-1

Description

Port IExecutionProvider::OnSessionInitializationEnd() to the public plugin EP C API (OrtEp struct).

This gives plugin EP authors an opportunity to synchronize and clean up temporary resources after session initialization is complete, reducing memory usage and ensuring the first inference run is fast.

Changes

  • onnxruntime_ep_c_api.h — Added optional OnSessionInitializationEnd function pointer to end of OrtEp struct (\since Version 1.27).
  • ep_plugin_provider_interfaces.h/.cc — Added PluginExecutionProvider::OnSessionInitializationEnd() override that delegates to the OrtEp callback with version (< 27) and null guards.
  • ep_plugin_provider_test.cc — Added 4 unit tests covering: null callback fallback, success, error propagation, and old-version fallback.

Motivation and Context

OnSessionInitializationEnd() already exists on the internal IExecutionProvider (used by DML EP, for example). Plugin EPs built as shared libraries against the public C API had no way to receive this notification. This change closes that gap.

Test Coverage

TestScenario
OnSessionInitializationEnd_NullCallbackNULL pointer falls back to base class (OK)
OnSessionInitializationEnd_SuccessCallback returns OK
OnSessionInitializationEnd_ErrorError status propagates
OnSessionInitializationEnd_OldVersionFallbackVersion < 27 bypasses callback