TensorRT-RTX-EP-ABI: NVIDIA TensorRT RTX Execution Provider: The Plugin That Turns ONNX Runtime Into a Hardware Socket

A deep look at how NVIDIA split high-performance RTX inference out of the monolith, using ORT’s EP ABI, adaptive JIT compilation, and GPU memory tricks to make desktop deployment feel surprisingly modular.

9 min read • View on GitHub • More from NVIDIA

A desktop workstation with ONNX Runtime as a central hub and a slim TensorRT RTX DLL sliding into a side port like a precision cartridge. Inside the machine, a GPU, cache vault, and routed graph nodes show how execution is handed off without rebuilding the whole runtime.
The surprise is not the speedup. It is the packaging model: acceleration arrives as a loadable component instead of a custom runtime fork.
Key Takeaways

The most interesting thing about TensorRT RTX Execution Provider is not that it accelerates ONNX Runtime. It is that it changes what ORT is allowed to be. With the EP ABI, NVIDIA can ship a standalone DLL that plugs into an existing runtime instead of asking developers to rebuild the world around a monolith.

TensorRT for RTX introduces adaptive inference—engines that optimize automatically at runtime for your specific system, progressively improving compilation and inference performance as your application runs.

The new unit of deployment is the DLL

Classic accelerator integration tends to pull developers toward heavier builds and tighter coupling. This project goes the other way. ORT exposes an execution-provider ABI, and TensorRT RTX ships as a loadable provider factory with exported entry points such as CreateEpFactories and ReleaseEpFactory.

ORT becomes a host runtime. The accelerator arrives as a plugin-shaped module with its own lifecycle.

That shift matters because it changes the integration contract. Instead of bundling hardware support into a custom ORT fork, NVIDIA can hand apps a GPU-optimized extension that looks closer to a platform feature than a framework rebuild.

Why desktop inference needs a different shape

Client-side AI has different constraints than server inference. Binary size matters. Cold start matters. Portability across RTX cards matters. The repository is built around that reality, with Windows hardening, CUDA checks, and a package footprint that is meant to feel shippable rather than heroic.

DimensionTensorRT RTX EPCUDA EPStandard TensorRT EP
DeploymentStandalone plugin for existing ORT installsBuilt into ORT, more general-purposePowerful, but less modular for desktop distribution
Primary goalClient-side RTX inference with low frictionBroad GPU acceleration across workloadsHighest-performance TensorRT execution
Startup behaviorOptimized for JIT compile and reuseOften relies on finer-grained kernel selectionCan involve heavier engine workflows
Packaging storySide-loadable DLLPart of the runtime ecosystemUsually more coupled to the deployment stack
Plugin supportNot supported todaySupported in broader TensorRT ecosystemSupported in the generic TensorRT world
A close-up of GPU memory shown as two chambers. One chamber is a BFC arena with blocks sliding together and apart, while the other is a CUDA mempool draining unused activation memory through a valve. A small output buffer links both chambers and expands as shapes change.
The EP is not just faster. It is designed to return memory to the system when the model goes quiet.

Inside the execution provider

The repository is small enough to read as a system map. The factory layer handles the ORT handshake. The execution provider core translates ONNX subgraphs into TensorRT RTX engines. Memory helpers manage arena allocation and CUDA mempool behavior. Utility code keeps the CUDA, filesystem, and loading path sane.

// Conceptual shape of the ABI boundary
extern "C" OrtStatus* CreateEpFactories(
    OrtSessionOptions* options,
    OrtEpFactoryInterface** factories,
    size_t* count);

extern "C" void ReleaseEpFactory(OrtEpFactoryInterface* factory);

That boundary is the design center. It tells you NVIDIA is optimizing for isolation, versioning, and deployment, not just kernel speed. The provider can be updated without dragging the whole ORT stack through a rebuild.

The TensorRT EP can also fuse such operation blocks. At the same time, it evaluates the whole graph and collects all possible paths to execute the graph.

The hardest problem is not speed. It is shape

The most instructive part of the implementation is output allocation. Some tensors do not have fully known shapes until runtime. That means the provider has to negotiate memory after inference starts, not only before it begins.

The code has to honor a strange but important rule. Even when an output tensor is empty, TensorRT still wants a valid pointer. So the allocator is not only picking sizes. It is also preserving runtime contracts under awkward shape conditions.

That is why the memory story and the shape story are the same story. The EP uses a BFC arena for general device memory and a CUDA mempool for activation memory, then shrinks the latter when the model is idle. It is trying to feel light without becoming brittle.

What NVIDIA adds beyond raw TensorRT

The repo is not just a thin adapter. It includes custom op domain registration, FP4 and FP8 support paths, secure Windows loading, and build hardening. That is the difference between a benchmark demo and something you can actually distribute to desktop users.

Plugins are not supported in TensorRT-RTX

That missing feature matters. It is the cleanest reminder that this stack is still a product with edges, not a universal drop-in for every TensorRT workload. The deployment story is better, but the extensibility story is narrower.

Where it wins, and where it does not

QuestionTensorRT RTX EPCUDA EPDirectML
What is the main advantage?Modular RTX acceleration with a better desktop deployment storyFlexible general-purpose GPU executionWindows-native compatibility across more hardware
What does it optimize?Whole-graph execution with adaptive runtime behaviorFine-grained operator executionBroad device coverage and portability
What is the packaging trade-off?Depends on the EP ABI and NVIDIA's DLL modelLess specialized, but more familiarUsually easier to explain, less specialized
What is the key limitation?No plugin support yetLess whole-graph specializationLower performance on NVIDIA RTX in this context

The simplest way to read the comparison is this: CUDA EP is the flexible toolbox. TensorRT RTX EP is the prewired power module. If you want the cleanest path to RTX inference on a desktop app, that distinction is the whole game.

The implication: ORT is becoming a platform

The deeper story is not about one accelerator. It is about a runtime that can host specialized acceleration without surrendering control to a single monolithic build. That makes ONNX Runtime feel less like an engine and more like a platform socket.

If that model sticks, vendors can ship optimized inference in smaller pieces, apps can stay lighter, and the integration burden shifts away from developers. NVIDIA is not just accelerating graphs here. It is trying to make the runtime itself modular.