onnxruntime/tools/ci_build/github/azure-pipelines/win-qnn-arm64-ci-pipeline.yml
Changming Sun df11c85955
Download protoc.exe from nuget when cross-compiling (#15395)
### Description
1. The protoc package on nuget.org contains binaries for
Windows_x86/Windows_x64/Linux_x86/Linux_x64/MacOS_x64, which can cover
most use cases. Though it doesn't have binaries for AMR64, they are only
needed when we cross-compile for Intel CPUs on ARM CPUs. It is rare.
When you have such a need, you always can build protoc from source by
yourself and pass it to build.py as "--path_to_protoc_exe". Or if you
have security concerns that you don't want to use prebuilt binaries from
outside, you can do the same thing.

2. Remove GoogleTestAdapter related thing. That part of code is out of
maintain.

### Motivation and Context
As a follow-up of PR #15190.
2023-04-06 17:06:59 -07:00

113 lines
4.2 KiB
YAML

parameters:
- name: QnnSdk
displayName: QNN SDK version
type: string
default: qnn-v2.8.0.230223123141_52150_win
values:
- qnn-v2.6.0.221227161714_42395_win
- qnn-v2.8.0.230223123141_52150_win
jobs:
- job: 'build'
pool: 'Onnxruntime-QNNEP-Windows-2022-ARM64-CPU'
variables:
MsbuildArguments: '-detailedsummary -maxcpucount -consoleloggerparameters:PerformanceSummary'
OnnxRuntimeBuildDirectory: '$(Build.BinariesDirectory)'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
buildArch: arm64
setVcvars: true
BuildConfig: 'RelWithDebInfo'
ALLOW_RELEASED_ONNX_OPSET_ONLY: '1'
QNN_SDK_ROOT: 'C:\data\qnnsdk\${{parameters.QnnSdk}}'
timeoutInMinutes: 240
workspace:
clean: all
steps:
- script: |
MKDIR $(Agent.ToolsDirectory)\Python\3.11.0\arm64
XCOPY /s /y /h /e /c /q "C:\Python\Python311\*.*" $(Agent.ToolsDirectory)\Python\3.11.0\arm64\
COPY NUL $(Agent.ToolsDirectory)\Python\3.11.0\arm64.complete
DIR $(Agent.ToolsDirectory)\Python
DIR $(Agent.ToolsDirectory)\Python\3.11.0
DIR $(Agent.ToolsDirectory)\Python\3.11.0\arm64
displayName: Copy python 3.11.0 version to agent tools directory
- script: |
DIR C:\data\qnnsdk
displayName: Check available QNN SDKs
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
addToPath: true
architecture: $(buildArch)
- task: NuGetToolInstaller@1
inputs:
versionSpec: 6.4.x
- task: PythonScript@0
displayName: 'Generate cmake config'
inputs:
scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\build.py'
arguments: '--arm64 --config $(BuildConfig) --build_dir $(Build.BinariesDirectory) --update --cmake_generator "Visual Studio 16 2019" --use_qnn --qnn_home $(QNN_SDK_ROOT) --parallel'
workingDirectory: '$(Build.BinariesDirectory)'
- task: VSBuild@1
displayName: 'Build'
inputs:
solution: '$(Build.BinariesDirectory)\$(BuildConfig)\onnxruntime.sln'
platform: 'arm64'
configuration: $(BuildConfig)
msbuildArgs: $(MsbuildArguments)
msbuildArchitecture: $(buildArch)
maximumCpuCount: true
logProjectEvents: false
workingFolder: '$(Build.BinariesDirectory)\$(BuildConfig)'
createLogFile: true
- powershell: |
python $(Build.SourcesDirectory)\tools\ci_build\build.py --arm64 --config $(BuildConfig) --build_dir $(Build.BinariesDirectory) --skip_submodule_sync --test --cmake_generator "Visual Studio 16 2019" --enable_onnx_tests
workingDirectory: '$(Build.BinariesDirectory)\$(BuildConfig)\$(BuildConfig)'
displayName: 'Run unit tests'
enabled: false
- script: |
.\$(BuildConfig)\onnx_test_runner -j 1 -c 1 -v -e qnn -i "backend_path|$(QNN_SDK_ROOT)\target\aarch64-windows-msvc\lib\QnnCpu.dll" $(Build.SourcesDirectory)\cmake\external\onnx\onnx\backend\test\data\node
workingDirectory: '$(Build.BinariesDirectory)\$(BuildConfig)'
displayName: 'Run ONNX Tests'
- script: |
.\$(BuildConfig)\onnx_test_runner -j 1 -c 1 -v -e qnn -i "backend_path|$(QNN_SDK_ROOT)\target\aarch64-windows-msvc\lib\QnnCpu.dll" C:\data\float32_models
workingDirectory: '$(Build.BinariesDirectory)\$(BuildConfig)'
displayName: 'Run float32 model tests'
- script: |
.\$(BuildConfig)\onnx_test_runner -j 1 -c 1 -v -e qnn -i "backend_path|$(QNN_SDK_ROOT)\target\aarch64-windows-msvc\lib\QnnHtp.dll" C:\data\qdq_models
workingDirectory: '$(Build.BinariesDirectory)\$(BuildConfig)'
displayName: 'Run QDQ model tests'
enabled: false
- task: CopyFiles@2
displayName: 'Create Artifact'
inputs:
SourceFolder: '$(Build.BinariesDirectory)\$(BuildConfig)\$(BuildConfig)'
Contents: |
*.exe
*.dll
*.pdb
!Qnn*.dll
TargetFolder: '$(Build.ArtifactStagingDirectory)'
CleanTargetFolder: true
OverWrite: true
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'internal_release'
publishLocation: 'Container'
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))