microsoft / microsoft/onnxruntime
[Feature Request] Extend CUDA ONNX Ops to latest opset version
- Dominant language
- C++
- Stars
- 21.9k
- Forks
- 4.2k
- Avg merge
- 4d 11h
- Merged PRs (30d)
- 184
Description
### Describe the feature request
## Summary
- Strict registry-level audit found **47** ONNX-domain CUDA ops whose highest registered opset is below the latest ONNX changelog opset.
- Priority breakdown: **P1 28**, **P2 11**, **P3 8**.
- Method: compare the highest opset registered in [`onnxruntime/core/providers/cuda/cuda_execution_provider.cc`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc) against the latest version entry in [`build/cuda/Debug/_deps/onnx-src/docs/Changelog.md`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md).
- This report is intentionally strict about registration coverage. It does **not** assume a newer schema is automatically backward-compatible with an older kernel registration.
## Priority Legend
- **P1**: foundational graph/model-import gaps that are more likely to block modern models or common exporter output.
- **P2**: secondary math/activation gaps that are real registration misses but are typically less central.
- **P3**: deprecated, generator, or otherwise lower-urgency gaps.
## Gaps
| Priority | Operator | CUDA Max | ONNX Latest | Gap | Registration | Changelog | PR |
| --- | --- | ---: | ---: | ---: | --- | --- | --- |
| P1 | `GlobalAveragePool` | 1 | 22 | 21 | [`cc:1843`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1843) | [`md:26711`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26711) | https://github.com/microsoft/onnxruntime/pull/27733 |
| P1 | `GlobalMaxPool` | 1 | 22 | 21 | [`cc:1852`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1852) | [`md:26780`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26780) | https://github.com/microsoft/onnxruntime/pull/27733 |
| P1 | `ConstantOfShape` | 9 | 25 | 16 | [`cc:1963`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1963) | [`md:31634`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31634) | https://github.com/microsoft/onnxruntime/pull/27728 |
| P1 | `TopK` | 11 | 24 | 13 | [`cc:2068`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2068) | [`md:31274`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31274) | https://github.com/microsoft/onnxruntime/pull/27735 |
| P1 | `Flatten` | 13 | 25 | 12 | [`cc:2334`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2334) | [`md:31731`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31731) | https://github.com/microsoft/onnxruntime/pull/27728 |
| P1 | `RoiAlign` | 10 | 22 | 12 | [`cc:2025`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2025) | [`md:27917`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27917) | https://github.com/microsoft/onnxruntime/pull/27646 |
| P1 | `Size` | 13 | 25 | 12 | [`cc:2263`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2263) | [`md:32532`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32532) | https://github.com/microsoft/onnxruntime/pull/27728 |
| P1 | `ConvTranspose` | 11 | 22 | 11 | [`cc:2080`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2080) | [`md:26246`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26246) | https://github.com/microsoft/onnxruntime/pull/27710 |
| P1 | `MaxPool` | 12 | 22 | 10 | [`cc:2121`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2121) | [`md:27215`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27215) | https://github.com/microsoft/onnxruntime/pull/27715 |
| P1 | `Dropout` | 13 | 22 | 9 | [`cc:2326`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2326) | [`md:26459`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26459) | Skip since it is training ops |
| P1 | `GRU` | 14 | 22 | 8 | [`cc:2437`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2437) | [`md:26601`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26601) | https://github.com/microsoft/onnxruntime/pull/27738 |
| P1 | `LSTM` | 14 | 22 | 8 | [`cc:2440`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2440) | [`md:26988`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26988) | https://github.com/microsoft/onnxruntime/pull/27737 |
| P1 | `RNN` | 14 | 22 | 8 | [`cc:2434`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2434) | [`md:27625`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27625) | https://github.com/microsoft/onnxruntime/pull/27743 |
| P1 | `Pad` | 18 | 25 | 7 | [`cc:2522`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2522) | [`md:32016`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32016) | https://github.com/microsoft/onnxruntime/pull/27708 |
| P1 | `Identity` | 19 | 25 | 6 | [`cc:2567`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2567) | [`md:31769`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31769) | https://github.com/microsoft/onnxruntime/pull/27728 |
| P1 | `If` | 19 | 25 | 6 | [`cc:2568`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2568) | [`md:31798`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31798) | https://github.com/microsoft/onnxruntime/pull/27728 |
| P1 | `Loop` | 19 | 25 | 6 | [`cc:2569`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2569) | [`md:31838`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31838) | https://github.com/microsoft/onnxruntime/pull/27728 |
| P1 | `Scan` | 19 | 25 | 6 | [`cc:2590`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2590) | [`md:32289`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32289) | https://github.com/microsoft/onnxruntime/pull/27728 |
| P1 | `DequantizeLinear` | 21 | 25 | 4 | [`cc:2603`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2603) | [`md:31672`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31672) | https://github.com/microsoft/onnxruntime/pull/27745 |
| P1 | `QuantizeLinear` | 21 | 25 | 4 | [`cc:2617`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2617) | [`md:32159`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32159) | https://github.com/microsoft/onnxruntime/pull/27741 |
| P1 | `Cast` | 23 | 25 | 2 | [`cc:2686`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2686) | [`md:31420`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L31420) | https://github.com/microsoft/onnxruntime/pull/27744 |
| P1 | `Reshape` | 23 | 25 | 2 | [`cc:2707`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2707) | [`md:32239`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32239) | https://github.com/microsoft/onnxruntime/pull/27742 |
| P1 | `Shape` | 23 | 25 | 2 | [`cc:2706`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2706) | [`md:32455`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32455) | https://github.com/microsoft/onnxruntime/pull/27734 |
| P1 | `Squeeze` | 23 | 25 | 2 | [`cc:2709`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2709) | [`md:32563`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32563) | https://github.com/microsoft/onnxruntime/pull/27739 |
| P1 | `Transpose` | 23 | 25 | 2 | [`cc:2708`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2708) | [`md:32597`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32597) | https://github.com/microsoft/onnxruntime/pull/27740 |
| P1 | `Unsqueeze` | 23 | 25 | 2 | [`cc:2710`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2710) | [`md:32642`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L32642) | https://github.com/microsoft/onnxruntime/pull/27739 |
| P2 | `Elu` | 6 | 22 | 16 | [`cc:1677`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1677) | [`md:26516`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26516) | https://github.com/microsoft/onnxruntime/pull/27753 |
| P2 | `InstanceNormalization` | 6 | 22 | 16 | [`cc:1937`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1937) | [`md:26943`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26943) | https://github.com/microsoft/onnxruntime/pull/27758 |
| P2 | `Selu` | 6 | 22 | 16 | [`cc:1689`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1689) | [`md:28021`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L28021) | https://github.com/microsoft/onnxruntime/pull/27753 |
| P2 | `Cos` | 7 | 22 | 15 | [`cc:1656`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1656) | [`md:26313`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26313) | https://github.com/microsoft/onnxruntime/pull/27756 |
| P2 | `Sin` | 7 | 22 | 15 | [`cc:1659`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1659) | [`md:28062`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L28062) | https://github.com/microsoft/onnxruntime/pull/27756 |
| P2 | `EyeLike` | 9 | 22 | 13 | [`cc:1985`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1985) | [`md:26555`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L26555) | https://github.com/microsoft/onnxruntime/pull/27757 |
| P2 | `ThresholdedRelu` | 10 | 22 | 12 | [`cc:2029`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2029) | [`md:28209`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L28209) | https://github.com/microsoft/onnxruntime/pull/27753 |
| P2 | `Round` | 11 | 22 | 11 | [`cc:2106`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2106) | [`md:27979`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27979) | https://github.com/microsoft/onnxruntime/pull/27754 |
| P2 | `Equal` | 13 | 19 | 6 | [`cc:2220`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2220) | [`md:22998`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L22998) | https://github.com/microsoft/onnxruntime/pull/27754 |
| P2 | `ReduceMax` | 18 | 20 | 2 | [`cc:2515`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2515) | [`md:24331`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L24331) | https://github.com/microsoft/onnxruntime/pull/27755 |
| P2 | `ReduceMin` | 18 | 20 | 2 | [`cc:2508`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2508) | [`md:24380`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L24380) | https://github.com/microsoft/onnxruntime/pull/27755 |
| P3 | `RandomNormal` | 1 | 22 | 21 | [`cc:2005`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2005) | [`md:27726`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27726) | |
| P3 | `RandomNormalLike` | 1 | 22 | 21 | [`cc:2006`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2006) | [`md:27772`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27772) | |
| P3 | `RandomUniform` | 1 | 22 | 21 | [`cc:2007`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2007) | [`md:27822`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27822) | |
| P3 | `RandomUniformLike` | 1 | 22 | 21 | [`cc:2008`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L2008) | [`md:27867`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L27867) | |
| P3 | `Softplus` | 1 | 22 | 21 | [`cc:1701`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1701) | [`md:28120`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L28120) | |
| P3 | `Softsign` | 1 | 22 | 21 | [`cc:1695`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1695) | [`md:28151`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L28151) | |
| P3 | `Scatter` | 10 | 11 | 1 | [`cc:1986`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1986) | [`md:12972`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L12972) | |
| P3 | `Upsample` | 9 | 10 | 1 | [`cc:1957`](https://github.com/microsoft/onnxruntime/blob/9fbdb466d4bcaee28f87361a57fa7874ce34c73f/onnxruntime/core/providers/cuda/cuda_execution_provider.cc#L1957) | [`md:10297`](https://github.com/onnx/onnx/blob/rel-1.20.1/docs/Changelog.md#L10297) | |
## Notes
- `Scatter` and `Upsample` are deprecated ONNX operators, so they stay in the report but are ranked lower.
- Several `P1` items are only 1-2 opsets behind, but they remain high priority because they are common graph-building or deployment operators.
- The earlier one-item `Upsample` note was too narrow; this wider pass covers the full ONNX-domain CUDA registration surface in the execution provider.
### Describe scenario use case
To run model exported with lastest onnx opset version
Contributor guide
Research direction
Start with onnxruntime/core/providers/cuda/cuda_execution_provider.cc and compare its CUDA registrations with the latest entries in the ONNX Changelog.md referenced by the audit. Review the linked PRs before selecting any remaining operator, since many gaps are already under active work. Done means the applicable registration gaps are addressed and the audit no longer reports them.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- backend, machine-learning
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100