-
Notifications
You must be signed in to change notification settings - Fork 394
[Plugin TRT EP] Add pipelines to build and test plugin TRT EP #540
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…e mutiple GPU devices
| name: Windows GPU TensorRT CI Pipeline Test Job | ||
| needs: build | ||
| timeout-minutes: 300 | ||
| runs-on: ["self-hosted", "1ES.Pool=onnxruntime-github-Win2022-GPU-A10"] | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| with: | ||
| fetch-depth: 0 | ||
| submodules: 'none' | ||
|
|
||
| - name: Download build artifacts | ||
| uses: actions/download-artifact@v5 | ||
| with: | ||
| name: build-artifacts | ||
| path: ${{ runner.temp }}\build | ||
|
|
||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: '3.12' | ||
| architecture: x64 | ||
|
|
||
| - uses: actions/setup-node@v5 | ||
| with: | ||
| node-version: '20.x' | ||
|
|
||
| - uses: actions/setup-java@v5 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '17' | ||
| architecture: x64 | ||
|
|
||
| - name: Locate vcvarsall and Setup Env | ||
| uses: ./.github/actions/locate-vcvarsall-and-setup-env | ||
| with: | ||
| architecture: x64 | ||
|
|
||
| - name: Install python modules | ||
| run: python -m pip install -r .\tools\ci_build\github\windows\python\requirements.txt | ||
| working-directory: ${{ github.workspace }} | ||
| shell: cmd | ||
|
|
||
| - name: Download CUDA SDK v12.2 | ||
| working-directory: ${{ runner.temp }} | ||
| run: | | ||
| azcopy.exe cp --recursive "https://lotusscus.blob.core.windows.net/models/cuda_sdk/v12.2" . | ||
| dir | ||
| shell: pwsh | ||
|
|
||
| - name: Download TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8 | ||
| run: 'azcopy.exe cp --recursive "https://lotusscus.blob.core.windows.net/models/local/TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8" ${{ runner.temp }}' | ||
| shell: pwsh | ||
|
|
||
| - name: Add CUDA to PATH | ||
| shell: powershell | ||
| run: | | ||
| Write-Host "Adding CUDA to PATH" | ||
| Write-Host "CUDA Path: $env:RUNNER_TEMP\v12.2\bin" | ||
| Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\v12.2\bin" | ||
| Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\v12.2\extras\CUPTI\lib64" | ||
| Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8\lib" | ||
|
|
||
| - name: Set OnnxRuntimeBuildDirectory | ||
| shell: pwsh | ||
| run: | | ||
| $buildDir = Join-Path ${{ runner.temp }} "build" | ||
| echo "OnnxRuntimeBuildDirectory=$buildDir" >> $env:GITHUB_ENV | ||
|
|
||
| - name: Install ONNX Runtime Wheel | ||
| uses: ./.github/actions/install-onnxruntime-wheel | ||
| with: | ||
| whl-directory: ${{ runner.temp }}\build\RelWithDebInfo\RelWithDebInfo\dist | ||
|
|
||
| - name: Run Tests | ||
| working-directory: ${{ runner.temp }} | ||
| run: | | ||
| npm install -g typescript | ||
| if ($lastExitCode -ne 0) { | ||
| exit $lastExitCode | ||
| } | ||
|
|
||
| python.exe ${{ github.workspace }}\tools\python\update_ctest_path.py "${{ runner.temp }}\build\RelWithDebInfo\CTestTestfile.cmake" "${{ runner.temp }}\build\RelWithDebInfo" | ||
| if ($lastExitCode -ne 0) { | ||
| exit $lastExitCode | ||
| } | ||
|
|
||
| python ${{ github.workspace }}\tools\ci_build\build.py --config RelWithDebInfo --parallel --use_binskim_compliant_compile_flags --build_dir build --skip_submodule_sync --build_shared_lib --test --cmake_generator "Visual Studio 17 2022" --build_wheel --enable_onnx_tests --use_tensorrt --tensorrt_home="${{ runner.temp }}\TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8" --cuda_home="${{ runner.temp }}\v12.2" --use_vcpkg --use_vcpkg_ms_internal_asset_cache --cmake_extra_defines CMAKE_CUDA_ARCHITECTURES=86 | ||
| if ($lastExitCode -ne 0) { | ||
| exit $lastExitCode | ||
| } | ||
| shell: pwsh | ||
|
|
||
| - name: Validate C# native delegates | ||
| run: python tools\ValidateNativeDelegateAttributes.py | ||
| working-directory: ${{ github.workspace }}\csharp | ||
| shell: cmd | ||
| env: | ||
| OrtPackageId: Microsoft.ML.OnnxRuntime.Gpu | ||
| DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | ||
| setVcvars: true | ||
| ALLOW_RELEASED_ONNX_OPSET_ONLY: '0' | ||
| DocUpdateNeeded: false | ||
| ONNXRUNTIME_TEST_GPU_DEVICE_ID: '0' | ||
| AZCOPY_AUTO_LOGIN_TYPE: MSI | ||
| AZCOPY_MSI_CLIENT_ID: 63b63039-6328-442f-954b-5a64d124e5b4 |
Check warning
Code scanning / CodeQL
Workflow does not contain permissions Medium
| name: Windows GPU TensorRT CI Pipeline | ||
| runs-on: windows-2022 | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| with: | ||
| fetch-depth: 0 | ||
| submodules: 'none' | ||
|
|
||
| - uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: '3.12' | ||
| architecture: x64 | ||
|
|
||
| - name: Download CUDA SDK v12.2 | ||
| working-directory: ${{ runner.temp }} | ||
| run: | | ||
| azcopy.exe cp --recursive "https://lotusscus.blob.core.windows.net/models/cuda_sdk/v12.2" . | ||
| dir | ||
| shell: pwsh | ||
|
|
||
| - name: Download TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8 | ||
| run: 'azcopy.exe cp --recursive "https://lotusscus.blob.core.windows.net/models/local/TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8" ${{ runner.temp }}' | ||
| shell: pwsh | ||
|
|
||
| - name: Add CUDA to PATH | ||
| shell: powershell | ||
| run: | | ||
| Write-Host "Adding CUDA to PATH" | ||
| Write-Host "CUDA Path: $env:RUNNER_TEMP\v12.2\bin" | ||
| Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\v12.2\bin" | ||
| Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\v12.2\extras\CUPTI\lib64" | ||
| Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8\lib" | ||
|
|
||
| - uses: actions/setup-node@v5 | ||
| with: | ||
| node-version: '20.x' | ||
|
|
||
| - uses: actions/setup-java@v5 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '17' | ||
| architecture: x64 | ||
|
|
||
| - uses: actions/cache@v4 | ||
| id: onnx-node-tests-cache | ||
| with: | ||
| path: ${{ github.workspace }}/js/test/ | ||
| key: onnxnodetests-${{ hashFiles('js/scripts/prepare-onnx-node-tests.ts') }} | ||
|
|
||
| - name: API Documentation Check and generate | ||
| run: | | ||
| set ORT_DOXY_SRC=${{ github.workspace }} | ||
| set ORT_DOXY_OUT=${{ runner.temp }}\build\RelWithDebInfo\RelWithDebInfo | ||
| mkdir %ORT_DOXY_SRC% | ||
| mkdir %ORT_DOXY_OUT% | ||
| "C:\Program Files\doxygen\bin\doxygen.exe" ${{ github.workspace }}\tools\ci_build\github\Doxyfile_csharp.cfg | ||
| working-directory: ${{ github.workspace }} | ||
| shell: cmd | ||
|
|
||
| - uses: actions/setup-dotnet@v5 | ||
| env: | ||
| PROCESSOR_ARCHITECTURE: x64 | ||
| with: | ||
| dotnet-version: '8.x' | ||
|
|
||
| - name: Use Nuget 6.x | ||
| uses: nuget/setup-nuget@v2 | ||
| with: | ||
| nuget-version: '6.x' | ||
|
|
||
| - name: NuGet restore | ||
| run: nuget restore ${{ github.workspace }}\packages.config -ConfigFile ${{ github.workspace }}\NuGet.config -PackagesDirectory ${{ runner.temp }}\build\RelWithDebInfo | ||
| shell: cmd | ||
|
|
||
| - name: Set OnnxRuntimeBuildDirectory | ||
| shell: pwsh | ||
| run: | | ||
| $buildDir = Join-Path ${{ runner.temp }} "build" | ||
| echo "OnnxRuntimeBuildDirectory=$buildDir" >> $env:GITHUB_ENV | ||
|
|
||
| - name: Build and Clean Binaries | ||
| working-directory: ${{ runner.temp }} | ||
| run: | | ||
| npm install -g typescript | ||
| if ($lastExitCode -ne 0) { | ||
| exit $lastExitCode | ||
| } | ||
| # Execute the build process | ||
| python ${{ github.workspace }}\tools\ci_build\build.py --config RelWithDebInfo --parallel --use_binskim_compliant_compile_flags --build_dir build --skip_submodule_sync --build_shared_lib --build --update --cmake_generator "Visual Studio 17 2022" --build_wheel --enable_onnx_tests --use_tensorrt --tensorrt_home="${{ runner.temp }}\TensorRT-10.9.0.34.Windows10.x86_64.cuda-12.8" --cuda_home="${{ runner.temp }}\v12.2" --use_vcpkg --use_vcpkg_ms_internal_asset_cache --cmake_extra_defines CMAKE_CUDA_ARCHITECTURES=86 | ||
| if ($lastExitCode -ne 0) { | ||
| exit $lastExitCode | ||
| } | ||
|
|
||
| # Clean up the output directory before uploading artifacts | ||
| $outputDir = "${{ runner.temp }}\build\RelWithDebInfo" | ||
| Write-Host "Cleaning up files from $outputDir..." | ||
|
|
||
| Remove-Item -Path "$outputDir\onnxruntime" -Recurse -Force -ErrorAction SilentlyContinue | ||
| Remove-Item -Path "$outputDir\pybind11" -Recurse -Force -ErrorAction SilentlyContinue | ||
| Remove-Item -Path "$outputDir\models" -Recurse -Force -ErrorAction SilentlyContinue | ||
| Remove-Item -Path "$outputDir\vcpkg_installed" -Recurse -Force -ErrorAction SilentlyContinue | ||
| Remove-Item -Path "$outputDir\_deps" -Recurse -Force -ErrorAction SilentlyContinue | ||
| Remove-Item -Path "$outputDir\CMakeCache.txt" -Force -ErrorAction SilentlyContinue | ||
| Remove-Item -Path "$outputDir\CMakeFiles" -Recurse -Force -ErrorAction SilentlyContinue | ||
| # Remove intermediate object files as in the original script | ||
| Remove-Item -Path $outputDir -Include "*.obj" -Recurse | ||
| shell: pwsh | ||
|
|
||
| - name: Upload build artifacts | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: build-artifacts | ||
| path: ${{ runner.temp }}\build | ||
| env: | ||
| OrtPackageId: Microsoft.ML.OnnxRuntime.Gpu | ||
| DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | ||
| setVcvars: true | ||
| ALLOW_RELEASED_ONNX_OPSET_ONLY: '0' | ||
| DocUpdateNeeded: false | ||
| ONNXRUNTIME_TEST_GPU_DEVICE_ID: '0' | ||
| AZCOPY_AUTO_LOGIN_TYPE: MSI | ||
| AZCOPY_MSI_CLIENT_ID: 63b63039-6328-442f-954b-5a64d124e5b4 | ||
|
|
||
| test: |
Check warning
Code scanning / CodeQL
Workflow does not contain permissions Medium
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI 11 days ago
To fix the problem, you should add an explicit permissions block at the root of the workflow file (.github/workflows/windows_tensorrt.yml), which will apply to all jobs unless overridden at the job level. The principle of least privilege dictates starting with the minimum required, and for most CI workflows that do not interact with repository contents except for checking out code, contents: read is usually sufficient. If actions in your workflow require additional permissions (like creating issues or pull requests), you can add those explicitly, but based on the provided steps, only contents: read is needed. Insert the following block after the workflow name, before on::
permissions:
contents: readNo imports or new package installations are required for this YAML change.
-
Copy modified lines R2-R3
| @@ -1,4 +1,6 @@ | ||
| name: Windows GPU TensorRT CI Pipeline | ||
| permissions: | ||
| contents: read | ||
|
|
||
| on: | ||
| push: |
Add pipelines to build and test plugin TRT EP.
Note: This branch is branched off the branch from #527, so please ignore the part in
plugin_execution_providers/tensorrtwhich is the plugin TRT EP implementation.