microsoft / microsoft/onnxruntime

[Feature Request] Extend CUDA ONNX Ops to latest opset version

Open
#27,729 1 comment 2 reactions 0 assignees View on GitHub
ep:CUDA feature request
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.