Skip to content

Conversation

@adrianlizarraga
Copy link
Contributor

Description

Updates the BaseTester class used by the onnxruntime_provider_test tool to support plugin EPs that use a kernel registry but compile other nodes. For example, TRT EP only uses registered kernels for Memcpy* nodes, but compiles every other node.

Without this change, plugin EPs that use a mix of compiled nodes and registered kernels cannot be tested with onnxruntime_provider_test.

Motivation and Context

@adrianlizarraga adrianlizarraga changed the title BaseTester: support plugin EPs with a compiled nodes and registered kernels BaseTester: support plugin EPs with compiled nodes and registered kernels Jan 27, 2026
const auto& provider_type = ep.Type();

constexpr std::array kEpsThatDoNotUseKernelRegistry{
constexpr std::array kEpsThatDoNotUseKernelRegistryForAllNodes{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe call them "EPs that compile nodes" instead of "EPs that do not use kernel registry for all nodes"

constexpr std::array kEpsThatDoNotUseKernelRegistryForAllNodes{
kOpenVINOExecutionProvider,
kTensorrtExecutionProvider,
kTensorrtExecutionProvider, // uses kernel registry for Memcpy* nodes, but compiles all others.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just to confirm, the plugin EP name will be different, right? that assumption is made here:

ORT_ENFORCE(std::find(all_provider_types.begin(), all_provider_types.end(),
*dynamic_plugin_ep_name) == all_provider_types.end(),
"Dynamic plugin EP name conflicts with a known EP name: ", *dynamic_plugin_ep_name);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question. @chilo-ms do you know if the plugin EP name is different?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume so, but let me confirm with Nvidia for their plugin TRT RTX EP.

Also, do we want to include provider-bridge TRT RTX EP, kNvTensorRTRTXExecutionProvider, in this list as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should only add kNvTensorRTRTXExecutionProvider to this list if its name differs from the plugin EP version, right?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should only add kNvTensorRTRTXExecutionProvider to this list if its name differs from the plugin EP version, right?

Yes, waiting for Nvidia's reply for the name of their plugin TRT RTX EP, will update.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants