microsoft / microsoft/WindowsAppSDK-Samples
NVIDIA EP (NvTensorRtRtxExecutionProvider) not auto-downloaded on clean system
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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