From 61f352c5f1fd3b4663cddf1132baa27e561287b4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:02:04 +0000 Subject: [PATCH 1/5] Initial plan From ad5736b5c504195b3267a6f1540b99cdfc3242cb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:07:24 +0000 Subject: [PATCH 2/5] Update test workflows to fetch cuda-pathfinder from main branch Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- .github/workflows/test-wheel-linux.yml | 32 ++++++++++++++++++++---- .github/workflows/test-wheel-windows.yml | 23 +++++++++++++---- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 731553084d..518e7fd335 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -149,11 +149,33 @@ jobs: SHA: ${{ github.sha }} run: ./ci/tools/env-vars test - - name: Download cuda-pathfinder build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: cuda-pathfinder-wheel - path: ./cuda_pathfinder + - name: Download cuda-pathfinder build artifacts from main branch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # See https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt. + # gh is needed for artifact fetching. + mkdir -p -m 755 /etc/apt/keyrings \ + && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \ + && cat $out | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \ + && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ + && apt update \ + && apt install gh -y + + MAIN_BRANCH="main" + PATHFINDER_BASENAME="cuda-pathfinder-wheel" + LATEST_MAIN_RUN_ID=$(gh run list -b ${MAIN_BRANCH} -L 1 -w "CI" -s completed -R NVIDIA/cuda-python --json databaseId | jq '.[]| .databaseId') + if [[ "$LATEST_MAIN_RUN_ID" == "" ]]; then + echo "LATEST_MAIN_RUN_ID not found!" + exit 1 + fi + + gh run download $LATEST_MAIN_RUN_ID -p ${PATHFINDER_BASENAME} -R NVIDIA/cuda-python + ls -al $PATHFINDER_BASENAME + mkdir -p ./cuda_pathfinder + mv $PATHFINDER_BASENAME/*.whl ./cuda_pathfinder/ + rmdir $PATHFINDER_BASENAME - name: Download cuda-python build artifacts if: ${{ env.SKIP_CUDA_BINDINGS_TEST == '0'}} diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index 04667bee15..28dc58359b 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -117,11 +117,24 @@ jobs: shell: bash --noprofile --norc -xeuo pipefail {0} run: ./ci/tools/env-vars test - - name: Download cuda-pathfinder build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: cuda-pathfinder-wheel - path: ./cuda_pathfinder + - name: Download cuda-pathfinder build artifacts from main branch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + $MAIN_BRANCH = "main" + $PATHFINDER_BASENAME = "cuda-pathfinder-wheel" + $runData = gh run list -b $MAIN_BRANCH -L 1 -w "CI" -s completed -R NVIDIA/cuda-python --json databaseId | ConvertFrom-Json + if (-not $runData -or $runData.Length -eq 0 -or -not $runData[0].databaseId -or [string]::IsNullOrEmpty($runData[0].databaseId)) { + Write-Host "LATEST_MAIN_RUN_ID not found!" + exit 1 + } + $LATEST_MAIN_RUN_ID = $runData[0].databaseId + + gh run download $LATEST_MAIN_RUN_ID -p $PATHFINDER_BASENAME -R NVIDIA/cuda-python + Get-ChildItem -Path $PATHFINDER_BASENAME + New-Item -Path "./cuda_pathfinder" -ItemType Directory -Force + Move-Item -Path "$PATHFINDER_BASENAME/*.whl" -Destination "./cuda_pathfinder/" + Remove-Item -Path $PATHFINDER_BASENAME -Force - name: Download cuda-python build artifacts if: ${{ env.SKIP_CUDA_BINDINGS_TEST == '0'}} From c110dcf5ba1102f18ea3e21c59a6cfae2178c819 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:29:30 +0000 Subject: [PATCH 3/5] Consolidate GitHub CLI installation steps as requested in PR review Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- .github/workflows/test-wheel-linux.yml | 20 ++++--------- .github/workflows/test-wheel-windows.yml | 38 ++++++++++++------------ 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 518e7fd335..bf169e7fc7 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -149,12 +149,10 @@ jobs: SHA: ${{ github.sha }} run: ./ci/tools/env-vars test - - name: Download cuda-pathfinder build artifacts from main branch - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install GitHub CLI + # gh is needed for artifact fetching in subsequent steps run: | # See https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt. - # gh is needed for artifact fetching. mkdir -p -m 755 /etc/apt/keyrings \ && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \ && cat $out | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \ @@ -163,6 +161,10 @@ jobs: && apt update \ && apt install gh -y + - name: Download cuda-pathfinder build artifacts from main branch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | MAIN_BRANCH="main" PATHFINDER_BASENAME="cuda-pathfinder-wheel" LATEST_MAIN_RUN_ID=$(gh run list -b ${MAIN_BRANCH} -L 1 -w "CI" -s completed -R NVIDIA/cuda-python --json databaseId | jq '.[]| .databaseId') @@ -196,16 +198,6 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - # See https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt. - # gh is needed for artifact fetching. - mkdir -p -m 755 /etc/apt/keyrings \ - && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \ - && cat $out | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \ - && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \ - && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ - && apt update \ - && apt install gh -y - OLD_BRANCH=$(cat .github/BACKPORT_BRANCH) OLD_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda*-${{ inputs.host-platform }}*" LATEST_PRIOR_RUN_ID=$(gh run list -b ${OLD_BRANCH} -L 1 -w "build-and-test.yml" -s completed -R NVIDIA/cuda-python --json databaseId | jq '.[]| .databaseId') diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index 28dc58359b..8abf40b18e 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -117,25 +117,6 @@ jobs: shell: bash --noprofile --norc -xeuo pipefail {0} run: ./ci/tools/env-vars test - - name: Download cuda-pathfinder build artifacts from main branch - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - $MAIN_BRANCH = "main" - $PATHFINDER_BASENAME = "cuda-pathfinder-wheel" - $runData = gh run list -b $MAIN_BRANCH -L 1 -w "CI" -s completed -R NVIDIA/cuda-python --json databaseId | ConvertFrom-Json - if (-not $runData -or $runData.Length -eq 0 -or -not $runData[0].databaseId -or [string]::IsNullOrEmpty($runData[0].databaseId)) { - Write-Host "LATEST_MAIN_RUN_ID not found!" - exit 1 - } - $LATEST_MAIN_RUN_ID = $runData[0].databaseId - - gh run download $LATEST_MAIN_RUN_ID -p $PATHFINDER_BASENAME -R NVIDIA/cuda-python - Get-ChildItem -Path $PATHFINDER_BASENAME - New-Item -Path "./cuda_pathfinder" -ItemType Directory -Force - Move-Item -Path "$PATHFINDER_BASENAME/*.whl" -Destination "./cuda_pathfinder/" - Remove-Item -Path $PATHFINDER_BASENAME -Force - - name: Download cuda-python build artifacts if: ${{ env.SKIP_CUDA_BINDINGS_TEST == '0'}} uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 @@ -165,6 +146,25 @@ jobs: } gh --version + - name: Download cuda-pathfinder build artifacts from main branch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + $MAIN_BRANCH = "main" + $PATHFINDER_BASENAME = "cuda-pathfinder-wheel" + $runData = gh run list -b $MAIN_BRANCH -L 1 -w "CI" -s completed -R NVIDIA/cuda-python --json databaseId | ConvertFrom-Json + if (-not $runData -or $runData.Length -eq 0 -or -not $runData[0].databaseId -or [string]::IsNullOrEmpty($runData[0].databaseId)) { + Write-Host "LATEST_MAIN_RUN_ID not found!" + exit 1 + } + $LATEST_MAIN_RUN_ID = $runData[0].databaseId + + gh run download $LATEST_MAIN_RUN_ID -p $PATHFINDER_BASENAME -R NVIDIA/cuda-python + Get-ChildItem -Path $PATHFINDER_BASENAME + New-Item -Path "./cuda_pathfinder" -ItemType Directory -Force + Move-Item -Path "$PATHFINDER_BASENAME/*.whl" -Destination "./cuda_pathfinder/" + Remove-Item -Path $PATHFINDER_BASENAME -Force + - name: Install zstd # the GPU runner image does not have zstd pre-installed... and it's needed by actions/cache if: ${{ matrix.LOCAL_CTK == '1' }} From 7f46e6c7538e55ea07414f354c8e0eef3d3e6fa2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 23:03:07 +0000 Subject: [PATCH 4/5] Remove pathfinder test steps from test workflows Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- .github/workflows/test-wheel-linux.yml | 19 ------------------- .github/workflows/test-wheel-windows.yml | 21 --------------------- 2 files changed, 40 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index bf169e7fc7..e6c3e79bcd 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -292,11 +292,6 @@ jobs: - name: Set up compute-sanitizer run: setup-sanitizer - - name: Run cuda.pathfinder tests with see_what_works - env: - CUDA_PATHFINDER_TEST_LOAD_NVIDIA_DYNAMIC_LIB_STRICTNESS: see_what_works - run: run-tests pathfinder - - name: Run cuda.bindings tests if: ${{ env.SKIP_CUDA_BINDINGS_TEST == '0' }} env: @@ -317,17 +312,3 @@ jobs: else pip install $(ls cuda_python*.whl)[all] fi - - - name: Install cuda.pathfinder nvidia_wheels_cu12 - if: startsWith(matrix.CUDA_VER, '12.') - run: | - pushd cuda_pathfinder - pip install -v .[nvidia_wheels_cu12] - pip freeze - popd - - - name: Run cuda.pathfinder tests with all_must_work - if: startsWith(matrix.CUDA_VER, '12.') - env: - CUDA_PATHFINDER_TEST_LOAD_NVIDIA_DYNAMIC_LIB_STRICTNESS: all_must_work - run: run-tests pathfinder diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index 8abf40b18e..829ab642c8 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -265,12 +265,6 @@ jobs: host-platform: ${{ inputs.host-platform }} cuda-version: ${{ matrix.CUDA_VER }} - - name: Run cuda.pathfinder tests with see_what_works - env: - CUDA_PATHFINDER_TEST_LOAD_NVIDIA_DYNAMIC_LIB_STRICTNESS: see_what_works - shell: bash --noprofile --norc -xeuo pipefail {0} - run: run-tests pathfinder - - name: Run cuda.bindings tests if: ${{ env.SKIP_CUDA_BINDINGS_TEST == '0' }} env: @@ -294,18 +288,3 @@ jobs: pip install "$((Get-ChildItem -Filter cuda_python*.whl).FullName)[all]" } - - name: Install cuda.pathfinder nvidia_wheels_cu12 - if: startsWith(matrix.CUDA_VER, '12.') - shell: bash --noprofile --norc -xeuo pipefail {0} - run: | - pushd cuda_pathfinder - pip install -v .[nvidia_wheels_cu12] - pip freeze - popd - - - name: Run cuda.pathfinder tests with all_must_work - if: startsWith(matrix.CUDA_VER, '12.') - env: - CUDA_PATHFINDER_TEST_LOAD_NVIDIA_DYNAMIC_LIB_STRICTNESS: all_must_work - shell: bash --noprofile --norc -xeuo pipefail {0} - run: run-tests pathfinder From 402759e8d2c9300f465954b4ea2ea3cf2125493a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 23:52:01 +0000 Subject: [PATCH 5/5] Remove cuda.core test steps from both test workflows Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- .github/workflows/test-wheel-linux.yml | 28 +---------------------- .github/workflows/test-wheel-windows.yml | 29 +----------------------- 2 files changed, 2 insertions(+), 55 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index e6c3e79bcd..204075f470 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -240,29 +240,7 @@ jobs: pwd ls -lahR $CUDA_BINDINGS_CYTHON_TESTS_DIR - - name: Download cuda.core build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: ${{ env.CUDA_CORE_ARTIFACT_NAME }} - path: ${{ env.CUDA_CORE_ARTIFACTS_DIR }} - - - name: Display structure of downloaded cuda.core build artifacts - run: | - pwd - ls -lahR $CUDA_CORE_ARTIFACTS_DIR - - - name: Download cuda.core Cython tests - if: ${{ env.SKIP_CYTHON_TEST == '0' }} - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: ${{ env.CUDA_CORE_ARTIFACT_NAME }}-tests - path: ${{ env.CUDA_CORE_CYTHON_TESTS_DIR }} - - name: Display structure of downloaded cuda.core Cython tests - if: ${{ env.SKIP_CYTHON_TEST == '0' }} - run: | - pwd - ls -lahR $CUDA_CORE_CYTHON_TESTS_DIR - name: Set up Python ${{ matrix.PY_VER }} uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 @@ -299,11 +277,7 @@ jobs: LOCAL_CTK: ${{ matrix.LOCAL_CTK }} run: run-tests bindings - - name: Run cuda.core tests - env: - CUDA_VER: ${{ matrix.CUDA_VER }} - LOCAL_CTK: ${{ matrix.LOCAL_CTK }} - run: run-tests core + - name: Ensure cuda-python installable run: | diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index 829ab642c8..2dd5e63b15 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -228,29 +228,7 @@ jobs: Get-Location Get-ChildItem -Recurse -Force $env:CUDA_BINDINGS_CYTHON_TESTS_DIR | Select-Object Mode, LastWriteTime, Length, FullName - - name: Download cuda.core build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: ${{ env.CUDA_CORE_ARTIFACT_NAME }} - path: ${{ env.CUDA_CORE_ARTIFACTS_DIR }} - - name: Display structure of downloaded cuda.core build artifacts - run: | - Get-Location - Get-ChildItem -Recurse -Force $env:CUDA_CORE_ARTIFACTS_DIR | Select-Object Mode, LastWriteTime, Length, FullName - - - name: Download cuda.core Cython tests - if: ${{ env.SKIP_CYTHON_TEST == '0' }} - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: ${{ env.CUDA_CORE_ARTIFACT_NAME }}-tests - path: ${{ env.CUDA_CORE_CYTHON_TESTS_DIR }} - - - name: Display structure of downloaded cuda.core Cython tests - if: ${{ env.SKIP_CYTHON_TEST == '0' }} - run: | - Get-Location - Get-ChildItem -Recurse -Force $env:CUDA_CORE_CYTHON_TESTS_DIR | Select-Object Mode, LastWriteTime, Length, FullName - name: Set up Python ${{ matrix.PY_VER }} uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 @@ -273,12 +251,7 @@ jobs: shell: bash --noprofile --norc -xeuo pipefail {0} run: run-tests bindings - - name: Run cuda.core tests - env: - CUDA_VER: ${{ matrix.CUDA_VER }} - LOCAL_CTK: ${{ matrix.LOCAL_CTK }} - shell: bash --noprofile --norc -xeuo pipefail {0} - run: run-tests core + - name: Ensure cuda-python installable run: |