mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-06-08 00:23:03 +00:00
Create a new Nuget Package pipeline for CUDA 12 (#18135)
This commit is contained in:
parent
94a6020a7f
commit
3ea27c2925
19 changed files with 889 additions and 53 deletions
|
|
@ -60,6 +60,14 @@ parameters:
|
|||
type: string
|
||||
default: '--use_azure'
|
||||
|
||||
- name: CudaVersion
|
||||
displayName: CUDA version
|
||||
type: string
|
||||
default: '11.8'
|
||||
values:
|
||||
- 11.8
|
||||
- 12.2
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: onnxruntime-inference-examples # The name used to reference this repository in the checkout step
|
||||
|
|
@ -146,7 +154,13 @@ stages:
|
|||
timeoutInMinutes: 120
|
||||
pool: 'Onnxruntime-Linux-GPU'
|
||||
variables:
|
||||
CUDA_VERSION: '11.8'
|
||||
- name: CUDA_VERSION_MAJOR
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: '11'
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: '12'
|
||||
- name: CUDA_VERSION
|
||||
value: ${{ parameters.CudaVersion }}
|
||||
steps:
|
||||
- template: templates/set-version-number-variables-step.yml
|
||||
- template: templates/get-docker-image-steps.yml
|
||||
|
|
@ -154,7 +168,7 @@ stages:
|
|||
Dockerfile: tools/ci_build/github/linux/docker/inference/x64/default/gpu/Dockerfile
|
||||
Context: tools/ci_build/github/linux/docker/inference/x64/default/gpu
|
||||
DockerBuildArgs: "--build-arg BUILD_UID=$( id -u )"
|
||||
Repository: onnxruntimecuda11centosbuild
|
||||
Repository: onnxruntimecuda$(CUDA_VERSION_MAJOR)build
|
||||
|
||||
- script: $(Build.SourcesDirectory)/tools/ci_build/github/linux/build_cuda_c_api_package.sh
|
||||
workingDirectory: $(Build.SourcesDirectory)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,175 @@
|
|||
parameters:
|
||||
- name: RunOnnxRuntimeTests
|
||||
displayName: Run Tests?
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: UseIncreasedTimeoutForTests
|
||||
displayName: Increase timeout for tests? Set it to false if you are doing an Onnx Runtime release.
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: DoCompliance
|
||||
displayName: Run Compliance Tasks?
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: DoEsrp
|
||||
displayName: Run code sign tasks? Must be true if you are doing an ONNX Runtime release
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: IsReleaseBuild
|
||||
displayName: Is a release build? Set it to true if you are doing an ONNX Runtime release.
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: PreReleaseVersionSuffixString
|
||||
displayName: Suffix added to pre-release package version. Only used if IsReleaseBuild is true. Denotes the type of pre-release package.
|
||||
type: string
|
||||
values:
|
||||
- alpha
|
||||
- beta
|
||||
- rc
|
||||
- none
|
||||
default: none
|
||||
|
||||
- name: PreReleaseVersionSuffixNumber
|
||||
displayName: Number added to pre-release package version. Only used if IsReleaseBuild is true. Denotes the sequence of a pre-release package.
|
||||
type: number
|
||||
default: 0
|
||||
|
||||
# these 2 parameters are used for debugging.
|
||||
- name: SpecificArtifact
|
||||
displayName: Use Specific Artifact (Debugging only)
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: BuildId
|
||||
displayName: Pipeline BuildId, you could find it in the URL
|
||||
type: string
|
||||
default: '0'
|
||||
|
||||
- name: CudaVersion
|
||||
displayName: CUDA version
|
||||
type: string
|
||||
default: '12.2'
|
||||
values:
|
||||
- 11.8
|
||||
- 12.2
|
||||
|
||||
variables:
|
||||
- name: ReleaseVersionSuffix
|
||||
value: ''
|
||||
- name: docker_base_image
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: nvidia/cuda:12.2.2-cudnn8-devel-ubi8
|
||||
- name: linux_trt_version
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: 8.6.1.6-1.cuda11.8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: 8.6.1.6-1.cuda12.0
|
||||
- name: win_trt_home
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: $(Agent.TempDirectory)\TensorRT-8.6.1.6.Windows10.x86_64.cuda-11.8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: $(Agent.TempDirectory)\TensorRT-8.6.1.6.Windows10.x86_64.cuda-12.0
|
||||
- name: win_cuda_home
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: $(Agent.TempDirectory)\v11.8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: $(Agent.TempDirectory)\v12.2
|
||||
resources:
|
||||
repositories:
|
||||
- repository: onnxruntime-inference-examples # The name used to reference this repository in the checkout step
|
||||
type: github
|
||||
endpoint: ort-examples
|
||||
name: microsoft/onnxruntime-inference-examples
|
||||
- repository: manylinux
|
||||
type: Github
|
||||
endpoint: Microsoft
|
||||
name: pypa/manylinux
|
||||
ref: 5eda9aded5462201e6310105728d33016e637ea7
|
||||
|
||||
stages:
|
||||
# Set ReleaseVersionSuffix
|
||||
- stage: Set_ReleaseVersionSuffix
|
||||
jobs:
|
||||
- job: Set_Variables
|
||||
pool:
|
||||
vmImage: ubuntu-latest
|
||||
steps:
|
||||
- checkout: none
|
||||
- bash: |
|
||||
# Do not output ##vso[] commands with `set -x` or they may be parsed again and include a trailing quote.
|
||||
set +x
|
||||
if [[ "${{ parameters.IsReleaseBuild }}" = True && "${{ parameters.PreReleaseVersionSuffixString }}" != "none" ]]; then
|
||||
if [[ "${{ parameters.PreReleaseVersionSuffixNumber }}" -eq 0 ]]; then
|
||||
echo "##vso[task.setvariable variable=ReleaseVersionSuffix;isOutput=true]-${{ parameters.PreReleaseVersionSuffixString }}"
|
||||
else
|
||||
echo "##vso[task.setvariable variable=ReleaseVersionSuffix;isOutput=true]-${{ parameters.PreReleaseVersionSuffixString }}.${{ parameters.PreReleaseVersionSuffixNumber }}"
|
||||
fi
|
||||
else
|
||||
echo "##vso[task.setvariable variable=ReleaseVersionSuffix;isOutput=true]"
|
||||
fi
|
||||
name: Set_Release_Version_Suffix
|
||||
- bash: echo $(ReleaseVersionSuffix)
|
||||
name: Debug_Release_Version_Suffix
|
||||
# this is needed for certain artifacts to be published
|
||||
- stage: Linux_C_API_Packaging_CPU_x64
|
||||
dependsOn: [ ]
|
||||
jobs:
|
||||
- template: templates/c-api-linux-cpu.yml
|
||||
parameters:
|
||||
BaseImage: 'registry.access.redhat.com/ubi8/ubi'
|
||||
OnnxruntimeArch: 'x64'
|
||||
OnnxruntimeCFlags: '-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all'
|
||||
OnnxruntimeCXXFlags: '-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all'
|
||||
OnnxruntimeNodejsBindingArch: 'x64'
|
||||
PoolName: 'onnxruntime-Ubuntu2004-AMD-CPU'
|
||||
PackageJava: false
|
||||
PackageNodeJS: false
|
||||
# Nuget Packaging
|
||||
|
||||
- template: stages/nuget-linux-cuda-packaging-stage.yml
|
||||
parameters:
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
docker_base_image: ${{ variables.docker_base_image }}
|
||||
linux_trt_version: ${{ variables.linux_trt_version }}
|
||||
- template: stages/nuget-win-cuda-packaging-stage.yml
|
||||
parameters:
|
||||
RunOnnxRuntimeTests: ${{ parameters.RunOnnxRuntimeTests }}
|
||||
UseIncreasedTimeoutForTests: ${{ parameters.UseIncreasedTimeoutForTests }}
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
win_trt_home: ${{ variables.win_trt_home }}
|
||||
win_cuda_home: ${{ variables.win_cuda_home }}
|
||||
- template: stages/nuget-combine-cuda-stage.yml
|
||||
parameters:
|
||||
DoCompliance: ${{ parameters.DoCompliance }}
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
IsReleaseBuild: ${{ parameters.IsReleaseBuild }}
|
||||
# Testing
|
||||
## Windows GPU Testing
|
||||
- template: nuget/templates/test_win.yml
|
||||
parameters:
|
||||
AgentPool: 'onnxruntime-Win2022-GPU-T4'
|
||||
NugetPackageName: 'Microsoft.ML.OnnxRuntime.Gpu'
|
||||
ArtifactSuffix: 'GPU'
|
||||
StageSuffix: 'GPU'
|
||||
Skipx86Tests: 'true'
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
## Linux GPU Testing
|
||||
- template: nuget/templates/test_linux.yml
|
||||
parameters:
|
||||
AgentPool: Onnxruntime-Linux-GPU
|
||||
ArtifactSuffix: 'GPU'
|
||||
StageSuffix: 'GPU'
|
||||
NugetPackageName: 'Microsoft.ML.OnnxRuntime.Gpu'
|
||||
SpecificArtifact: ${{ parameters.specificArtifact }}
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
BuildId: ${{ parameters.BuildId }}
|
||||
|
||||
## Win/Linux GPU Combined Publishing
|
||||
#- template: templates/publish-nuget.yml
|
||||
|
|
@ -26,7 +26,14 @@ pr:
|
|||
- 'js/web'
|
||||
- 'onnxruntime/core/providers/js'
|
||||
#### end trigger ####
|
||||
|
||||
parameters:
|
||||
- name: CudaVersion
|
||||
displayName: CUDA version
|
||||
type: string
|
||||
default: '11.8'
|
||||
values:
|
||||
- 11.8
|
||||
- 12.2
|
||||
resources:
|
||||
repositories:
|
||||
- repository: manylinux
|
||||
|
|
@ -37,6 +44,17 @@ resources:
|
|||
|
||||
variables:
|
||||
- template: templates/common-variables.yml
|
||||
- name: docker_base_image
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: nvidia/cuda:12.2.2-cudnn8-devel-ubi8
|
||||
|
||||
- name: linux_trt_version
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: 8.6.1.6-1.cuda11.8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: 8.6.1.6-1.cuda12.0
|
||||
|
||||
jobs:
|
||||
- job: Linux_Build
|
||||
|
|
@ -55,15 +73,14 @@ jobs:
|
|||
- checkout: self
|
||||
clean: true
|
||||
submodules: none
|
||||
|
||||
- template: templates/get-docker-image-steps.yml
|
||||
parameters:
|
||||
Dockerfile: tools/ci_build/github/linux/docker/Dockerfile.manylinux2_28_cuda
|
||||
Context: tools/ci_build/github/linux/docker
|
||||
DockerBuildArgs: "
|
||||
--network=host
|
||||
--build-arg BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
--build-arg TRT_VERSION=8.6.1.6-1.cuda11.8
|
||||
--build-arg BASEIMAGE=$(docker_base_image)
|
||||
--build-arg TRT_VERSION=$(linux_trt_version)
|
||||
--build-arg BUILD_UID=$( id -u )
|
||||
"
|
||||
Repository: onnxruntimecuda11build
|
||||
|
|
@ -163,8 +180,8 @@ jobs:
|
|||
Context: tools/ci_build/github/linux/docker
|
||||
DockerBuildArgs: "
|
||||
--network=host
|
||||
--build-arg BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
--build-arg TRT_VERSION=8.6.1.6-1.cuda11.8
|
||||
--build-arg BASEIMAGE=$(docker_base_image)
|
||||
--build-arg TRT_VERSION=$(linux_trt_version)
|
||||
--build-arg BUILD_UID=$( id -u )
|
||||
"
|
||||
Repository: onnxruntimecuda11build
|
||||
|
|
|
|||
|
|
@ -26,7 +26,14 @@ pr:
|
|||
- 'js/web'
|
||||
- 'onnxruntime/core/providers/js'
|
||||
#### end trigger ####
|
||||
|
||||
parameters:
|
||||
- name: CudaVersion
|
||||
displayName: CUDA version
|
||||
type: string
|
||||
default: '11.8'
|
||||
values:
|
||||
- 11.8
|
||||
- 12.2
|
||||
resources:
|
||||
repositories:
|
||||
- repository: manylinux
|
||||
|
|
@ -34,7 +41,17 @@ resources:
|
|||
endpoint: Microsoft
|
||||
name: pypa/manylinux
|
||||
ref: 5eda9aded5462201e6310105728d33016e637ea7
|
||||
|
||||
variables:
|
||||
- name: docker_base_image
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: nvidia/cuda:12.2.2-cudnn8-devel-ubi8
|
||||
- name: linux_trt_version
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: 8.6.1.6-1.cuda11.8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: 8.6.1.6-1.cuda12.0
|
||||
jobs:
|
||||
- job: Linux_Build
|
||||
timeoutInMinutes: 180
|
||||
|
|
@ -61,8 +78,8 @@ jobs:
|
|||
Context: tools/ci_build/github/linux/docker
|
||||
DockerBuildArgs: "
|
||||
--network=host
|
||||
--build-arg BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
--build-arg TRT_VERSION=8.6.1.6-1.cuda11.8
|
||||
--build-arg BASEIMAGE=${{ variables.docker_base_image }}
|
||||
--build-arg TRT_VERSION=${{ variables.linux_trt_version }}
|
||||
--build-arg BUILD_UID=$( id -u )
|
||||
"
|
||||
Repository: onnxruntimetensorrt86gpubuild
|
||||
|
|
@ -99,7 +116,8 @@ jobs:
|
|||
--build_shared_lib \
|
||||
--parallel \
|
||||
--build_wheel \
|
||||
--enable_onnx_tests --use_cuda --cuda_version=11.8 --cuda_home=/usr/local/cuda-11.8 --cudnn_home=/usr/local/cuda-11.8 \
|
||||
--enable_onnx_tests \
|
||||
--use_cuda --cuda_home=/usr/local/cuda-${{ parameters.CudaVersion }} --cudnn_home=/usr/local/cuda-${{ parameters.CudaVersion }} \
|
||||
--enable_pybind --build_java \
|
||||
--use_tensorrt --tensorrt_home /usr \
|
||||
--cmake_extra_defines CMAKE_CUDA_ARCHITECTURES=75 \
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ parameters:
|
|||
SpecificArtifact: false
|
||||
CustomOpArtifactName: 'onnxruntime-linux-x64'
|
||||
BuildId: '0'
|
||||
|
||||
CudaVersion: '11.8'
|
||||
stages:
|
||||
- stage: NuGet_Test_Linux_${{ parameters.StageSuffix }}
|
||||
dependsOn:
|
||||
|
|
@ -54,9 +54,18 @@ stages:
|
|||
- ${{if contains(parameters.StageSuffix , 'GPU') }}:
|
||||
- template: ../../templates/get-docker-image-steps.yml
|
||||
parameters:
|
||||
Dockerfile: tools/ci_build/github/linux/docker/Dockerfile.package_ubuntu_cuda11_8_tensorrt8_6
|
||||
Dockerfile: tools/ci_build/github/linux/docker/Dockerfile.package_ubuntu_2004_gpu
|
||||
Context: tools/ci_build/github/linux/docker/
|
||||
DockerBuildArgs: "--build-arg BUILD_UID=$( id -u )"
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
DockerBuildArgs: "
|
||||
--build-arg BASEIMAGE=nvidia/cuda:12.2.2-cudnn8-devel-ubuntu20.04
|
||||
--build-arg TRT_VERSION=8.6.1.6-1+cuda12.0
|
||||
--build-arg BUILD_UID=$( id -u )
|
||||
"
|
||||
${{ else }}:
|
||||
DockerBuildArgs: "
|
||||
--build-arg BUILD_UID=$( id -u )
|
||||
"
|
||||
Repository: onnxruntimepackagestest
|
||||
- bash: |
|
||||
docker run --rm \
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ parameters:
|
|||
# the parent pipeline.
|
||||
TestDataArtifactSuffix: ''
|
||||
Skipx86Tests: 'false'
|
||||
CudaVersion: ''
|
||||
|
||||
stages:
|
||||
- stage: NuGet_Test_Win_${{ parameters.StageSuffix }}
|
||||
|
|
@ -27,6 +28,10 @@ stages:
|
|||
value: 'ON'
|
||||
- name: runCodesignValidationInjection
|
||||
value: false
|
||||
- name: CUDA_MODULE_LOADINGL
|
||||
value: 'LAZY'
|
||||
- name: GRADLE_OPTS
|
||||
value: '-Dorg.gradle.daemon=false'
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
|
|
@ -39,13 +44,12 @@ stages:
|
|||
displayName: Use Nuget 5.7.0
|
||||
inputs:
|
||||
versionSpec: 5.7.0
|
||||
|
||||
- task: BatchScript@1
|
||||
displayName: 'setup env'
|
||||
inputs:
|
||||
filename: '$(Build.SourcesDirectory)\tools\ci_build\github\windows\setup_env_gpu.bat'
|
||||
modifyEnvironment: true
|
||||
workingFolder: '$(Build.BinariesDirectory)'
|
||||
- ${{ if ne( parameters.CudaVersion, '') }}:
|
||||
- template: ../../templates/jobs/download_win_gpu_library.yml
|
||||
parameters:
|
||||
DownloadCUDA: true
|
||||
DownloadTRT: true
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
|
||||
- task: BatchScript@1
|
||||
displayName: 'Setup Visual Studio env vars'
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ resources:
|
|||
ref: 5eda9aded5462201e6310105728d33016e637ea7
|
||||
|
||||
stages:
|
||||
- template: stages/py-cuda-packaging-stage.yml
|
||||
- template: stages/py-nuget-combine-cuda-stage.yml
|
||||
parameters:
|
||||
enable_linux_gpu: ${{ parameters.enable_linux_gpu }}
|
||||
enable_windows_gpu: ${{ parameters.enable_windows_gpu }}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,228 @@
|
|||
parameters:
|
||||
- name: DoCompliance
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: DoEsrp
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: IsReleaseBuild
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
stages:
|
||||
######## Nuget ########
|
||||
# Win/Linux CUDA Combined packaging
|
||||
- stage: NuGet_Packaging_GPU
|
||||
dependsOn:
|
||||
- Set_ReleaseVersionSuffix
|
||||
- Windows_Packaging_gpu
|
||||
- Windows_Packaging_tensorrt
|
||||
- Linux_C_API_Packaging_CPU_x64
|
||||
- Linux_C_API_Packaging_GPU_x64
|
||||
- Linux_C_API_Packaging_GPU_TensorRT_x64
|
||||
condition: succeeded()
|
||||
jobs:
|
||||
- job:
|
||||
workspace:
|
||||
clean: all
|
||||
# we need to use the 2022 pool to create the nuget package with both pre-net6+Xamarin and net6 targets.
|
||||
# VS2019 has no support for net6 and we need to use msbuild (from the VS install) to do the packing
|
||||
pool: 'Azure-Pipelines-EO-Windows2022-aiinfra'
|
||||
variables:
|
||||
breakCodesignValidationInjection: ${{ parameters.DoEsrp }}
|
||||
ReleaseVersionSuffix: $[stageDependencies.Setup.Set_Variables.outputs['Set_Release_Version_Suffix.ReleaseVersionSuffix']]
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
submodules: true
|
||||
# Download the all artifacts
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact from Linux_C_API_Packaging_GPU_x64 Stage'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-win-x64-cuda'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact'
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact from Linux_C_API_Packaging_GPU_TensorRT_x64 Stage'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-win-x64-tensorrt'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact'
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact from Windows_Packaging_gpu Stage'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-linux-x64-cuda'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact'
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact from Windows_Packaging_tensorrt Stage'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-linux-x64-tensorrt'
|
||||
targetPath: '$(Build.BinariesDirectory)/nuget-artifact'
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact - protoc from Windows_Packaging_(cpu|gpu) Stage'
|
||||
inputs:
|
||||
artifactName: 'drop-extra'
|
||||
targetPath: '$(Build.BinariesDirectory)/extra-artifact'
|
||||
|
||||
# Reconstruct the build dir
|
||||
- task: PowerShell@2
|
||||
displayName: 'PS: Extract nuget files gpu'
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: $(Build.SourcesDirectory)\tools\ci_build\github\windows\extract_nuget_files_gpu.ps1
|
||||
|
||||
- script: |
|
||||
dir
|
||||
workingDirectory: '$(Build.BinariesDirectory)/nuget-artifact'
|
||||
displayName: 'List artifacts'
|
||||
|
||||
- script: |
|
||||
mklink /D /J models C:\local\models
|
||||
workingDirectory: '$(Build.BinariesDirectory)'
|
||||
displayName: 'Create models link'
|
||||
|
||||
- task: NuGetToolInstaller@0
|
||||
displayName: Use Nuget 6.2.1
|
||||
inputs:
|
||||
versionSpec: 6.2.1
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Install .NET 6 workloads
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
dotnet workload install android ios macos
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Build .NET 6 targets using dotnet
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
# we don't specify 'Any CPU' as the platform here because if we do it gets added to the output path
|
||||
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\Any CPU\RelWithDebInfo\net6.0-ios\
|
||||
# which is inconsistent with the msbuild output path for the pre-.net6 targets
|
||||
# e.g. csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo\monoandroid11.0
|
||||
# and makes it harder to do the packing
|
||||
#
|
||||
# 'Any CPU' is the default (first 'mixed' platform specified in the csproj) so this should be fine.
|
||||
script: |
|
||||
dotnet build .\src\Microsoft.ML.OnnxRuntime\Microsoft.ML.OnnxRuntime.csproj -p:SelectedTargets=Net6 -p:Configuration=RelWithDebInfo -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId="Microsoft.ML.OnnxRuntime.Gpu" -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }} -p:ReleaseVersionSuffix=$(ReleaseVersionSuffix)
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Restore NuGet Packages and create project.assets.json for pre-.net6 targets'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln'
|
||||
platform: 'Any CPU'
|
||||
configuration: RelWithDebInfo
|
||||
msbuildArguments: '-t:restore -p:SelectedTargets=PreNet6 -p:OrtPackageId="Microsoft.ML.OnnxRuntime.Gpu"'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Build C# for pre-.net6 targets'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln'
|
||||
configuration: RelWithDebInfo
|
||||
platform: 'Any CPU'
|
||||
msbuildArguments: '-p:SelectedTargets=PreNet6 -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId="Microsoft.ML.OnnxRuntime.Gpu" -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }} -p:ReleaseVersionSuffix=$(ReleaseVersionSuffix)'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- template: ../templates/win-esrp-dll.yml
|
||||
parameters:
|
||||
FolderPath: '$(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo'
|
||||
DisplayName: 'ESRP - Sign C# dlls'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: Update projects.assets.json with combined list of all target frameworks
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\Microsoft.ML.OnnxRuntime.csproj'
|
||||
platform: 'Any CPU'
|
||||
configuration: RelWithDebInfo
|
||||
msbuildArguments: '-t:restore -p:SelectedTargets=All -p:OrtPackageId=Microsoft.ML.OnnxRuntime.Gpu'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Build Nuget Packages'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.proj'
|
||||
configuration: RelWithDebInfo
|
||||
platform: 'Any CPU'
|
||||
msbuildArguments: '-t:CreatePackage -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=Microsoft.ML.OnnxRuntime.Gpu -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }} -p:ReleaseVersionSuffix=$(ReleaseVersionSuffix)'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
- task: BatchScript@1
|
||||
displayName: 'Add TensorRT header file to the native nuGet package'
|
||||
inputs:
|
||||
filename: $(Build.SourcesDirectory)\tools\ci_build\github\windows\bundle_nuget_with_native_headers.bat
|
||||
workingFolder: $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)'
|
||||
inputs:
|
||||
SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo'
|
||||
Contents: '*.snupkg'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)'
|
||||
inputs:
|
||||
SourceFolder: '$(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo'
|
||||
Contents: '*.nupkg'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Copy nuget packages to: $(Build.ArtifactStagingDirectory)'
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo'
|
||||
Contents: '*.nupkg'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- template: ../templates/esrp_nuget.yml
|
||||
parameters:
|
||||
DisplayName: 'ESRP - sign NuGet package'
|
||||
FolderPath: '$(Build.ArtifactStagingDirectory)'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
|
||||
- template: ../templates/validate-package.yml
|
||||
parameters:
|
||||
PackageType: 'nuget'
|
||||
PackagePath: '$(Build.ArtifactStagingDirectory)'
|
||||
PackageName: 'Microsoft.ML.OnnxRuntime.*nupkg'
|
||||
PlatformsSupported: 'win-x64,linux-x64'
|
||||
VerifyNugetSigning: false
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline NuGet Artifact'
|
||||
inputs:
|
||||
artifactName: 'drop-signed-nuget-GPU'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
|
||||
- task: MSBuild@1
|
||||
displayName: 'Clean C#'
|
||||
inputs:
|
||||
solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln'
|
||||
platform: 'Any CPU'
|
||||
configuration: RelWithDebInfo
|
||||
msbuildArguments: '-t:Clean -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=Microsoft.ML.OnnxRuntime.Gpu'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\csharp'
|
||||
|
||||
|
||||
- task: RoslynAnalyzers@2
|
||||
displayName: 'Run Roslyn Analyzers'
|
||||
inputs:
|
||||
userProvideBuildInfo: msBuildInfo
|
||||
msBuildCommandline: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe" $(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln -p:configuration="RelWithDebInfo" -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=Microsoft.ML.OnnxRuntime.Gpu'
|
||||
condition: and(succeeded(), eq('${{ parameters.DoCompliance }}', true))
|
||||
|
||||
- template: ../templates/component-governance-component-detection-steps.yml
|
||||
parameters:
|
||||
condition: 'succeeded'
|
||||
|
||||
- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3
|
||||
displayName: 'Clean Agent Directories'
|
||||
condition: always()
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
parameters:
|
||||
- name: CudaVersion
|
||||
type: string
|
||||
default: '11.8'
|
||||
- name: docker_base_image
|
||||
type: string
|
||||
- name: linux_trt_version
|
||||
type: string
|
||||
|
||||
stages:
|
||||
# Linux CUDA without TensorRT Packaging
|
||||
- stage: Linux_C_API_Packaging_GPU_x64
|
||||
dependsOn: []
|
||||
jobs:
|
||||
- job:
|
||||
workspace:
|
||||
clean: all
|
||||
timeoutInMinutes: 120
|
||||
pool: 'Onnxruntime-Linux-GPU'
|
||||
variables:
|
||||
- name: CUDA_VERSION_MAJOR
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: '11'
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: '12'
|
||||
- name: CUDA_VERSION
|
||||
value: ${{ parameters.CudaVersion }}
|
||||
steps:
|
||||
- template: ../templates/set-version-number-variables-step.yml
|
||||
- template: ../templates/get-docker-image-steps.yml
|
||||
parameters:
|
||||
Dockerfile: tools/ci_build/github/linux/docker/inference/x64/default/gpu/Dockerfile
|
||||
Context: tools/ci_build/github/linux/docker/inference/x64/default/gpu
|
||||
DockerBuildArgs: "
|
||||
--build-arg BUILD_UID=$( id -u )
|
||||
--build-arg BASEIMAGE=${{ parameters.docker_base_image }}
|
||||
"
|
||||
Repository: onnxruntimecuda${{ variables.CUDA_VERSION_MAJOR }}build
|
||||
|
||||
- script: $(Build.SourcesDirectory)/tools/ci_build/github/linux/build_cuda_c_api_package.sh
|
||||
workingDirectory: $(Build.SourcesDirectory)
|
||||
displayName: 'Build and Test'
|
||||
|
||||
- template: ../templates/c-api-artifacts-package-and-publish-steps-posix.yml
|
||||
parameters:
|
||||
buildConfig: 'Release'
|
||||
artifactName: 'onnxruntime-linux-x64-cuda-$(OnnxRuntimeVersion)'
|
||||
artifactNameNoVersionString: 'onnxruntime-linux-x64-cuda'
|
||||
libraryName: 'libonnxruntime.so.$(OnnxRuntimeVersion)'
|
||||
|
||||
- template: ../templates/component-governance-component-detection-steps.yml
|
||||
parameters:
|
||||
condition: 'succeeded'
|
||||
- template: ../templates/clean-agent-build-directory-step.yml
|
||||
# Linux CUDA with TensorRT Packaging
|
||||
- template: ../templates/linux-gpu-tensorrt-packaging-pipeline.yml
|
||||
parameters:
|
||||
artifactName: 'onnxruntime-linux-x64-tensorrt-$(OnnxRuntimeVersion)'
|
||||
artifactNameNoVersionString: 'onnxruntime-linux-x64-tensorrt'
|
||||
buildJava: false
|
||||
buildJavaOption: '--build_java'
|
||||
buildNodejs: false
|
||||
buildNodejsOption: '--build_nodejs'
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
# Linux CUDA Combined Testing and Publishing
|
||||
- stage: Linux_Packaging_combined_GPU
|
||||
dependsOn:
|
||||
- Linux_C_API_Packaging_GPU_x64
|
||||
- Linux_C_API_Packaging_GPU_TensorRT_x64
|
||||
condition: succeeded()
|
||||
jobs:
|
||||
- job:
|
||||
workspace:
|
||||
clean: all
|
||||
pool: 'Onnxruntime-Linux-GPU'
|
||||
|
||||
steps:
|
||||
- checkout: self # due to checkout multiple repos, the root directory is $(Build.SourcesDirectory)/onnxruntime
|
||||
submodules: false
|
||||
- checkout: onnxruntime-inference-examples # due to checkout multiple repos, the root directory is $(Build.SourcesDirectory)/onnxruntime-inference-examples
|
||||
submodules: false
|
||||
- checkout: manylinux # due to checkout multiple repos, the root directory is $(Build.SourcesDirectory)/manylinux
|
||||
submodules: false
|
||||
|
||||
- script: |
|
||||
set -e -x
|
||||
cd $(Build.SourcesDirectory)
|
||||
mv manylinux onnxruntime
|
||||
ls
|
||||
|
||||
- template: ../templates/with-container-registry-steps.yml
|
||||
parameters:
|
||||
Steps:
|
||||
- script: |
|
||||
tools/ci_build/get_docker_image.py \
|
||||
--dockerfile tools/ci_build/github/linux/docker/Dockerfile.manylinux2_28_cuda \
|
||||
--context tools/ci_build/github/linux/docker \
|
||||
--docker-build-args "--network=host --build-arg BASEIMAGE=${{ parameters.docker_base_image }} --build-arg TRT_VERSION=${{ parameters.linux_trt_version }} --build-arg BUILD_UID=$( id -u )" \
|
||||
--container-registry onnxruntimebuildcache \
|
||||
--multiple_repos \
|
||||
--repository onnxruntimecuda${{ variables.CUDA_VERSION_MAJOR }}xtrt86build
|
||||
displayName: "Get onnxruntimecuda${{ variables.CUDA_VERSION_MAJOR }}xtrt86build image for tools/ci_build/github/linux/docker/Dockerfile.manylinux2_28_cuda"
|
||||
workingDirectory: $(Build.SourcesDirectory)/onnxruntime
|
||||
ContainerRegistry: onnxruntimebuildcache
|
||||
|
||||
- template: ../templates/set-version-number-variables-step.yml
|
||||
parameters:
|
||||
versionFileDirectory: '$(Build.SourcesDirectory)/onnxruntime'
|
||||
workingDirectory: '$(Build.SourcesDirectory)/onnxruntime'
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact - Combined GPU'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-linux-x64-cuda'
|
||||
targetPath: '$(Build.BinariesDirectory)/tgz-artifacts'
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact - Combined GPU'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-linux-x64-tensorrt'
|
||||
targetPath: '$(Build.BinariesDirectory)/tgz-artifacts'
|
||||
|
||||
- task: ShellScript@2
|
||||
displayName: 'Shell Script'
|
||||
inputs:
|
||||
scriptPath: 'onnxruntime/tools/ci_build/github/linux/extract_and_bundle_gpu_package.sh'
|
||||
args: '-a $(Build.BinariesDirectory)/tgz-artifacts'
|
||||
workingDirectory: '$(Build.BinariesDirectory)/tgz-artifacts'
|
||||
|
||||
- task: ArchiveFiles@2
|
||||
inputs:
|
||||
rootFolderOrFile: '$(Build.BinariesDirectory)/tgz-artifacts/onnxruntime-linux-x64-gpu'
|
||||
includeRootFolder: false
|
||||
archiveType: 'tar' # Options: zip, 7z, tar, wim
|
||||
tarCompression: 'gz'
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/onnxruntime-linux-x64-gpu-$(OnnxRuntimeVersion).tgz'
|
||||
replaceExistingArchive: true
|
||||
|
||||
- template: ../templates/validate-package.yml
|
||||
parameters:
|
||||
PackageType: 'tarball'
|
||||
PackagePath: '$(Build.ArtifactStagingDirectory)'
|
||||
PackageName: 'onnxruntime-linux-x64-gpu-$(OnnxRuntimeVersion).tgz'
|
||||
ScriptPath: '$(Build.SourcesDirectory)/onnxruntime/tools/nuget/validate_package.py'
|
||||
PlatformsSupported: 'linux-x64'
|
||||
VerifyNugetSigning: false
|
||||
workingDirectory: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Test C API application for GPU package'
|
||||
inputs:
|
||||
script: |
|
||||
docker run --gpus all -e CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all" -e CXXFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all" -e NVIDIA_VISIBLE_DEVICES=all --rm --volume $(Build.SourcesDirectory):/src_dir \
|
||||
--volume $(Build.ArtifactStagingDirectory):/artifact_src -e NIGHTLY_BUILD onnxruntimecuda${{ variables.CUDA_VERSION_MAJOR }}xtrt86build \
|
||||
/src_dir/onnxruntime-inference-examples/c_cxx/squeezenet/run_capi_application.sh -o /src_dir/onnxruntime -p /artifact_src/onnxruntime-linux-x64-gpu-$(OnnxRuntimeVersion).tgz -w /src_dir/onnxruntime-inference-examples/c_cxx/squeezenet
|
||||
workingDirectory: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: PublishPipelineArtifact@1
|
||||
inputs:
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)/onnxruntime-linux-x64-gpu-$(OnnxRuntimeVersion).tgz'
|
||||
artifactName: 'onnxruntime-linux-x64-gpu'
|
||||
|
|
@ -0,0 +1,147 @@
|
|||
parameters:
|
||||
- name: RunOnnxRuntimeTests
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: UseIncreasedTimeoutForTests
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: DoCompliance
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: DoEsrp
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
- name: CudaVersion
|
||||
type: string
|
||||
default: '11.8'
|
||||
- name: win_cuda_home
|
||||
type: string
|
||||
- name: win_trt_home
|
||||
type: string
|
||||
|
||||
stages:
|
||||
# Windows CUDA without TensorRT Packaging
|
||||
- template: ../templates/win-ci.yml
|
||||
parameters:
|
||||
ort_build_pool_name: 'onnxruntime-Win2022-GPU-T4'
|
||||
DoCompliance: ${{ parameters.DoCompliance }}
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
stage_name_suffix: gpu
|
||||
buildArch: x64
|
||||
msbuildPlatform: x64
|
||||
packageName: x64-cuda
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
buildparameter: --use_cuda --cuda_home=${{ parameters.win_cuda_home }} --enable_onnx_tests --enable_wcos --cmake_extra_defines "CMAKE_CUDA_ARCHITECTURES=60;61;70;75;80"
|
||||
runTests: ${{ parameters.RunOnnxRuntimeTests }}
|
||||
buildJava: false
|
||||
java_artifact_id: onnxruntime_gpu
|
||||
PublishProtoc: true
|
||||
# Windows CUDA with TensorRT Packaging
|
||||
- template: ../templates/win-ci.yml
|
||||
parameters:
|
||||
ort_build_pool_name: 'onnxruntime-Win2022-GPU-T4'
|
||||
DoCompliance: ${{ parameters.DoCompliance }}
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
stage_name_suffix: tensorrt
|
||||
buildArch: x64
|
||||
msbuildPlatform: x64
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
packageName: x64-tensorrt
|
||||
buildparameter: --use_tensorrt --tensorrt_home=${{ parameters.win_trt_home }} --cuda_home=${{ parameters.win_cuda_home }} --enable_onnx_tests --enable_wcos --cmake_extra_defines "CMAKE_CUDA_ARCHITECTURES=60;61;70;75;80"
|
||||
runTests: ${{ parameters.RunOnnxRuntimeTests }}
|
||||
buildJava: false
|
||||
java_artifact_id: onnxruntime_gpu
|
||||
UseIncreasedTimeoutForTests: ${{ parameters.UseIncreasedTimeoutForTests }}
|
||||
|
||||
# Windows CUDA Combined Testing and Publishing
|
||||
- stage: Windows_Packaging_combined_GPU
|
||||
dependsOn:
|
||||
- Windows_Packaging_gpu
|
||||
- Windows_Packaging_tensorrt
|
||||
condition: succeeded()
|
||||
|
||||
jobs:
|
||||
- job:
|
||||
workspace:
|
||||
clean: all
|
||||
pool: 'onnxruntime-Win2022-GPU-T4'
|
||||
variables:
|
||||
CUDA_MODULE_LOADINGL: 'LAZY'
|
||||
GRADLE_OPTS: '-Dorg.gradle.daemon=false'
|
||||
steps:
|
||||
- checkout: self # due to checkout multiple repos, the root directory is $(Build.SourcesDirectory)/onnxruntime
|
||||
- checkout: onnxruntime-inference-examples # due to checkout multiple repos, the root directory is $(Build.SourcesDirectory)/onnxruntime-inference-examples
|
||||
submodules: false
|
||||
- script: dir $(Build.SourcesDirectory)
|
||||
- template: ../templates/jobs/download_win_gpu_library.yml
|
||||
parameters:
|
||||
DownloadCUDA: true
|
||||
DownloadTRT: true
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
|
||||
- template: ../templates/set-version-number-variables-step.yml
|
||||
parameters:
|
||||
versionFileDirectory: '$(Build.SourcesDirectory)\onnxruntime'
|
||||
workingDirectory: '$(Build.SourcesDirectory)\onnxruntime'
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact - onnxruntime-win-x64-cuda'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-win-x64-cuda'
|
||||
targetPath: '$(Build.BinariesDirectory)/zip-artifacts'
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: 'Download Pipeline Artifact - onnxruntime-win-x64-tensorrt'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-win-x64-tensorrt'
|
||||
targetPath: '$(Build.BinariesDirectory)/zip-artifacts'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'PowerShell Script'
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: $(Build.SourcesDirectory)\onnxruntime\tools\ci_build\github\windows\extract_zip_files_gpu.ps1
|
||||
|
||||
- script: |
|
||||
dir
|
||||
workingDirectory: '$(Build.BinariesDirectory)/zip-artifacts'
|
||||
displayName: 'List artifacts'
|
||||
|
||||
- task: BatchScript@1
|
||||
displayName: 'Bundle CUDA/TRT EP binaries'
|
||||
inputs:
|
||||
filename: $(Build.SourcesDirectory)\onnxruntime\tools\ci_build\github\windows\bundle_dlls_gpu.bat
|
||||
workingFolder: $(Build.BinariesDirectory)\zip-artifacts
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: 'Copy zip file to: $(Build.ArtifactStagingDirectory)'
|
||||
inputs:
|
||||
SourceFolder: '$(Build.BinariesDirectory)\zip-artifacts'
|
||||
Contents: 'onnxruntime-win-x64-gpu-*.zip'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- template: ../templates/validate-package.yml
|
||||
parameters:
|
||||
PackageType: 'zip'
|
||||
PackagePath: '$(Build.ArtifactStagingDirectory)'
|
||||
PackageName: 'onnxruntime-win-x64-gpu-$(OnnxRuntimeVersion).zip'
|
||||
ScriptPath: '$(Build.SourcesDirectory)\onnxruntime\tools\nuget\validate_package.py'
|
||||
PlatformsSupported: 'win-x64'
|
||||
VerifyNugetSigning: false
|
||||
workingDirectory: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: BatchScript@1
|
||||
displayName: 'Test C API application for GPU package'
|
||||
inputs:
|
||||
filename: $(Build.SourcesDirectory)\onnxruntime-inference-examples\c_cxx\squeezenet\run_capi_application.bat
|
||||
arguments: $(Build.SourcesDirectory)\onnxruntime $(Build.ArtifactStagingDirectory)\onnxruntime-win-x64-gpu-$(OnnxRuntimeVersion).zip $(Build.SourcesDirectory)\onnxruntime-inference-examples\c_cxx\squeezenet
|
||||
workingFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: PublishPipelineArtifact@0
|
||||
displayName: 'Publish Pipeline Combined GPU Package Artifact'
|
||||
inputs:
|
||||
artifactName: 'onnxruntime-win-x64-gpu'
|
||||
targetPath: '$(Build.ArtifactStagingDirectory)'
|
||||
|
|
@ -13,7 +13,6 @@ parameters:
|
|||
- 12.2
|
||||
|
||||
steps:
|
||||
|
||||
- ${{ if eq(parameters.DownloadCUDA, true) }}:
|
||||
- powershell: |
|
||||
azcopy.exe cp --recursive https://lotusscus.blob.core.windows.net/models/cuda_sdk/v${{ parameters.CudaVersion }} $(Agent.TempDirectory)
|
||||
|
|
|
|||
|
|
@ -23,12 +23,33 @@ parameters:
|
|||
type: string
|
||||
default: ''
|
||||
|
||||
- name: CudaVersion
|
||||
displayName: CUDA version
|
||||
type: string
|
||||
default: '11.8'
|
||||
values:
|
||||
- 11.8
|
||||
- 12.2
|
||||
|
||||
|
||||
|
||||
# We only have CUDA/TRT on x64. We do not have a build for CUDA/TRT for ARM64.
|
||||
# Therefore this file does not have an `OnnxruntimeNodejsBindingArch` parameter
|
||||
|
||||
stages:
|
||||
- stage: Linux_C_API_Packaging_GPU_TensorRT_x64
|
||||
dependsOn: []
|
||||
variables:
|
||||
- name: linux_trt_version
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: 8.6.1.6-1.cuda11.8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: 8.6.1.6-1.cuda12.0
|
||||
- name: docker_base_image
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: nvidia/cuda:12.2.2-cudnn8-devel-ubi8
|
||||
jobs:
|
||||
- job:
|
||||
dependsOn: []
|
||||
|
|
@ -37,7 +58,13 @@ stages:
|
|||
timeoutInMinutes: 180
|
||||
pool: 'Onnxruntime-Linux-GPU'
|
||||
variables:
|
||||
CUDA_VERSION: '11.8'
|
||||
- name: CUDA_VERSION_MAJOR
|
||||
${{ if eq(parameters.CudaVersion, '11.8') }}:
|
||||
value: '11'
|
||||
${{ if eq(parameters.CudaVersion, '12.2') }}:
|
||||
value: '12'
|
||||
- name: CUDA_VERSION
|
||||
value: ${{ parameters.CudaVersion }}
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
|
|
@ -48,11 +75,11 @@ stages:
|
|||
Context: tools/ci_build/github/linux/docker
|
||||
DockerBuildArgs: "
|
||||
--network=host
|
||||
--build-arg BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
--build-arg TRT_VERSION=8.6.1.6-1.cuda11.8
|
||||
--build-arg BASEIMAGE=${{ variables.docker_base_image }}
|
||||
--build-arg TRT_VERSION=${{ variables.linux_trt_version }}
|
||||
--build-arg BUILD_UID=$( id -u )
|
||||
"
|
||||
Repository: onnxruntimecuda118xtrt86build
|
||||
Repository: onnxruntimecuda${{ variables.CUDA_VERSION_MAJOR }}xtrt86build
|
||||
- template: set-version-number-variables-step.yml
|
||||
|
||||
- script: $(Build.SourcesDirectory)/tools/ci_build/github/linux/build_tensorrt_c_api_package.sh
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ parameters:
|
|||
|
||||
- name: EnvSetupScript
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
- name: buildArch
|
||||
type: string
|
||||
|
|
@ -63,11 +64,24 @@ parameters:
|
|||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: PublishProtoc
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
- name: CudaVersion
|
||||
type: string
|
||||
default: '11.8'
|
||||
values:
|
||||
- 11.8
|
||||
- 12.2
|
||||
|
||||
stages:
|
||||
- stage: Windows_Packaging_${{ parameters.stage_name_suffix }}
|
||||
dependsOn: []
|
||||
variables:
|
||||
GRADLE_OPTS: '-Dorg.gradle.daemon=false'
|
||||
VSGenerator: 'Visual Studio 17 2022'
|
||||
CUDA_MODULE_LOADING: 'LAZY'
|
||||
jobs:
|
||||
- job:
|
||||
workspace:
|
||||
|
|
@ -102,12 +116,26 @@ stages:
|
|||
condition: and(succeeded(), eq('${{ parameters.buildNodejs}}', true))
|
||||
inputs:
|
||||
versionSpec: '18.x'
|
||||
- ${{ if ne(parameters.EnvSetupScript, '') }}:
|
||||
- template: jobs/set-winenv.yml
|
||||
parameters:
|
||||
EnvSetupScript: ${{ parameters.EnvSetupScript }}
|
||||
${{ if contains(parameters.buildparameter, 'use_cuda') }}:
|
||||
DownloadCUDA: true
|
||||
|
||||
- template: jobs/set-winenv.yml
|
||||
parameters:
|
||||
EnvSetupScript: ${{ parameters.EnvSetupScript }}
|
||||
${{ if contains(parameters.buildparameter, 'use_cuda') }}:
|
||||
DownloadCUDA: true
|
||||
- ${{ if eq(parameters.EnvSetupScript, '') }}:
|
||||
- template: jobs/download_win_gpu_library.yml
|
||||
parameters:
|
||||
CudaVersion: ${{ parameters.CudaVersion }}
|
||||
${{ if contains(parameters.buildparameter, 'use_cuda') }}:
|
||||
DownloadCUDA: true
|
||||
${{ if contains(parameters.buildparameter, 'use_tensorrt') }}:
|
||||
DownloadCUDA: true
|
||||
DownloadTRT: true
|
||||
- powershell: |
|
||||
Write-Host "##vso[task.prependpath]C:\Program Files (x86)\dotnet"
|
||||
displayName: 'Append dotnet x86 Directory to PATH'
|
||||
condition: and(succeeded(), eq('${{ parameters.buildArch}}', 'x86'))
|
||||
|
||||
- template: download-deps.yml
|
||||
|
||||
|
|
@ -178,9 +206,11 @@ stages:
|
|||
artifactName: 'drop-onnxruntime-nodejs-win-${{ parameters.packageName }}'
|
||||
DoEsrp: ${{ parameters.DoEsrp }}
|
||||
|
||||
#Upload protoc.exe, which will be used in nuget build for generating C# files
|
||||
# Upload protoc.exe, which will be used in nuget build for generating C# files
|
||||
# TODO: We need to make this step independent of the packageName, so that it can be used in test_win.yml
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: and(succeeded(), eq('${{ parameters.packageName}}', 'x64'))
|
||||
displayName: Publish protoc as drop-extra
|
||||
condition: and(succeeded(), or(eq('${{ parameters.packageName}}', 'x64'), eq('${{ parameters.PublishProtoc}}', true)))
|
||||
inputs:
|
||||
targetPath: '$(Build.BinariesDirectory)\RelWithDebInfo\installed\bin\protoc.exe'
|
||||
artifactName: 'drop-extra${{ parameters.artifact_name_suffix }}'
|
||||
|
|
@ -194,9 +224,10 @@ stages:
|
|||
Contents: 'custom_op_library.dll'
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)/testdata'
|
||||
|
||||
#To be used in test_win.yml
|
||||
#To be used in test_win.
|
||||
# TODO: Do we need to publish protoc twice?
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: and(succeeded(), eq('${{ parameters.packageName}}', 'x64'))
|
||||
condition: and(succeeded(), or(eq('${{ parameters.packageName}}', 'x64'), eq('${{ parameters.PublishProtoc}}', true)))
|
||||
inputs:
|
||||
targetPath: '$(Build.BinariesDirectory)\RelWithDebInfo\installed\bin\protoc.exe'
|
||||
artifactName: 'drop-nuget${{ parameters.artifact_name_suffix }}'
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ export CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protect
|
|||
export CXXFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all"
|
||||
docker run --gpus all -e CFLAGS -e CXXFLAGS -e NVIDIA_VISIBLE_DEVICES=all --rm --volume \
|
||||
$BUILD_SOURCESDIRECTORY:/onnxruntime_src --volume $BUILD_BINARIESDIRECTORY:/build \
|
||||
--volume /data/models:/build/models:ro --volume /data/onnx:/data/onnx:ro -e NIGHTLY_BUILD onnxruntimecuda11centosbuild \
|
||||
--volume /data/models:/build/models:ro --volume /data/onnx:/data/onnx:ro -e NIGHTLY_BUILD onnxruntimecuda${CUDA_VERSION_MAJOR}build \
|
||||
/usr/bin/python3.9 /onnxruntime_src/tools/ci_build/build.py --build_java --build_nodejs --build_dir /build --config Release \
|
||||
--skip_submodule_sync --parallel --build_shared_lib --use_cuda --cuda_version=$CUDA_VERSION \
|
||||
--cuda_home=/usr/local/cuda-$CUDA_VERSION --cudnn_home=/usr/local/cuda-$CUDA_VERSION \
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@ export CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protect
|
|||
export CXXFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -fcf-protection -O3 -Wl,--strip-all"
|
||||
mkdir -p $HOME/.onnx
|
||||
docker run --gpus all -e CFLAGS -e CXXFLAGS -e NVIDIA_VISIBLE_DEVICES=all --rm --volume /data/onnx:/data/onnx:ro --volume $BUILD_SOURCESDIRECTORY:/onnxruntime_src --volume $BUILD_BINARIESDIRECTORY:/build \
|
||||
--volume /data/models:/build/models:ro --volume $HOME/.onnx:/home/onnxruntimedev/.onnx -e NIGHTLY_BUILD onnxruntimecuda118xtrt86build \
|
||||
--volume /data/models:/build/models:ro --volume $HOME/.onnx:/home/onnxruntimedev/.onnx -e NIGHTLY_BUILD onnxruntimecuda${CUDA_VERSION_MAJOR}xtrt86build \
|
||||
/opt/python/cp38-cp38/bin/python3 /onnxruntime_src/tools/ci_build/build.py --build_dir /build --config Release \
|
||||
--skip_submodule_sync --parallel --build_shared_lib --build_java --build_nodejs --use_tensorrt --cuda_version=$CUDA_VERSION --cuda_home=/usr/local/cuda-$CUDA_VERSION --cudnn_home=/usr --tensorrt_home=/usr --cmake_extra_defines 'CMAKE_CUDA_ARCHITECTURES=60;61;70;75;80'
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ ARG BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
|||
ARG DEVTOOLSET_ROOTPATH=/usr
|
||||
ARG LD_LIBRARY_PATH_ARG=/usr/local/lib64
|
||||
ARG PREPEND_PATH=/usr/local/cuda/binet
|
||||
ARG TRT_VERSION=8.6.1.6-1.cuda11.8
|
||||
|
||||
#Build manylinux docker image begin
|
||||
FROM $BASEIMAGE AS runtime_base
|
||||
|
|
|
|||
|
|
@ -5,8 +5,10 @@
|
|||
# Dockerfile to Test ONNX Runtime on UBI8 with CUDA 11.8 and TensorRT 8.6
|
||||
|
||||
# Build base image with required system packages
|
||||
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubi8 AS base
|
||||
|
||||
ARG BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
ARG TRT_VERSION=8.6.1.6-1.cuda11.8
|
||||
FROM $BASEIMAGE AS base
|
||||
ARG TRT_VERSION
|
||||
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/src/tensorrt/bin:${PATH}
|
||||
|
||||
RUN dnf install -y bash wget &&\
|
||||
|
|
@ -26,8 +28,7 @@ RUN pip3 install setuptools>=68.2.2
|
|||
|
||||
# Install TensorRT
|
||||
RUN dnf install -y libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-lean8 libnvinfer-vc-plugin8 libnvinfer-dispatch8
|
||||
RUN v="8.6.1.6-1+cuda11.8" &&\
|
||||
dnf downgrade -y libnvinfer8-${v} libnvinfer8-${v} libnvonnxparsers8-${v} libnvparsers8-${v} libnvinfer-plugin8-${v} libnvinfer-lean8-${v} libnvinfer-vc-plugin8-${v} libnvinfer-dispatch8-${v} &&\
|
||||
RUN dnf downgrade -y libnvinfer8-${TRT_VERSION} libnvinfer8-${TRT_VERSION} libnvonnxparsers8-${TRT_VERSION} libnvparsers8-${TRT_VERSION} libnvinfer-plugin8-${TRT_VERSION} libnvinfer-lean8-${TRT_VERSION} libnvinfer-vc-plugin8-${TRT_VERSION} libnvinfer-dispatch8-${TRT_VERSION} &&\
|
||||
dnf install -y dnf-plugin-versionlock &&\
|
||||
dnf versionlock libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-lean8 libnvinfer-vc-plugin8 libnvinfer-dispatch8
|
||||
RUN dnf clean dbcache
|
||||
|
|
|
|||
|
|
@ -5,11 +5,16 @@
|
|||
# Dockerfile to run ONNXRuntime with TensorRT integration
|
||||
|
||||
# Build base image with required system packages
|
||||
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04 AS base
|
||||
|
||||
ARG BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04
|
||||
ARG TRT_VERSION=8.6.1.6-1+cuda11.8
|
||||
ARG LD_LIBRARY_PATH_ARG=/usr/local/lib64:/usr/local/cuda/lib64
|
||||
FROM $BASEIMAGE AS base
|
||||
ARG TRT_VERSION
|
||||
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/src/tensorrt/bin:${PATH}
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH_ARG}:${LD_LIBRARY_PATH}
|
||||
|
||||
RUN apt-get update &&\
|
||||
apt-get install -y git bash wget
|
||||
|
||||
|
|
@ -24,12 +29,11 @@ RUN apt-get install -y --no-install-recommends \
|
|||
RUN pip install --upgrade pip
|
||||
|
||||
# Install TensorRT
|
||||
RUN v="8.6.1.6-1+cuda11.8" &&\
|
||||
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub &&\
|
||||
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub &&\
|
||||
apt-get update &&\
|
||||
apt-get install -y libnvinfer8=${v} libnvonnxparsers8=${v} libnvparsers8=${v} libnvinfer-plugin8=${v} libnvinfer-lean8=${v} libnvinfer-vc-plugin8=${v} libnvinfer-dispatch8=${v}\
|
||||
libnvinfer-headers-dev=${v} libnvinfer-headers-plugin-dev=${v} libnvinfer-dev=${v} libnvonnxparsers-dev=${v} libnvparsers-dev=${v} libnvinfer-plugin-dev=${v} libnvinfer-lean-dev=${v} libnvinfer-vc-plugin-dev=${v} libnvinfer-dispatch-dev=${v}\
|
||||
python3-libnvinfer=${v} libnvinfer-samples=${v} tensorrt-dev=${v} tensorrt-libs=${v}
|
||||
apt-get install -y libnvinfer8=${TRT_VERSION} libnvonnxparsers8=${TRT_VERSION} libnvparsers8=${TRT_VERSION} libnvinfer-plugin8=${TRT_VERSION} libnvinfer-lean8=${TRT_VERSION} libnvinfer-vc-plugin8=${TRT_VERSION} libnvinfer-dispatch8=${TRT_VERSION}\
|
||||
libnvinfer-headers-dev=${TRT_VERSION} libnvinfer-headers-plugin-dev=${TRT_VERSION} libnvinfer-dev=${TRT_VERSION} libnvonnxparsers-dev=${TRT_VERSION} libnvparsers-dev=${TRT_VERSION} libnvinfer-plugin-dev=${TRT_VERSION} libnvinfer-lean-dev=${TRT_VERSION} libnvinfer-vc-plugin-dev=${TRT_VERSION} libnvinfer-dispatch-dev=${TRT_VERSION}\
|
||||
python3-libnvinfer=${TRT_VERSION} libnvinfer-samples=${TRT_VERSION} tensorrt-dev=${TRT_VERSION} tensorrt-libs=${TRT_VERSION}
|
||||
|
||||
ADD scripts /tmp/scripts
|
||||
RUN cd /tmp/scripts && /tmp/scripts/install_dotnet.sh && rm -rf /tmp/scripts
|
||||
|
|
@ -2,8 +2,8 @@
|
|||
# Licensed under the MIT License.
|
||||
|
||||
# This file is used by Zip-Nuget Packaging NoContribOps Pipeline,Zip-Nuget-Java Packaging Pipeline
|
||||
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
|
||||
ARG BASEIMAGE=nvidia/cuda:11.8.0-cudnn8-devel-ubi8
|
||||
FROM $BASEIMAGE
|
||||
ENV PATH /usr/lib/jvm/msopenjdk-11/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
ENV LANG=en_US.UTF-8
|
||||
ENV LC_ALL=en_US.UTF-8
|
||||
|
|
|
|||
Loading…
Reference in a new issue