microsoft / microsoft/WindowsAppSDK-Samples

NVIDIA EP (NvTensorRtRtxExecutionProvider) not auto-downloaded on clean system

Open
#589 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
PowerShell
Stars
1k
Forks
335
Avg merge
5d 1h
Merged PRs (30d)
8

Description

Issue: NVIDIA NPU EP Download Error
Env:
NVIDIA GeForce RTX 3060 Laptop GPU, driver version 32.0.15.7324, cuda version 12.5
windows 11 Pro, 24H2
windows Update to KB5065789(2025-09 D)

To test whether CppConsoleDesktop can automatically call the NVIDIA execution provider on a clean PC, I ran the original sample (with only minor debug prints added):

std::cout << "Getting available providers..." << std::endl;
auto catalog = winrt::Microsoft::Windows::AI::MachineLearning::ExecutionProviderCatalog::GetDefault();
auto providers = catalog.FindAllProviders();
for (const auto& provider : providers)
{
    std::wcout << L"Provider: " << provider.Name().c_str() << std::endl;
    try
    {
        auto readyState = provider.ReadyState();
        std::wcout << L"  Ready state: " << static_cast<int>(readyState) << std::endl;

        // Only call EnsureReadyAsync if we allow downloads or if the provider is already ready
        if (allowDownload || readyState != winrt::Microsoft::Windows::AI::MachineLearning::ExecutionProviderReadyState::NotPresent)
        {
            std::wcout << L"  Ensuring ready..." << std::endl;
            provider.EnsureReadyAsync().get();
        }

        if (!provider.TryRegister())
        {
            std::wcout << L" Failed to register provider!" << std::endl;
        }
        else
        {
            std::wcout << L" Successfully registered." << std::endl;
        }
    }
    catch (...)
    {
        // Continue if provider fails to initialize
    }
}

The app detects NvTensorRtRtxExecutionProvider in the catalog, but TryRegister() fails, and the EP is never actually downloaded or becomes usable.

Getting available providers...
Provider: NvTensorRTRTXExecutionProvider
  Ready state: 2
  Ensuring ready...
 Failed to register provider!
ONNX Runtime Version: 1.23.2

According to the official documentation, NvTensorRtRtxExecutionProvider was released in version 1.8.14.0 via Windows Update in "2025 9D."
However, why am I not getting the execution provider (EP) properly, even though I'm using the corresponding system version?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the C++ console desktop sample and trace the ExecutionProviderCatalog flow shown in the report, including ReadyState, EnsureReadyAsync(), and TryRegister(). Reproduce the clean-system behavior with the reported NVIDIA and Windows versions, then identify why the provider is not downloaded or registered and verify that it becomes usable.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop, machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.