Skip to content

Enable D3D12 Agility SDK support for Dawn WebGPU builds #6319

Enable D3D12 Agility SDK support for Dawn WebGPU builds

Enable D3D12 Agility SDK support for Dawn WebGPU builds #6319

name: ONNX Runtime Windows GPU Doc Gen CI
on:
push:
branches:
- main
- rel-*
paths:
- '**'
- '!docs/**'
- 'docs/OperatorKernels.md'
- 'docs/ContribOperators.md'
- '!README.md'
- '!CONTRIBUTING.md'
- '!BUILD.md'
- '!js/web/**'
- '!onnxruntime/core/providers/js/**'
pull_request:
branches:
- main
- rel-*
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.ref || github.sha }}
cancel-in-progress: true
jobs:
detect_changes:
name: Detect relevant changes
runs-on: ubuntu-latest
outputs:
run_documentation_build: ${{ steps.changes.outputs.run_documentation_build }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: 'none'
- name: Check changed paths
id: changes
shell: bash
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
GITHUB_EVENT_NAME: ${{ github.event_name }}
run: |
if [[ "$GITHUB_EVENT_NAME" != "pull_request" ]]; then
echo "run_documentation_build=true" >> "$GITHUB_OUTPUT"
exit 0
fi
run_documentation_build=false
while IFS= read -r path; do
case "$path" in
docs/OperatorKernels.md|docs/ContribOperators.md)
run_documentation_build=true
break
;;
docs/*|README.md|CONTRIBUTING.md|BUILD.md|js/web/*|onnxruntime/core/providers/js/*)
;;
*)
run_documentation_build=true
break
;;
esac
done < <(git diff --name-only "$BASE_SHA" "$HEAD_SHA")
echo "run_documentation_build=$run_documentation_build" >> "$GITHUB_OUTPUT"
kernel_documentation_build:
name: Windows GPU Kernel Documentation Build
needs: detect_changes
if: needs.detect_changes.outputs.run_documentation_build == 'true'
env:
OrtPackageId: Microsoft.ML.OnnxRuntime
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
setVcvars: true
ALLOW_RELEASED_ONNX_OPSET_ONLY: '0'
AZCOPY_AUTO_LOGIN_TYPE: MSI
AZCOPY_MSI_CLIENT_ID: d712a4c7-a0cf-4e87-af75-31510eba0a8e
runs-on: [
"self-hosted",
"1ES.Pool=onnxruntime-github-Win2022-GPU-A10",
"JobId=windows-gpu-doc-gen-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}"
]
timeout-minutes: 300
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
with:
fetch-depth: 0
submodules: 'none'
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: '3.12'
architecture: x64
- name: Locate vcvarsall and Setup Env
uses: ./.github/actions/locate-vcvarsall-and-setup-env
with:
architecture: x64
- name: Install Visual Studio Spectre-mitigated libs
uses: ./.github/actions/install-vs-spectre-libs
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.8
working-directory: ${{ runner.temp }}
run: |
azcopy.exe cp --recursive "https://lotusscus.blob.core.windows.net/models/cuda_sdk/v12.8" .
dir
shell: pwsh
- name: Add CUDA to PATH
shell: powershell
run: |
Write-Host "Adding CUDA to PATH"
Write-Host "CUDA Path: $env:RUNNER_TEMP\v12.8\bin"
Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\v12.8\bin"
Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\v12.8\extras\CUPTI\lib64"
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version: '20.x'
- uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
with:
distribution: 'temurin'
java-version: '17'
architecture: x64
- 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@26b0ec14cb23fa6904739307f278c14f94c95bf1 # v5.4.0
env:
PROCESSOR_ARCHITECTURE: x64
with:
dotnet-version: '8.x'
- name: Use Nuget 6.x
uses: nuget/setup-nuget@d105a947828025cd7a980103c35ba2bfae586d0f # v2.0.2
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
working-directory: ${{ runner.temp }}
run: |
python.exe ${{ github.workspace }}\tools\ci_build\build.py --config RelWithDebInfo --build_dir build --skip_submodule_sync --build_csharp --parallel --use_binskim_compliant_compile_flags --cmake_generator "Visual Studio 17 2022" --build_shared_lib --update --build --gen_doc validate --skip_tests --build_wheel --use_dml --use_cuda --cuda_home="$env:RUNNER_TEMP\v12.8" --cmake_extra_defines CMAKE_CUDA_ARCHITECTURES=86 --cmake_extra_defines onnxruntime_BUILD_UNIT_TESTS=OFF
if ($lastExitCode -ne 0) {
exit $lastExitCode
}
Remove-Item "${{ runner.temp }}\build\RelWithDebInfo" -Include "*.obj" -Recurse
shell: pwsh
- name: Validate C# native delegates
run: python tools\ValidateNativeDelegateAttributes.py
working-directory: ${{ github.workspace }}\csharp
shell: cmd
- name: Install ONNX Runtime Wheel
uses: ./.github/actions/install-onnxruntime-wheel
with:
whl-directory: ${{ runner.temp }}\build\RelWithDebInfo\RelWithDebInfo\dist
- name: Generate and validate documentation
working-directory: ${{ runner.temp }}\build
run: |
python.exe ${{ github.workspace }}\tools\ci_build\build.py --config RelWithDebInfo --build_dir ${{ runner.temp }}\build --gen_doc validate
if ($lastExitCode -ne 0) {
exit $lastExitCode
}
shell: pwsh
- name: Upload updated documentation
if: failure()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: updated-docs
path: |
${{ github.workspace }}/docs/OperatorKernels.md
${{ github.workspace }}/docs/ContribOperators.md
kernel_documentation:
name: Windows GPU Kernel Documentation Validation
needs:
- detect_changes
- kernel_documentation_build
if: always()
runs-on: ubuntu-latest
steps:
- name: Check documentation build result
env:
DETECT_CHANGES_RESULT: ${{ needs.detect_changes.result }}
RUN_DOCUMENTATION_BUILD: ${{ needs.detect_changes.outputs.run_documentation_build }}
DOCUMENTATION_BUILD_RESULT: ${{ needs.kernel_documentation_build.result }}
shell: bash
run: |
if [[ "$DETECT_CHANGES_RESULT" != "success" ]]; then
echo "::error::Failed to determine whether the documentation build is required."
exit 1
fi
if [[ "$RUN_DOCUMENTATION_BUILD" != "true" && "$RUN_DOCUMENTATION_BUILD" != "false" ]]; then
echo "::error::Unexpected path detection result: $RUN_DOCUMENTATION_BUILD"
exit 1
fi
if [[ "$RUN_DOCUMENTATION_BUILD" == "true" && "$DOCUMENTATION_BUILD_RESULT" != "success" ]]; then
echo "::error::Documentation build result: $DOCUMENTATION_BUILD_RESULT"
exit 1
fi
if [[ "$RUN_DOCUMENTATION_BUILD" != "true" ]]; then
echo "Documentation build is not required for the changed paths."
fi