mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-30 20:18:08 +00:00
Enable Qnn nuget nightly (#20662)
### Description Enable Qnn nuget nightly
This commit is contained in:
parent
c131ea89e1
commit
0e11d0c4f8
5 changed files with 343 additions and 256 deletions
|
|
@ -876,9 +876,9 @@ if (MSVC)
|
|||
"$<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:/wd26451>")
|
||||
target_compile_options(onnxruntime_test_all PRIVATE "$<$<COMPILE_LANGUAGE:CUDA>:SHELL:--compiler-options /wd4244>"
|
||||
"$<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:/wd4244>")
|
||||
# Avoid the error for Win arm64 Release build. error C1128: number of sections exceeded object file format limit: compile with /bigobj
|
||||
# Avoid the error for Win arm64 build. error C1128: number of sections exceeded object file format limit: compile with /bigobj
|
||||
string(TOLOWER ${onnxruntime_target_platform} GEN_PLATFORM)
|
||||
if (${GEN_PLATFORM} STREQUAL "arm64" AND "${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
||||
if (${GEN_PLATFORM} STREQUAL "arm64")
|
||||
target_compile_options(onnxruntime_test_all PRIVATE "/bigobj")
|
||||
endif()
|
||||
else()
|
||||
|
|
|
|||
|
|
@ -68,6 +68,11 @@ parameters:
|
|||
- 11.8
|
||||
- 12.2
|
||||
|
||||
- name: QnnSdk
|
||||
displayName: QNN SDK Version
|
||||
type: string
|
||||
default: 2.21.0.240401
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: onnxruntime-inference-examples # The name used to reference this repository in the checkout step
|
||||
|
|
@ -768,4 +773,95 @@ stages:
|
|||
targetPath: '$(Build.ArtifactStagingDirectory)'
|
||||
- template: templates/component-governance-component-detection-steps.yml
|
||||
parameters:
|
||||
condition: 'succeeded'
|
||||
condition: 'succeeded'
|
||||
|
||||
- template: templates/qnn-ep-win.yml
|
||||
parameters:
|
||||
qnn_ep_build_pool_name: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
QnnSdk: ${{ parameters.QnnSdk }}
|
||||
IsReleaseBuild: ${{ parameters.IsReleaseBuild }}
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
ArtifactName: 'drop-nuget-qnn-x64'
|
||||
StageName: 'OnnxRuntime_QNN_Nuget_Win_x64'
|
||||
build_config: 'RelWithDebInfo'
|
||||
- template: templates/qnn-ep-win.yml
|
||||
parameters:
|
||||
qnn_ep_build_pool_name: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
QnnSdk: ${{ parameters.QnnSdk }}
|
||||
IsReleaseBuild: ${{ parameters.IsReleaseBuild }}
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
ArtifactName: 'drop-nuget-qnn-arm64'
|
||||
buildParameter: '--arm64'
|
||||
buildPlatform: 'ARM64'
|
||||
buildArch: 'ARM64'
|
||||
StageName: 'OnnxRuntime_QNN_Nuget_Win_Arm64'
|
||||
build_config: 'RelWithDebInfo'
|
||||
|
||||
- stage: NuGet_Packaging_QNN
|
||||
pool: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
dependsOn:
|
||||
- OnnxRuntime_QNN_Nuget_Win_x64
|
||||
- OnnxRuntime_QNN_Nuget_Win_Arm64
|
||||
condition: succeeded()
|
||||
jobs:
|
||||
- job:
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- task: DownloadPipelineArtifact@0
|
||||
displayName: 'Download Pipeline Artifact - QNN NuGet x64'
|
||||
inputs:
|
||||
artifactName: 'drop-nuget-qnn-x64'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact-x64'
|
||||
|
||||
- task: DownloadPipelineArtifact@0
|
||||
displayName: 'Download Pipeline Artifact - QNN NuGet arm64'
|
||||
inputs:
|
||||
artifactName: 'drop-nuget-qnn-arm64'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact-arm64'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Bundle NuGet'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
|
||||
$x64_nupkgs = (Get-ChildItem $(Build.BinariesDirectory)/nuget-artifact-x64 -Filter Microsoft.ML.OnnxRuntime.QNN*.nupkg -Recurse)
|
||||
$nuget_package_name = $x64_nupkgs[0].Name
|
||||
$x64_nuget_package = $x64_nupkgs[0].FullName
|
||||
|
||||
$nupkg_unzipped_directory = [System.IO.Path]::Combine($Env:BUILD_ARTIFACTSTAGINGDIRECTORY, 'nuget_unzip_merged', [System.IO.Path]::GetFileNameWithoutExtension($nuget_package_name))
|
||||
|
||||
$x64_unzip_cmd = "7z.exe x $x64_nuget_package -y -o$nupkg_unzipped_directory"
|
||||
Invoke-Expression -Command $x64_unzip_cmd
|
||||
|
||||
$arm64_nupkgs = (Get-ChildItem $(Build.BinariesDirectory)/nuget-artifact-arm64 -Filter Microsoft.ML.OnnxRuntime.QNN*.nupkg -Recurse)
|
||||
$arm64_nuget_package = $arm64_nupkgs[0].FullName
|
||||
|
||||
$arm64_unzip_cmd = "7z.exe x $arm64_nuget_package -y -o$nupkg_unzipped_directory"
|
||||
Invoke-Expression -Command $arm64_unzip_cmd
|
||||
|
||||
$merged_nuget_path = [System.IO.Path]::Combine($Env:BUILD_ARTIFACTSTAGINGDIRECTORY, 'nuget-artifact-merged')
|
||||
if (!(Test-Path $merged_nuget_path)) {
|
||||
New-Item -Path $merged_nuget_path -ItemType Directory
|
||||
}
|
||||
|
||||
$merged_zip = [System.IO.Path]::Combine($merged_nuget_path, 'qnn_nuget.zip')
|
||||
$zip_cmd = "7z.exe a -r $merged_zip $nupkg_unzipped_directory/*"
|
||||
Invoke-Expression -Command $zip_cmd
|
||||
|
||||
$merged_nuget = [System.IO.Path]::Combine($merged_nuget_path, $nuget_package_name)
|
||||
move $merged_zip $merged_nuget
|
||||
workingDirectory: $(Build.BinariesDirectory)
|
||||
|
||||
- template: templates/esrp_nuget.yml
|
||||
parameters:
|
||||
DisplayName: 'ESRP - sign NuGet package'
|
||||
FolderPath: '$(Build.ArtifactStagingDirectory)/nuget-artifact-merged'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline NuGet Artifact'
|
||||
inputs:
|
||||
artifactName: 'drop-signed-nuget-qnn'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)/nuget-artifact-merged'
|
||||
|
|
@ -101,6 +101,11 @@ stages:
|
|||
artifact: 'drop-signed-nuget-ROCm'
|
||||
- script: move "$(Pipeline.Workspace)\build\drop-signed-nuget-ROCm\*" $(Build.BinariesDirectory)\nuget-artifact\final-package
|
||||
|
||||
- download: build
|
||||
displayName: 'Download Pipeline Artifact - Signed NuGet Qnn Package'
|
||||
artifact: 'drop-signed-nuget-qnn'
|
||||
- script: move "$(Pipeline.Workspace)\build\drop-signed-nuget-qnn\*" $(Build.BinariesDirectory)\nuget-artifact\final-package
|
||||
|
||||
- script: |
|
||||
dir $(Build.BinariesDirectory)\nuget-artifact\final-package
|
||||
cd $(Build.BinariesDirectory)\nuget-artifact\final-package
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ parameters:
|
|||
- name: build_config
|
||||
displayName: Build Configuration
|
||||
type: string
|
||||
default: 'Release'
|
||||
default: 'RelWithDebInfo'
|
||||
|
||||
- name: IsReleaseBuild
|
||||
displayName: Is a release build? Set it to true if you are doing an Onnx Runtime release.
|
||||
|
|
@ -19,266 +19,97 @@ parameters:
|
|||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: runTests
|
||||
displayName: Run ONNX Runtime unit tests?
|
||||
type: boolean
|
||||
default: true
|
||||
stages:
|
||||
|
||||
jobs:
|
||||
- template: templates/qnn-ep-win.yml
|
||||
parameters:
|
||||
qnn_ep_build_pool_name: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
QnnSdk: ${{ parameters.QnnSdk }}
|
||||
IsReleaseBuild: ${{ parameters.IsReleaseBuild }}
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
ArtifactName: 'drop-nuget-qnn-x64'
|
||||
StageName: 'OnnxRuntime_QNN_Nuget_Win_x64'
|
||||
build_config: ${{ parameters.build_config }}
|
||||
|
||||
- job: OnnxRuntime_QNNNuget_Win_x64
|
||||
timeoutInMinutes: 120
|
||||
- template: templates/qnn-ep-win.yml
|
||||
parameters:
|
||||
qnn_ep_build_pool_name: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
QnnSdk: ${{ parameters.QnnSdk }}
|
||||
IsReleaseBuild: ${{ parameters.IsReleaseBuild }}
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
ArtifactName: 'drop-nuget-qnn-arm64'
|
||||
buildParameter: '--arm64'
|
||||
buildPlatform: 'ARM64'
|
||||
buildArch: 'ARM64'
|
||||
StageName: 'OnnxRuntime_QNN_Nuget_Win_Arm64'
|
||||
build_config: ${{ parameters.build_config }}
|
||||
|
||||
pool: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
variables:
|
||||
MsbuildArguments: '-detailedsummary -maxcpucount -consoleloggerparameters:PerformanceSummary'
|
||||
OnnxRuntimeBuildDirectory: '$(Build.BinariesDirectory)'
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
||||
buildArch: x64
|
||||
setVcvars: true
|
||||
ALLOW_RELEASED_ONNX_OPSET_ONLY: '1'
|
||||
commonBuildArgs: '--compile_no_warning_as_error --build_dir $(Build.BinariesDirectory)\Windows --skip_submodule_sync --build_shared_lib --cmake_generator "Visual Studio 17 2022" --config ${{ parameters.build_config }} --parallel --use_binskim_compliant_compile_flags '
|
||||
|
||||
steps:
|
||||
- template: templates/set-version-number-variables-step.yml
|
||||
|
||||
- task: NuGetAuthenticate@0
|
||||
inputs:
|
||||
forceReinstallCredentialProvider: true
|
||||
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.8'
|
||||
addToPath: true
|
||||
|
||||
- template: templates/jobs/download_win_qnn_sdk.yml
|
||||
parameters:
|
||||
QnnSDKVersion: ${{ parameters.QnnSdk }}
|
||||
|
||||
- task: PythonScript@0
|
||||
displayName: 'Build onnxruntime for x64'
|
||||
inputs:
|
||||
scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\build.py'
|
||||
arguments: '--skip_tests --use_qnn --qnn_home $(QnnSDKRootDir) $(commonBuildArgs)'
|
||||
|
||||
- task: PythonScript@0
|
||||
displayName: 'Run unit tests'
|
||||
condition: and(succeeded(), eq('${{ parameters.runTests}}', true))
|
||||
inputs:
|
||||
scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\build.py'
|
||||
arguments: '--test --use_qnn --qnn_home $(QnnSDKRootDir) $(commonBuildArgs)'
|
||||
|
||||
- template: templates/win-esrp-dll.yml
|
||||
parameters:
|
||||
FolderPath: '$(Build.BinariesDirectory)\Windows\${{ parameters.build_config }}\${{ parameters.build_config }}'
|
||||
DisplayName: 'ESRP - Sign dlls'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
Pattern: 'onnxruntime.dll'
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Generating nuspec for the native Nuget package x64'
|
||||
inputs:
|
||||
script: |
|
||||
python "$(Build.SourcesDirectory)\tools\nuget\generate_nuspec_for_native_nuget.py" --package_version $(OnnxRuntimeVersion) --package_name Microsoft.ML.OnnxRuntime.QNN --target_architecture x64 --build_config ${{ parameters.build_config }} --native_build_path=$(Build.BinariesDirectory)\Windows\${{ parameters.build_config }}\${{ parameters.build_config }} --packages_path $(Build.BinariesDirectory)\Windows\packages --ort_build_path $(Build.BinariesDirectory)\Windows --sources_path $(Build.SourcesDirectory) --commit_id $(OnnxRuntimeGitCommitHash) --is_release_build ${{ parameters.IsReleaseBuild }} --sdk_info qnn-v${{ parameters.QnnSdk }}
|
||||
cd $(Build.BinariesDirectory)\Windows\${{ parameters.build_config }}\${{ parameters.build_config }}
|
||||
nuget pack NativeNuget.nuspec
|
||||
mkdir $(Build.ArtifactStagingDirectory)\x64
|
||||
copy $(Build.BinariesDirectory)\Windows\${{ parameters.build_config }}\${{ parameters.build_config }}\*.nupkg $(Build.ArtifactStagingDirectory)\x64
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline x64 NuGet Artifact'
|
||||
inputs:
|
||||
artifactName: 'drop-winnuget-x64'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)/x64'
|
||||
|
||||
- job: OnnxRuntime_QNNNuget_Win_Arm64
|
||||
timeoutInMinutes: 120
|
||||
|
||||
pool: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
variables:
|
||||
MsbuildArguments: '-detailedsummary -maxcpucount -consoleloggerparameters:PerformanceSummary'
|
||||
OnnxRuntimeBuildDirectory: '$(Build.BinariesDirectory)'
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
||||
buildArch: x64
|
||||
setVcvars: true
|
||||
ALLOW_RELEASED_ONNX_OPSET_ONLY: '1'
|
||||
|
||||
steps:
|
||||
- template: templates/set-version-number-variables-step.yml
|
||||
|
||||
- task: NuGetAuthenticate@0
|
||||
inputs:
|
||||
forceReinstallCredentialProvider: true
|
||||
|
||||
- template: templates/jobs/download_win_qnn_sdk.yml
|
||||
parameters:
|
||||
QnnSDKVersion: ${{ parameters.QnnSdk }}
|
||||
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.8'
|
||||
addToPath: true
|
||||
|
||||
- task: PythonScript@0
|
||||
displayName: 'Generate CMake Configuration for arm64'
|
||||
inputs:
|
||||
scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\build.py'
|
||||
arguments: '--update --arm64 --build_dir $(Build.BinariesDirectory)\Win_arm64 --skip_submodule_sync --skip_tests --build_shared_lib --cmake_generator "Visual Studio 17 2022" --config ${{ parameters.build_config }} --use_qnn --qnn_home $(QnnSDKRootDir) --parallel'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnxruntime arm64'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\onnxruntime.vcxproj'
|
||||
platform: ARM64
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ARM64
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnx_test_runner arm64'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\onnx_test_runner.vcxproj'
|
||||
platform: ARM64
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ARM64
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnxruntime_perf_test arm64'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\onnxruntime_perf_test.vcxproj'
|
||||
platform: ARM64
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ARM64
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnxruntime_test_all arm64 (to copy Qnn libs)'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\onnxruntime_test_all.vcxproj'
|
||||
platform: ARM64
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ARM64
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
- template: templates/win-esrp-dll.yml
|
||||
parameters:
|
||||
FolderPath: '$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\${{ parameters.build_config }}'
|
||||
DisplayName: 'ESRP - Sign dlls'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
Pattern: 'onnxruntime.dll'
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Generating nuspec for the native Nuget package arm64'
|
||||
inputs:
|
||||
script: |
|
||||
python "$(Build.SourcesDirectory)\tools\nuget\generate_nuspec_for_native_nuget.py" --package_version $(OnnxRuntimeVersion) --package_name Microsoft.ML.OnnxRuntime.QNN --target_architecture arm64 --build_config ${{ parameters.build_config }} --native_build_path=$(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\${{ parameters.build_config }} --packages_path $(Build.BinariesDirectory)\Win_arm64\packages --ort_build_path $(Build.BinariesDirectory)\Win_arm64 --sources_path $(Build.SourcesDirectory) --commit_id $(OnnxRuntimeGitCommitHash) --is_release_build ${{ parameters.IsReleaseBuild }} --sdk_info qnn-v${{ parameters.QnnSdk }}
|
||||
cd $(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\${{ parameters.build_config }}
|
||||
nuget pack NativeNuget.nuspec
|
||||
mkdir $(Build.ArtifactStagingDirectory)\arm64
|
||||
copy $(Build.BinariesDirectory)\Win_arm64\${{ parameters.build_config }}\${{ parameters.build_config }}\*.nupkg $(Build.ArtifactStagingDirectory)\arm64
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline arm64 NuGet Artifact'
|
||||
inputs:
|
||||
artifactName: 'drop-winnuget-arm64'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)/arm64'
|
||||
|
||||
- job: NuGet_Packaging_QNN
|
||||
- stage: NuGet_Packaging_QNN
|
||||
pool: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
dependsOn:
|
||||
- OnnxRuntime_QNN_Nuget_Win_x64
|
||||
- OnnxRuntime_QNN_Nuget_Win_Arm64
|
||||
condition: succeeded()
|
||||
jobs:
|
||||
- job:
|
||||
workspace:
|
||||
clean: all
|
||||
pool: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
dependsOn:
|
||||
- OnnxRuntime_QNNNuget_Win_x64
|
||||
- OnnxRuntime_QNNNuget_Win_Arm64
|
||||
condition: succeeded()
|
||||
steps:
|
||||
- task: DownloadPipelineArtifact@0
|
||||
displayName: 'Download Pipeline Artifact - QNN NuGet x64'
|
||||
inputs:
|
||||
artifactName: 'drop-nuget-qnn-x64'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact-x64'
|
||||
|
||||
- task: DownloadPipelineArtifact@0
|
||||
displayName: 'Download Pipeline Artifact - QNN NuGet arm64'
|
||||
inputs:
|
||||
artifactName: 'drop-nuget-qnn-arm64'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact-arm64'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Bundle NuGet'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
|
||||
$x64_nupkgs = (Get-ChildItem $(Build.BinariesDirectory)/nuget-artifact-x64 -Filter Microsoft.ML.OnnxRuntime.QNN*.nupkg -Recurse)
|
||||
$nuget_package_name = $x64_nupkgs[0].Name
|
||||
$x64_nuget_package = $x64_nupkgs[0].FullName
|
||||
|
||||
- task: DownloadPipelineArtifact@0
|
||||
displayName: 'Download Pipeline Artifact - QNN NuGet x64'
|
||||
inputs:
|
||||
artifactName: 'drop-winnuget-x64'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact-x64'
|
||||
$nupkg_unzipped_directory = [System.IO.Path]::Combine($Env:BUILD_ARTIFACTSTAGINGDIRECTORY, 'nuget_unzip_merged', [System.IO.Path]::GetFileNameWithoutExtension($nuget_package_name))
|
||||
|
||||
$x64_unzip_cmd = "7z.exe x $x64_nuget_package -y -o$nupkg_unzipped_directory"
|
||||
Invoke-Expression -Command $x64_unzip_cmd
|
||||
|
||||
$arm64_nupkgs = (Get-ChildItem $(Build.BinariesDirectory)/nuget-artifact-arm64 -Filter Microsoft.ML.OnnxRuntime.QNN*.nupkg -Recurse)
|
||||
$arm64_nuget_package = $arm64_nupkgs[0].FullName
|
||||
|
||||
$arm64_unzip_cmd = "7z.exe x $arm64_nuget_package -y -o$nupkg_unzipped_directory"
|
||||
Invoke-Expression -Command $arm64_unzip_cmd
|
||||
|
||||
$merged_nuget_path = [System.IO.Path]::Combine($Env:BUILD_ARTIFACTSTAGINGDIRECTORY, 'nuget-artifact-merged')
|
||||
if (!(Test-Path $merged_nuget_path)) {
|
||||
New-Item -Path $merged_nuget_path -ItemType Directory
|
||||
}
|
||||
|
||||
$merged_zip = [System.IO.Path]::Combine($merged_nuget_path, 'qnn_nuget.zip')
|
||||
$zip_cmd = "7z.exe a -r $merged_zip $nupkg_unzipped_directory/*"
|
||||
Invoke-Expression -Command $zip_cmd
|
||||
|
||||
- task: DownloadPipelineArtifact@0
|
||||
displayName: 'Download Pipeline Artifact - QNN NuGet arm64'
|
||||
inputs:
|
||||
artifactName: 'drop-winnuget-arm64'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact-arm64'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Bundle NuGet'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
Add-Type -AssemblyName "System.IO.Compression.FileSystem"
|
||||
$merged_nuget = [System.IO.Path]::Combine($merged_nuget_path, $nuget_package_name)
|
||||
move $merged_zip $merged_nuget
|
||||
workingDirectory: $(Build.BinariesDirectory)
|
||||
|
||||
$nupkgs = (Get-ChildItem $(Build.BinariesDirectory)/nuget-artifact-x64 -Filter Microsoft.ML.OnnxRuntime.QNN*.nupkg -Recurse)
|
||||
$x64_nuget_package_name = $nupkgs[0].Name
|
||||
$x64_nuget_package = $nupkgs[0].FullName
|
||||
$x64_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName
|
||||
$x64_nupkg_unzipped_directory = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($x64_nuget_package))
|
||||
[System.IO.Compression.ZipFile]::ExtractToDirectory($x64_nuget_package, $x64_nupkg_unzipped_directory)
|
||||
- template: templates/esrp_nuget.yml
|
||||
parameters:
|
||||
DisplayName: 'ESRP - sign NuGet package'
|
||||
FolderPath: '$(Build.ArtifactStagingDirectory)/nuget-artifact-merged'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
|
||||
$nupkgs = (Get-ChildItem $(Build.BinariesDirectory)/nuget-artifact-arm64 -Filter Microsoft.ML.OnnxRuntime.QNN*.nupkg -Recurse)
|
||||
$arm64_nuget_package = $nupkgs[0].FullName
|
||||
$arm64_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName
|
||||
$arm64_nupkg_unzipped_directory = [System.IO.Path]::Combine($arm64_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($arm64_nuget_package))
|
||||
[System.IO.Compression.ZipFile]::ExtractToDirectory($arm64_nuget_package, $arm64_nupkg_unzipped_directory)
|
||||
|
||||
$x64_runtime_path_old = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-x64', 'native')
|
||||
$x64_runtime_path_new = [System.IO.Path]::Combine($arm64_nupkg_unzipped_directory, 'runtimes', 'win-x64', 'native')
|
||||
|
||||
New-Item -Path $x64_runtime_path_new -ItemType Directory
|
||||
|
||||
Copy-Item ([System.IO.Path]::Combine($x64_runtime_path_old, 'onnxruntime.dll')) $x64_runtime_path_new
|
||||
Copy-Item ([System.IO.Path]::Combine($x64_runtime_path_old, 'onnxruntime.lib')) $x64_runtime_path_new
|
||||
Copy-Item ([System.IO.Path]::Combine($x64_runtime_path_old, 'onnx_test_runner.exe')) $x64_runtime_path_new
|
||||
Copy-Item ([System.IO.Path]::Combine($x64_runtime_path_old, 'onnxruntime_perf_test.exe')) $x64_runtime_path_new
|
||||
Copy-Item ([System.IO.Path]::Combine($x64_runtime_path_old, 'QnnCpu.dll')) $x64_runtime_path_new
|
||||
Copy-Item ([System.IO.Path]::Combine($x64_runtime_path_old, 'QnnHtp.dll')) $x64_runtime_path_new
|
||||
Copy-Item ([System.IO.Path]::Combine($x64_runtime_path_old, 'QnnSaver.dll')) $x64_runtime_path_new
|
||||
|
||||
$merged_nuget_path = [System.IO.Path]::Combine($Env:BUILD_ARTIFACTSTAGINGDIRECTORY, 'merged')
|
||||
if (!(Test-Path $merged_nuget_path)) {
|
||||
New-Item -Path $merged_nuget_path -ItemType Directory
|
||||
}
|
||||
|
||||
$merged_nuget = [System.IO.Path]::Combine($merged_nuget_path, $x64_nuget_package_name)
|
||||
|
||||
$zip_tool_directory = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory_root, 'ziptool')
|
||||
if (!(Test-Path $zip_tool_directory)) {
|
||||
New-Item -Path $zip_tool_directory -ItemType Directory
|
||||
}
|
||||
|
||||
$zip_tool = [System.IO.Path]::Combine($zip_tool_directory, 'zip.exe')
|
||||
|
||||
Invoke-WebRequest http://stahlworks.com/dev/zip.exe -OutFile $zip_tool
|
||||
Start-Process -FilePath $zip_tool -ArgumentList "-r $merged_nuget ." -WorkingDirectory $arm64_nupkg_unzipped_directory -NoNewWindow -Wait
|
||||
workingDirectory: $(Build.BinariesDirectory)
|
||||
|
||||
- template: templates/esrp_nuget.yml
|
||||
parameters:
|
||||
DisplayName: 'ESRP - sign NuGet package'
|
||||
FolderPath: '$(Build.ArtifactStagingDirectory)/merged'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline NuGet Artifact'
|
||||
inputs:
|
||||
artifactName: 'drop-winnuget'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)/merged'
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline NuGet Artifact'
|
||||
inputs:
|
||||
artifactName: 'drop-signed-nuget-qnn'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)/nuget-artifact-merged'
|
||||
|
||||
|
|
|
|||
155
tools/ci_build/github/azure-pipelines/templates/qnn-ep-win.yml
Normal file
155
tools/ci_build/github/azure-pipelines/templates/qnn-ep-win.yml
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
parameters:
|
||||
QnnSdk: '2.21.0.240401'
|
||||
build_config: 'RelWithDebInfo'
|
||||
IsReleaseBuild: false
|
||||
DoEsrp: false
|
||||
qnn_ep_build_pool_name: 'Onnxruntime-QNNEP-Windows-2022-CPU'
|
||||
ArtifactName: 'drop-nuget-qnn'
|
||||
buildParameter: ''
|
||||
OrtNugetPackageId: 'Microsoft.ML.OnnxRuntime.QNN'
|
||||
buildPlatform: 'x64'
|
||||
buildArch: 'x64'
|
||||
StageName: 'OnnxRuntime_QNN_Nuget_Win_x64'
|
||||
|
||||
stages:
|
||||
- stage: ${{ parameters.StageName }}
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- job:
|
||||
timeoutInMinutes: 120
|
||||
|
||||
pool: ${{ parameters.qnn_ep_build_pool_name }}
|
||||
variables:
|
||||
${{ if eq(parameters.buildArch, 'ARM64') }}:
|
||||
targetArchitecture: 'arm64'
|
||||
${{ else }}:
|
||||
targetArchitecture: ${{ parameters.buildArch }}
|
||||
OrtPackageId: ${{ parameters.OrtNugetPackageId }}
|
||||
commonBuildArgs: '--update --compile_no_warning_as_error --build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --cmake_generator "Visual Studio 17 2022" --config ${{ parameters.build_config }} --parallel --use_binskim_compliant_compile_flags ${{ parameters.buildParameter }} '
|
||||
|
||||
steps:
|
||||
- template: set-version-number-variables-step.yml
|
||||
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.8'
|
||||
addToPath: true
|
||||
|
||||
- template: jobs/download_win_qnn_sdk.yml
|
||||
parameters:
|
||||
QnnSDKVersion: ${{ parameters.QnnSdk }}
|
||||
|
||||
- task: PythonScript@0
|
||||
displayName: 'Generate project'
|
||||
inputs:
|
||||
scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\build.py'
|
||||
arguments: '--use_qnn --qnn_home $(QnnSDKRootDir) $(commonBuildArgs)'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnxruntime'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\${{ parameters.build_config }}\onnxruntime.vcxproj'
|
||||
platform: ${{ parameters.buildPlatform }}
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ${{ parameters.buildArch }}
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnx_test_runner'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\${{ parameters.build_config }}\onnx_test_runner.vcxproj'
|
||||
platform: ${{ parameters.buildPlatform }}
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ${{ parameters.buildArch }}
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnxruntime_perf_test'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\${{ parameters.build_config }}\onnxruntime_perf_test.vcxproj'
|
||||
platform: ${{ parameters.buildPlatform }}
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ${{ parameters.buildArch }}
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build onnxruntime_test_all (to copy Qnn libs)'
|
||||
inputs:
|
||||
solution: '$(Build.BinariesDirectory)\${{ parameters.build_config }}\onnxruntime_test_all.vcxproj'
|
||||
platform: ${{ parameters.buildPlatform }}
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArchitecture: ${{ parameters.buildArch }}
|
||||
maximumCpuCount: true
|
||||
logProjectEvents: true
|
||||
workingFolder: '$(Build.BinariesDirectory)\${{ parameters.build_config }}'
|
||||
createLogFile: true
|
||||
|
||||
- template: win-esrp-dll.yml
|
||||
parameters:
|
||||
FolderPath: '$(Build.BinariesDirectory)\${{ parameters.build_config }}\${{ parameters.build_config }}'
|
||||
DisplayName: 'ESRP - Sign dlls'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
Pattern: 'onnxruntime.dll'
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Restore NuGet Packages and create project.assets.json'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln'
|
||||
platform: 'Any CPU'
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArguments: '-t:restore -p:OrtPackageId=$(OrtPackageId)'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Build C# bindings'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln'
|
||||
platform: 'Any CPU'
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArguments: '-p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=$(OrtPackageId) -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }}'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- ${{ if eq(parameters.DoEsrp, true) }}:
|
||||
- template: win-esrp-dll.yml
|
||||
parameters:
|
||||
FolderPath: '$(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\${{ parameters.build_config }}'
|
||||
DisplayName: 'ESRP - Sign C# dlls'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Build Nuget Packages'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.proj'
|
||||
platform: 'Any CPU'
|
||||
configuration: ${{ parameters.build_config }}
|
||||
msbuildArguments: '-t:CreatePackage -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=$(OrtPackageId) -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }} -p:TargetArchitecture=${{ parameters.buildArch }}'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Copy native nuget package to: $(Build.ArtifactStagingDirectory)'
|
||||
inputs:
|
||||
SourceFolder: '$(Build.BinariesDirectory)\${{ parameters.build_config }}\${{ parameters.build_config }}'
|
||||
Contents: '*.nupkg'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Copy native nuget symbols package to: $(Build.ArtifactStagingDirectory)'
|
||||
inputs:
|
||||
SourceFolder: '$(Build.BinariesDirectory)\${{ parameters.build_config }}\${{ parameters.build_config }}'
|
||||
Contents: '*.snupkg'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline x64 NuGet Artifact'
|
||||
inputs:
|
||||
artifactName: ${{ parameters.ArtifactName }}
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)'
|
||||
Loading…
Reference in a new issue