Skip to content

Conversation

adrianlizarraga
Copy link
Contributor

@adrianlizarraga adrianlizarraga commented Apr 25, 2025

Description

  • Introduces USE_<EP>_PROVIDER_INTERFACE pre-processor macros that indicate when an EP interface is enabled but the full EP is not being compiled.
    • Previously, the CMake configuration turned on USE_<EP> for both use cases. This prevented tests from determining whether the full EP or only the interface was available, which caused test failures. It also turned on all EP code paths in core ORT code at the same time, which caused compilation and logic errors.
  • Adds the new NV EP to list of EPs whose interface is enabled with ORT is built with --enable_generic_interface
  • Updates the Windows Arm64 QNN CI Pipeline to actually use the --enable_generic_interface flag.
    • Previously, It was not actually being passed to the build command, so no unit tests were being run with the flag enabled.
  • Adds unit tests to check that adding an EP to the session options fails when only the generic interface (but not the full EP) is built.

CI Pipelines that use --enable_generic_interface

  • Windows ARM64 QNN CI Pipeline:
    • Builds ORT with --use_qnn --enable_generic_interface and runs all normal QNN EP unit tests.
    • Builds ORT with --use_qnn --enable_generic_interface and runs new unit tests that try to add the following EPs to the session options (expect failure): OpenVINO, CUDA, NV, TensorRT, VitisAI
  • Build and Test OpenVINO EP (AlamLinux8, Py3.12) / build_test_pipeline:
    • Builds ORT with --use_openvino --enable_generic_interface and runs all normal OpenVINO EP unit tests.
    • Builds ORT with --use_openvino --enable_generic_interface and runs new unit tests that try to add the following EPs to the session options (expect failure): QNN, CUDA, NV, TensorRT, VitisAI
  • windows_x64_release_ep_generic_interface
    • Builds ORT with --enable_generic_interface and now runs CPU EP unit tests (didn't previously).

Motivation and Context

Fix use of --enable_generic_interface and make sure tests actually run.

@adrianlizarraga adrianlizarraga changed the title [QNN EP] Fix use of --use_generic_interface in QNN pipeline [QNN EP] Fix use of --enable_generic_interface in QNN pipeline Apr 25, 2025
@adrianlizarraga adrianlizarraga changed the title [QNN EP] Fix use of --enable_generic_interface in QNN pipeline [QNN EP] Rework --enable_generic_interface and add tests Apr 29, 2025
@adrianlizarraga adrianlizarraga marked this pull request as ready for review April 29, 2025 23:14
@adrianlizarraga adrianlizarraga requested a review from snnn April 29, 2025 23:14
@adrianlizarraga
Copy link
Contributor Author

Hi @snnn, Could you please take a look at this PR? I believe it addresses your concerns in this other PR: #24368

@adrianlizarraga adrianlizarraga changed the title [QNN EP] Rework --enable_generic_interface and add tests Rework --enable_generic_interface and add tests Apr 29, 2025
@adrianlizarraga adrianlizarraga merged commit d5ccbb2 into main Apr 30, 2025
92 of 98 checks passed
@adrianlizarraga adrianlizarraga deleted the adrianl/fix-qnn-use-of-generic-interface-flag branch April 30, 2025 19:16
vraspar pushed a commit that referenced this pull request May 1, 2025
- Introduces `USE_<EP>_PROVIDER_INTERFACE` pre-processor macros that
indicate when an EP interface is enabled but the full EP is not being
compiled.
- Previously, the CMake configuration turned on `USE_<EP>` for both use
cases. This prevented tests from determining whether the full EP or only
the interface was available, which caused test failures. It also turned
on all EP code paths in core ORT code at the same time, which caused
compilation and logic errors.
- Adds the new NV EP to list of EPs whose interface is enabled with ORT
is built with `--enable_generic_interface`
- Updates the Windows Arm64 QNN CI Pipeline to actually use the
`--enable_generic_interface` flag.
- Previously, It was not actually being passed to the build command, so
no unit tests were being run with the flag enabled.
- Adds unit tests to check that adding an EP to the session options
fails when only the generic interface (but not the full EP) is built.
- Windows ARM64 QNN CI Pipeline:
- Builds ORT with `--use_qnn --enable_generic_interface` and runs all
normal QNN EP unit tests.
- Builds ORT with `--use_qnn --enable_generic_interface` and runs new
unit tests that try to add the following EPs to the session options
(expect failure): OpenVINO, CUDA, NV, TensorRT, VitisAI
- Build and Test OpenVINO EP (AlamLinux8, Py3.12) / build_test_pipeline:
- Builds ORT with `--use_openvino --enable_generic_interface` and runs
all normal OpenVINO EP unit tests.
- Builds ORT with `--use_openvino --enable_generic_interface` and runs
new unit tests that try to add the following EPs to the session options
(expect failure): QNN, CUDA, NV, TensorRT, VitisAI
- windows_x64_release_ep_generic_interface
- Builds ORT with `--enable_generic_interface` and now runs CPU EP unit
tests (didn't previously).
Fix use of `--enable_generic_interface` and make sure tests actually
run.
jywu-msft pushed a commit that referenced this pull request May 1, 2025
### Description

Cherry pick the following into
[rel-1.22.0](https://github.com/microsoft/onnxruntime/tree/rel-1.22.0)

- (#24491)
- (#24509)
- (#24564)
- (#24574)
- (#24582)
- (#24584)
- (#24568)
- (#24587)
- (#24563)
- (#24592)
- (#24526)
- (#24552)
- (#24588)
- (#24605)
- (#24606)

---------

Co-authored-by: Jing Fang <[email protected]>
Co-authored-by: Tianlei Wu <[email protected]>
Co-authored-by: Baiju Meswani <[email protected]>
Co-authored-by: Scott McKay <[email protected]>
Co-authored-by: Mark Schofield <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Edward Chen <[email protected]>
Co-authored-by: Ashwath Shankarnarayan <[email protected]>
Co-authored-by: saurabh <[email protected]>
Co-authored-by: Adrian Lizarraga <[email protected]>
Co-authored-by: Hector Li <[email protected]>
ankitm3k pushed a commit to intel/onnxruntime that referenced this pull request May 12, 2025
### Description
- Introduces `USE_<EP>_PROVIDER_INTERFACE` pre-processor macros that
indicate when an EP interface is enabled but the full EP is not being
compiled.
- Previously, the CMake configuration turned on `USE_<EP>` for both use
cases. This prevented tests from determining whether the full EP or only
the interface was available, which caused test failures. It also turned
on all EP code paths in core ORT code at the same time, which caused
compilation and logic errors.
- Adds the new NV EP to list of EPs whose interface is enabled with ORT
is built with `--enable_generic_interface`
- Updates the Windows Arm64 QNN CI Pipeline to actually use the
`--enable_generic_interface` flag.
- Previously, It was not actually being passed to the build command, so
no unit tests were being run with the flag enabled.
- Adds unit tests to check that adding an EP to the session options
fails when only the generic interface (but not the full EP) is built.

#### CI Pipelines that use --enable_generic_interface
- Windows ARM64 QNN CI Pipeline:
- Builds ORT with `--use_qnn --enable_generic_interface` and runs all
normal QNN EP unit tests.
- Builds ORT with `--use_qnn --enable_generic_interface` and runs new
unit tests that try to add the following EPs to the session options
(expect failure): OpenVINO, CUDA, NV, TensorRT, VitisAI
- Build and Test OpenVINO EP (AlamLinux8, Py3.12) / build_test_pipeline:
- Builds ORT with `--use_openvino --enable_generic_interface` and runs
all normal OpenVINO EP unit tests.
- Builds ORT with `--use_openvino --enable_generic_interface` and runs
new unit tests that try to add the following EPs to the session options
(expect failure): QNN, CUDA, NV, TensorRT, VitisAI
- windows_x64_release_ep_generic_interface
- Builds ORT with `--enable_generic_interface` and now runs CPU EP unit
tests (didn't previously).

### Motivation and Context
Fix use of `--enable_generic_interface` and make sure tests actually
run.
@snnn
Copy link
Member

snnn commented Sep 5, 2025

This PR has been included in the rel-1.22.0 branch. Removing the release:1.22.0 label.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants