From 23f39123347ddd085c6ff2155f4853cf3a80e4c6 Mon Sep 17 00:00:00 2001 From: George Wu Date: Tue, 27 Aug 2024 15:07:30 -0700 Subject: [PATCH] support both qnn x64 and arm64ec stages in py packaging pipeline (#21880) both arm64ec and x64 packages are needed. x64 is needed for offline context binary generation and arm64ec is needed for interop with python packages that don't have prebuilt arm64 packages and only have x64. --- .../azure-pipelines/py-packaging-pipeline.yml | 6 ++++++ .../templates/py-packaging-stage.yml | 19 +++++++++++++++++-- .../templates/py-win-x64-qnn.yml | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/tools/ci_build/github/azure-pipelines/py-packaging-pipeline.yml b/tools/ci_build/github/azure-pipelines/py-packaging-pipeline.yml index c7a1b595a6..2b970688c5 100644 --- a/tools/ci_build/github/azure-pipelines/py-packaging-pipeline.yml +++ b/tools/ci_build/github/azure-pipelines/py-packaging-pipeline.yml @@ -34,6 +34,11 @@ parameters: type: boolean default: true +- name: enable_windows_arm64ec_qnn + displayName: 'Whether Windows ARM64EC package with QNN EP is built.' + type: boolean + default: true + - name: enable_windows_x64_qnn displayName: 'Whether Windows x86_64 package with QNN EP is built.' type: boolean @@ -73,6 +78,7 @@ stages: enable_mac_cpu: ${{ parameters.enable_mac_cpu }} enable_linux_arm: ${{ parameters.enable_linux_arm }} enable_windows_arm64_qnn: ${{ parameters.enable_windows_arm64_qnn }} + enable_windows_arm64ec_qnn: ${{ parameters.enable_windows_arm64ec_qnn }} enable_windows_x64_qnn: ${{ parameters.enable_windows_x64_qnn }} build_py_parameters: ${{ parameters.build_py_parameters }} cmake_build_type: ${{ parameters.cmake_build_type }} diff --git a/tools/ci_build/github/azure-pipelines/templates/py-packaging-stage.yml b/tools/ci_build/github/azure-pipelines/templates/py-packaging-stage.yml index 1043722330..86ae1a80bd 100644 --- a/tools/ci_build/github/azure-pipelines/templates/py-packaging-stage.yml +++ b/tools/ci_build/github/azure-pipelines/templates/py-packaging-stage.yml @@ -40,6 +40,11 @@ parameters: type: boolean default: true +- name: enable_windows_arm64ec_qnn + displayName: 'Whether Windows ARM64EC package with QNN EP is built.' + type: boolean + default: true + - name: enable_windows_x64_qnn displayName: 'Whether Windows x86_64 package with QNN EP is built.' type: boolean @@ -512,8 +517,8 @@ stages: PYTHON_VERSION: '3.11' BUILD_PY_PARAMETERS: ${{ parameters.build_py_parameters }} - - ${{ if eq(parameters.enable_windows_x64_qnn, true) }}: - - stage: Python_Packaging_Windows_x64_QNN + - ${{ if eq(parameters.enable_windows_arm64ec_qnn, true) }}: + - stage: Python_Packaging_Windows_arm64ec_QNN dependsOn: [] jobs: - template: py-win-arm64ec-qnn.yml @@ -521,3 +526,13 @@ stages: MACHINE_POOL: 'Onnxruntime-QNNEP-Windows-2022-CPU' QNN_SDK: ${{ parameters.qnn_sdk_version }} BUILD_PY_PARAMETERS: ${{ parameters.build_py_parameters }} + + - ${{ if eq(parameters.enable_windows_x64_qnn, true) }}: + - stage: Python_Packaging_Windows_x64_QNN + dependsOn: [] + jobs: + - template: py-win-x64-qnn.yml + parameters: + MACHINE_POOL: 'Onnxruntime-QNNEP-Windows-2022-CPU' + QNN_SDK: ${{ parameters.qnn_sdk_version }} + BUILD_PY_PARAMETERS: ${{ parameters.build_py_parameters }} diff --git a/tools/ci_build/github/azure-pipelines/templates/py-win-x64-qnn.yml b/tools/ci_build/github/azure-pipelines/templates/py-win-x64-qnn.yml index 5cf03a7cdd..c8431d4fa3 100644 --- a/tools/ci_build/github/azure-pipelines/templates/py-win-x64-qnn.yml +++ b/tools/ci_build/github/azure-pipelines/templates/py-win-x64-qnn.yml @@ -135,7 +135,7 @@ jobs: - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: ONNXRuntime python wheel' inputs: - ArtifactName: onnxruntime_qnn + ArtifactName: onnxruntime_qnn_x64 - script: | 7z x *.whl