From dfe989cabfe42ffa73dac907e9ccda9ac4a09df7 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Thu, 10 Apr 2025 16:24:53 -0400 Subject: [PATCH 01/19] Disable existing CI for PRs --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 812a14117..f996ba79e 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -15,7 +15,7 @@ concurrency: on: push: branches: - - "pull-request/[0-9]+" + #- "pull-request/[0-9]+" - "main" jobs: From 74c7048bb9ae179a1b429c18401e1f648d187517 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Thu, 10 Apr 2025 16:25:26 -0400 Subject: [PATCH 02/19] Get the build CI working with python caching --- .github/workflows/build.yml | 185 ++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 32 +++++++ 2 files changed, 217 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..d756220fe --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,185 @@ +on: + workflow_call: + inputs: + host-platform: + required: true + type: string + cuda-version: + type: string + default: "12.8.0" + +defaults: + run: + shell: bash --noprofile --norc -xeuo pipefail {0} + +permissions: + contents: read # This is required for actions/checkout + +jobs: + build: + strategy: + fail-fast: false + matrix: + python-version: + - "3.9" + - "3.13" + name: py${{ matrix.python-version }}, ${{ inputs.cuda-version }} + runs-on: ${{ (inputs.host-platform == 'linux-64' && 'linux-amd64-cpu8') || + (inputs.host-platform == 'linux-aarch64' && 'linux-arm64-cpu8') || + (inputs.host-platform == 'win-64' && 'windows-2019') }} + steps: + - name: Checkout ${{ github.event.repository.name }} + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup proxy cache + uses: nv-gha-runners/setup-proxy-cache@main + continue-on-error: true + # Skip the cache on Windows nodes outside of our org. + if: ${{ inputs.host-platform != 'win-64' }} + + - name: Set up Python + if: ${{ startsWith(inputs.host-platform, 'linux') }} + id: setup-python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Set up MSVC + if: ${{ startsWith(inputs.host-platform, 'win') }} + uses: ilammy/msvc-dev-cmd@v1 + + - name: Set environment variables + run: | + PYTHON_VERSION_FORMATTED=$(echo '${{ matrix.python-version }}' | tr -d '.') + if [[ "${{ inputs.host-platform }}" == linux* ]]; then + CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-manylinux*" + REPO_DIR=$(pwd) + elif [[ "${{ inputs.host-platform }}" == win* ]]; then + CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-win_amd64" + PWD=$(pwd) + REPO_DIR=$(cygpath -w $PWD) + fi + + echo "CUDA_BINDINGS_PARALLEL_LEVEL=$(nproc)" >> $GITHUB_ENV + CUDA_CORE_ARTIFACT_BASENAME="cuda-core-python${PYTHON_VERSION_FORMATTED}-${{ inputs.host-platform }}" + echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}" >> $GITHUB_ENV + echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${{ github.sha }}" >> $GITHUB_ENV + echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "$REPO_DIR/cuda_core/dist")" >> $GITHUB_ENV + CUDA_BINDINGS_ARTIFACT_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda${{ inputs.cuda-version }}-${{ inputs.host-platform }}" + echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" >> $GITHUB_ENV + echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${{ github.sha }}" >> $GITHUB_ENV + echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "$REPO_DIR/cuda_bindings/dist")" >> $GITHUB_ENV + echo "CIBW_BUILD=${CIBW_BUILD}" >> $GITHUB_ENV + + - name: Dump environment + run: | + env + + - name: Build cuda.core wheel + uses: pypa/cibuildwheel@v2.22.0 + env: + CIBW_BUILD: ${{ env.CIBW_BUILD }} + CIBW_ARCHS_LINUX: "native" + CIBW_BUILD_VERBOSITY: 1 + with: + package-dir: ./cuda_core/ + output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }} + + - name: List the cuda.core artifacts directory + run: | + if [[ "${{ inputs.host-platform }}" == win* ]]; then + export CHOWN=chown + else + export CHOWN="sudo chown" + fi + $CHOWN -R $(whoami) ${{ env.CUDA_CORE_ARTIFACTS_DIR }} + ls -lahR ${{ env.CUDA_CORE_ARTIFACTS_DIR }} + + - name: Check cuda.core wheel + run: | + pip install twine + twine check ${{ env.CUDA_CORE_ARTIFACTS_DIR }}/*.whl + + - name: Upload cuda.core build artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ env.CUDA_CORE_ARTIFACT_NAME }} + path: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}/*.whl + if-no-files-found: error + + - name: Set up mini CTK + uses: ./.github/actions/fetch_ctk + continue-on-error: false + with: + host-platform: ${{ inputs.host-platform }} + cuda-version: ${{ inputs.cuda-version }} + + - name: Build cuda.bindings wheel + uses: pypa/cibuildwheel@v2.22.0 + env: + CIBW_BUILD: ${{ env.CIBW_BUILD }} + CIBW_ARCHS_LINUX: "native" + CIBW_BUILD_VERBOSITY: 1 + # CIBW mounts the host filesystem under /host + CIBW_ENVIRONMENT_LINUX: > + CUDA_PATH=/host/${{ env.CUDA_PATH }} + LIBRARY_PATH=/host/${{ env.CUDA_PATH }}/lib + CUDA_BINDINGS_PARALLEL_LEVEL=${{ env.CUDA_BINDINGS_PARALLEL_LEVEL }} + CIBW_ENVIRONMENT_WINDOWS: > + CUDA_HOME="$(cygpath -w ${{ env.CUDA_PATH }})" + LIB="${CUDA_HOME}\\lib\\x64;${LIB}" + CUDA_BINDINGS_PARALLEL_LEVEL=${{ env.CUDA_BINDINGS_PARALLEL_LEVEL }} + with: + package-dir: ./cuda_bindings/ + output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }} + + - name: List the cuda.bindings artifacts directory + run: | + if [[ "${{ inputs.host-platform }}" == win* ]]; then + export CHOWN=chown + else + export CHOWN="sudo chown" + fi + $CHOWN -R $(whoami) ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }} + ls -lahR ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }} + + - name: Check cuda.bindings wheel + run: | + twine check ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl + + - name: Upload cuda.bindings build artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ env.CUDA_BINDINGS_ARTIFACT_NAME }} + path: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl + if-no-files-found: error + + # We only need/want a single pure python wheel, pick linux-64 index 0. + - name: Build and check cuda-python wheel + if: ${{ strategy.job-index == 0 && inputs.host-platform == 'linux-64' }} + run: | + pushd cuda_python + pip wheel -v --no-deps . + twine check *.whl + popd + + - name: List the cuda-python artifacts directory + if: ${{ strategy.job-index == 0 && inputs.host-platform == 'linux-64' }} + run: | + if [[ "${{ inputs.host-platform }}" == win* ]]; then + export CHOWN=chown + else + export CHOWN="sudo chown" + fi + $CHOWN -R $(whoami) cuda_python/*.whl + ls -lahR cuda_python + + - name: Upload cuda-python build artifacts + if: ${{ strategy.job-index == 0 && inputs.host-platform == 'linux-64' }} + uses: actions/upload-artifact@v4 + with: + name: cuda-python-wheel + path: cuda_python/*.whl + if-no-files-found: error diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..b4cfb000a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: "CI" + +concurrency: + group: ${{ github.workflow }}-${{ + github.ref_name == 'main' && format('ci-main-build-test-{0}', github.run_id) || + format('ci-pr-build-test-on-{0}-against-branch-{1}', github.event_name, github.ref_name) + }} + cancel-in-progress: true + +on: + push: + branches: + - "pull-request/[0-9]+" + - "main" + +jobs: + build: + strategy: + fail-fast: false + matrix: + host-platform: + - linux-64 + - linux-aarch64 + - win-64 + name: Build ${{ matrix.host-platform }} + if: ${{ github.repository_owner == 'nvidia' }} + secrets: inherit + uses: + ./.github/workflows/build.yml + with: + host-platform: ${{ matrix.host-platform }} + cuda-version: "12.8.0" From c251fffe5feac5ca97fcffb500d3a66dd874af85 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Thu, 17 Apr 2025 14:06:29 -0400 Subject: [PATCH 03/19] Add in some testing matrix updates (simple version) --- .github/workflows/ci.yml | 25 +++++++- .github/workflows/test-wheel-linux.yml | 86 +++++++++++++++++++++----- 2 files changed, 93 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4cfb000a..4317c6c30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: host-platform: - linux-64 - linux-aarch64 - - win-64 + #- win-64 name: Build ${{ matrix.host-platform }} if: ${{ github.repository_owner == 'nvidia' }} secrets: inherit @@ -30,3 +30,26 @@ jobs: with: host-platform: ${{ matrix.host-platform }} cuda-version: "12.8.0" + + test-linux: + strategy: + fail-fast: false + # TODO: add driver version here + matrix: + host-platform: + - linux-64 + - linux-aarch64 + name: Test ${{ matrix.host-platform }} + if: ${{ github.repository_owner == 'nvidia' }} + permissions: + contents: read # This is required for actions/checkout + needs: + - build + secrets: inherit + uses: + ./.github/workflows/test-wheel-linux.yml + with: + build-type: pull-request + host-platform: ${{ matrix.host-platform }} + local-ctk: 1 + build-ctk-ver: 12.8.0 diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 2761f8c40..f5eca7f4c 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -7,32 +7,84 @@ name: "CI: Test wheels" on: workflow_call: inputs: - host-platform: + build-type: type: string required: true - python-version: + host-platform: type: string required: true build-ctk-ver: type: string required: true - cuda-version: - type: string - required: true local-ctk: type: string required: true - runner: + matrix_filter: type: string - required: true + default: "." jobs: + compute-matrix: + runs-on: ubuntu-latest + env: + BUILD_TYPE: ${{ inputs.build-type }} + ARCH: ${{ (inputs.host-platform == 'linux-64' && 'amd64') || + (inputs.host-platform == 'linux-aarch64' && 'arm64') }} + outputs: + MATRIX: ${{ steps.compute-matrix.outputs.MATRIX }} + steps: + - name: Validate Test Type + run: | + if [[ "$BUILD_TYPE" != "pull-request" ]] && [[ "$BUILD_TYPE" != "nightly" ]] && [[ "$BUILD_TYPE" != "branch" ]]; then + echo "Invalid build type! Must be one of 'nightly', 'pull-request', or 'branch'." + exit 1 + fi + - name: Compute Python Test Matrix + id: compute-matrix + run: | + set -eo pipefail + # Please keep the matrices sorted in ascending order by the following: + # + # [PY_VER, CUDA_VER, LINUX_VER, GPU, DRIVER] + # + gpu="l4" + if [[ "${ARCH}" == "arm64" ]]; then + gpu="a100" + fi + export MATRICES=" + pull-request: + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu24.04', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: ${gpu}, DRIVER: 'latest' } + nightly: + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: ${gpu}, DRIVER: 'latest' } + " + + # Use the nightly matrix for branch tests + MATRIX_TYPE="${BUILD_TYPE}" + if [[ "${MATRIX_TYPE}" == "branch" ]]; then + MATRIX_TYPE="nightly" + fi + export MATRIX_TYPE + TEST_MATRIX=$(yq -n 'env(MATRICES) | .[strenv(MATRIX_TYPE)]') + export TEST_MATRIX + + MATRIX="$( + yq -n -o json 'env(TEST_MATRIX)' | \ + jq -c '${{ inputs.matrix_filter }} | if (. | length) > 0 then {include: .} else "Error: Empty matrix\n" | halt_error(1) end' + )" + + echo "MATRIX=${MATRIX}" | tee --append "${GITHUB_OUTPUT}" + test: + needs: compute-matrix + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.compute-matrix.outputs.MATRIX) }} + runs-on: "linux-${{ matrix.ARCH }}-gpu-${{ matrix.GPU }}-${{ matrix.DRIVER }}-1" # The build stage could fail but we want the CI to keep moving. if: ${{ github.repository_owner == 'nvidia' && !cancelled() }} - runs-on: ${{ (inputs.runner == 'default' && inputs.host-platform == 'linux-64' && 'linux-amd64-gpu-v100-latest-1') || - (inputs.runner == 'default' && inputs.host-platform == 'linux-aarch64' && 'linux-arm64-gpu-a100-latest-1') || - (inputs.runner == 'H100' && 'linux-amd64-gpu-h100-latest-1') }} # Our self-hosted runners require a container # TODO: use a different (nvidia?) container container: @@ -62,7 +114,7 @@ jobs: - name: Set environment variables run: | - PYTHON_VERSION_FORMATTED=$(echo '${{ inputs.python-version }}' | tr -d '.') + PYTHON_VERSION_FORMATTED=$(echo '${{ matrix.PY_VER }}' | tr -d '.') if [[ "${{ inputs.host-platform }}" == linux* ]]; then REPO_DIR=$(pwd) elif [[ "${{ inputs.host-platform }}" == win* ]]; then @@ -71,14 +123,14 @@ jobs: fi BUILD_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ inputs.build-ctk-ver }})" - TEST_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ inputs.cuda-version }})" + TEST_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ matrix.CUDA_VER }})" if [[ $BUILD_CUDA_MAJOR != $TEST_CUDA_MAJOR ]]; then SKIP_CUDA_BINDINGS_TEST=1 SKIP_CUDA_CORE_CYTHON_TEST=0 else SKIP_CUDA_BINDINGS_TEST=0 BUILD_CUDA_MINOR="$(cut -d '.' -f 2 <<< ${{ inputs.build-ctk-ver }})" - TEST_CUDA_MINOR="$(cut -d '.' -f 2 <<< ${{ inputs.cuda-version }})" + TEST_CUDA_MINOR="$(cut -d '.' -f 2 <<< ${{ matrix.CUDA_VER }})" if [[ $BUILD_CUDA_MINOR != $TEST_CUDA_MINOR ]]; then SKIP_CUDA_CORE_CYTHON_TEST=1 else @@ -179,10 +231,10 @@ jobs: pwd ls -lahR $CUDA_CORE_ARTIFACTS_DIR - - name: Set up Python ${{ inputs.python-version }} + - name: Set up Python ${{ matrix.PY_VER }} uses: actions/setup-python@v5 with: - python-version: ${{ inputs.python-version }} + python-version: ${{ matrix.PY_VER }} env: # we use self-hosted runners on which setup-python behaves weirdly... AGENT_TOOLSDIRECTORY: "/opt/hostedtoolcache" @@ -193,7 +245,7 @@ jobs: continue-on-error: false with: host-platform: ${{ inputs.host-platform }} - cuda-version: ${{ inputs.cuda-version }} + cuda-version: ${{ matrix.CUDA_VER }} - name: Set up latest cuda_sanitizer_api if: ${{ env.SETUP_SANITIZER == '1' }} @@ -261,7 +313,7 @@ jobs: fi popd fi - TEST_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ inputs.cuda-version }})" + TEST_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ matrix.CUDA_VER }})" pushd "${CUDA_CORE_ARTIFACTS_DIR}" pip install $(ls *.whl)["cu${TEST_CUDA_MAJOR}"] popd From 5f771f6b7835c3db4b33ea633236b2473a18d31b Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Fri, 18 Apr 2025 10:17:05 -0400 Subject: [PATCH 04/19] Tweak labeling and CTK install moves to the matrix --- .github/workflows/build.yml | 2 +- .github/workflows/ci.yml | 3 +- .github/workflows/test-wheel-linux.yml | 43 +++++++++++++++----------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d756220fe..bf2fc99a9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: python-version: - "3.9" - "3.13" - name: py${{ matrix.python-version }}, ${{ inputs.cuda-version }} + name: py${{ matrix.python-version }} runs-on: ${{ (inputs.host-platform == 'linux-64' && 'linux-amd64-cpu8') || (inputs.host-platform == 'linux-aarch64' && 'linux-arm64-cpu8') || (inputs.host-platform == 'win-64' && 'windows-2019') }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4317c6c30..e4c0f2979 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: - linux-64 - linux-aarch64 #- win-64 - name: Build ${{ matrix.host-platform }} + name: Build ${{ matrix.host-platform }}, CUDA 12.8.0 if: ${{ github.repository_owner == 'nvidia' }} secrets: inherit uses: @@ -51,5 +51,4 @@ jobs: with: build-type: pull-request host-platform: ${{ matrix.host-platform }} - local-ctk: 1 build-ctk-ver: 12.8.0 diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index f5eca7f4c..3275bee7e 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -16,9 +16,6 @@ on: build-ctk-ver: type: string required: true - local-ctk: - type: string - required: true matrix_filter: type: string default: "." @@ -43,22 +40,31 @@ jobs: id: compute-matrix run: | set -eo pipefail - # Please keep the matrices sorted in ascending order by the following: - # - # [PY_VER, CUDA_VER, LINUX_VER, GPU, DRIVER] - # + + # Set a default GPU based upon architecture. gpu="l4" if [[ "${ARCH}" == "arm64" ]]; then gpu="a100" fi + # Add a special entry for the H100 runner on amd64. + special_runner="" + if [[ "${ARCH}" == "amd64" ]]; then + special_runner="- { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: 'H100', DRIVER: 'latest' }" + fi + + # Please keep the matrices sorted in ascending order by the following: + # + # [PY_VER, CUDA_VER, LOCAL_CTK, GPU, DRIVER] + # export MATRICES=" pull-request: - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: ${gpu}, DRIVER: 'earliest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu24.04', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + ${special_runner} nightly: - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: ${gpu}, DRIVER: 'earliest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LINUX_VER: 'ubuntu22.04', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } " # Use the nightly matrix for branch tests @@ -78,6 +84,7 @@ jobs: echo "MATRIX=${MATRIX}" | tee --append "${GITHUB_OUTPUT}" test: + name: py${{ matrix.PY_VER }}, ${{ matrix.CUDA_VER }}, ${{ (matrix.LOCAL_CTK == '1' && 'local') || 'wheels' }}, GPU ${{ matrix.GPU }} needs: compute-matrix strategy: fail-fast: false @@ -240,7 +247,7 @@ jobs: AGENT_TOOLSDIRECTORY: "/opt/hostedtoolcache" - name: Set up mini CTK - if: ${{ inputs.local-ctk == '1' }} + if: ${{ matrix.LOCAL_CTK == '1' }} uses: ./.github/actions/fetch_ctk continue-on-error: false with: @@ -275,7 +282,7 @@ jobs: if: ${{ env.SKIP_CUDA_BINDINGS_TEST == '0' }} run: | pushd "${CUDA_BINDINGS_ARTIFACTS_DIR}" - if [[ "${{ inputs.local-ctk }}" == 1 ]]; then + if [[ "${{ matrix.LOCAL_CTK }}" == 1 ]]; then ls $CUDA_PATH pip install *.whl else @@ -289,7 +296,7 @@ jobs: # It is a bit convoluted to run the Cython tests against CTK wheels, # so let's just skip them. - if [[ "${{ inputs.local-ctk }}" == 1 ]]; then + if [[ "${{ matrix.LOCAL_CTK }}" == 1 ]]; then if [[ "${{ inputs.host-platform }}" == linux* ]]; then bash tests/cython/build_tests.sh elif [[ "${{ inputs.host-platform }}" == win* ]]; then @@ -306,7 +313,7 @@ jobs: # If mismatch: cuda.bindings is installed from the backport branch. if [[ "${SKIP_CUDA_BINDINGS_TEST}" == 1 ]]; then pushd "${CUDA_BINDINGS_ARTIFACTS_DIR}" - if [[ "${{ inputs.local-ctk }}" == 1 ]]; then + if [[ "${{ matrix.LOCAL_CTK }}" == 1 ]]; then pip install *.whl else pip install $(ls *.whl)[all] @@ -326,7 +333,7 @@ jobs: # so let's just skip them. Also, currently our CI always installs the # latest bindings (from either major version). This is not compatible # with the test requirements. - if [[ "${{ inputs.local-ctk }}" == 1 && "${SKIP_CUDA_CORE_CYTHON_TEST}" == 0 ]]; then + if [[ "${{ matrix.LOCAL_CTK }}" == 1 && "${SKIP_CUDA_CORE_CYTHON_TEST}" == 0 ]]; then pip install cython setuptools # setuptools needed starting PY312 if [[ "${{ inputs.host-platform }}" == linux* ]]; then bash tests/cython/build_tests.sh @@ -340,7 +347,7 @@ jobs: - name: Ensure cuda-python installable run: | - if [[ "${{ inputs.local-ctk }}" == 1 ]]; then + if [[ "${{ matrix.LOCAL_CTK }}" == 1 ]]; then pip install cuda_python*.whl else pip install $(ls cuda_python*.whl)[all] From 2b77ca3117345cc9177b9edca9b37c66210b6831 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Wed, 23 Apr 2025 15:20:15 -0400 Subject: [PATCH 05/19] Add back in Windows build and test --- .github/workflows/build.yml | 1 + .github/workflows/ci.yml | 23 +++++- .github/workflows/test-wheel-windows.yml | 92 ++++++++++++++++++------ 3 files changed, 93 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bf2fc99a9..d002ea830 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,6 +22,7 @@ jobs: matrix: python-version: - "3.9" + - "3.12" - "3.13" name: py${{ matrix.python-version }} runs-on: ${{ (inputs.host-platform == 'linux-64' && 'linux-amd64-cpu8') || diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e4c0f2979..4f3d77ca9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: host-platform: - linux-64 - linux-aarch64 - #- win-64 + - win-64 name: Build ${{ matrix.host-platform }}, CUDA 12.8.0 if: ${{ github.repository_owner == 'nvidia' }} secrets: inherit @@ -34,7 +34,6 @@ jobs: test-linux: strategy: fail-fast: false - # TODO: add driver version here matrix: host-platform: - linux-64 @@ -52,3 +51,23 @@ jobs: build-type: pull-request host-platform: ${{ matrix.host-platform }} build-ctk-ver: 12.8.0 + + test-windows: + strategy: + fail-fast: false + matrix: + host-platform: + - win-64 + name: Test ${{ matrix.host-platform }} + if: ${{ github.repository_owner == 'nvidia' }} + permissions: + contents: read # This is required for actions/checkout + needs: + - build + secrets: inherit + uses: + ./.github/workflows/test-wheel-windows.yml + with: + build-type: pull-request + host-platform: ${{ matrix.host-platform }} + build-ctk-ver: 12.8.0 diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index c741fe161..a1820e890 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -7,30 +7,80 @@ name: "CI: Test wheels" on: workflow_call: inputs: - host-platform: + build-type: type: string required: true - python-version: + host-platform: type: string required: true build-ctk-ver: type: string required: true - cuda-version: + matrix_filter: type: string - required: true - local-ctk: - type: string - required: true - runner: - type: string - required: true + default: "." jobs: + compute-matrix: + runs-on: ubuntu-latest + env: + BUILD_TYPE: ${{ inputs.build-type }} + ARCH: ${{ (inputs.host-platform == 'win-64' && 'amd64') }} + outputs: + MATRIX: ${{ steps.compute-matrix.outputs.MATRIX }} + steps: + - name: Validate Test Type + run: | + if [[ "$BUILD_TYPE" != "pull-request" ]] && [[ "$BUILD_TYPE" != "nightly" ]] && [[ "$BUILD_TYPE" != "branch" ]]; then + echo "Invalid build type! Must be one of 'nightly', 'pull-request', or 'branch'." + exit 1 + fi + - name: Compute Python Test Matrix + id: compute-matrix + run: | + set -eo pipefail + + # Please keep the matrices sorted in ascending order by the following: + # + # [PY_VER, CUDA_VER, LOCAL_CTK] + # + export MATRICES=" + pull-request: + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1' } + nightly: + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1' } + " + + # Use the nightly matrix for branch tests + MATRIX_TYPE="${BUILD_TYPE}" + if [[ "${MATRIX_TYPE}" == "branch" ]]; then + MATRIX_TYPE="nightly" + fi + export MATRIX_TYPE + TEST_MATRIX=$(yq -n 'env(MATRICES) | .[strenv(MATRIX_TYPE)]') + export TEST_MATRIX + + MATRIX="$( + yq -n -o json 'env(TEST_MATRIX)' | \ + jq -c '${{ inputs.matrix_filter }} | if (. | length) > 0 then {include: .} else "Error: Empty matrix\n" | halt_error(1) end' + )" + + echo "MATRIX=${MATRIX}" | tee --append "${GITHUB_OUTPUT}" + test: # The build stage could fail but we want the CI to keep moving. + needs: compute-matrix + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.compute-matrix.outputs.MATRIX) }} if: ${{ github.repository_owner == 'nvidia' && !cancelled() }} - runs-on: ${{ (inputs.runner == 'default' && inputs.host-platform == 'win-64' && 'cuda-python-windows-gpu-github') }} + runs-on: 'cuda-python-windows-gpu-github' steps: - name: Checkout ${{ github.event.repository.name }} uses: actions/checkout@v4 @@ -46,11 +96,11 @@ jobs: - name: Set environment variables run: | - $PYTHON_VERSION_FORMATTED = '${{ inputs.python-version }}' -replace '\.' + $PYTHON_VERSION_FORMATTED = '${{ matrix.PY_VER }}' -replace '\.' $REPO_DIR = $PWD.Path $BUILD_CUDA_MAJOR = '${{ inputs.build-ctk-ver }}' -split '\.' | Select-Object -First 1 - $TEST_CUDA_MAJOR = '${{ inputs.cuda-version }}' -split '\.' | Select-Object -First 1 + $TEST_CUDA_MAJOR = '${{ matrix.CUDA_VER }}' -split '\.' | Select-Object -First 1 if ($BUILD_CUDA_MAJOR -ne $TEST_CUDA_MAJOR) { $SKIP_CUDA_BINDINGS_TEST = 1 } else { @@ -174,24 +224,24 @@ jobs: Get-Location Get-ChildItem -Recurse -Force $env:CUDA_CORE_ARTIFACTS_DIR | Select-Object Mode, LastWriteTime, Length, FullName - - name: Set up Python ${{ inputs.python-version }} + - name: Set up Python ${{ matrix.PY_VER }} uses: actions/setup-python@v5 with: - python-version: ${{ inputs.python-version }} + python-version: ${{ matrix.PY_VER }} - name: Set up mini CTK - if: ${{ inputs.local-ctk == '1' }} + if: ${{ matrix.LOCAL_CTK == '1' }} uses: ./.github/actions/fetch_ctk continue-on-error: false with: host-platform: ${{ inputs.host-platform }} - cuda-version: ${{ inputs.cuda-version }} + cuda-version: ${{ matrix.CUDA_VER }} - name: Run cuda.bindings tests if: ${{ env.SKIP_CUDA_BINDINGS_TEST == '0' }} run: | Push-Location $env:CUDA_BINDINGS_ARTIFACTS_DIR - if ('${{ inputs.local-ctk }}' -eq '1') { + if ('${{ matrix.LOCAL_CTK }}' -eq '1') { Get-ChildItem $env:CUDA_PATH echo $PATH pip install (Get-ChildItem -Filter *.whl).FullName @@ -212,14 +262,14 @@ jobs: # If mismatch: cuda.bindings is installed from the backport branch. if ($env:SKIP_CUDA_BINDINGS_TEST -eq '1') { Push-Location $env:CUDA_BINDINGS_ARTIFACTS_DIR - if ('${{ inputs.local-ctk }}' -eq '1') { + if ('${{ matrix.LOCAL_CTK }}' -eq '1') { pip install (Get-ChildItem -Filter *.whl).FullName } else { pip install "$((Get-ChildItem -Filter *.whl).FullName)[all]" } Pop-Location } - $TEST_CUDA_MAJOR = '${{ inputs.cuda-version }}' -split '\.' | Select-Object -First 1 + $TEST_CUDA_MAJOR = '${{ matrix.CUDA_VER }}' -split '\.' | Select-Object -First 1 Push-Location $env:CUDA_CORE_ARTIFACTS_DIR pip install "$((Get-ChildItem -Filter *.whl).FullName)[cu${TEST_CUDA_MAJOR}]" Pop-Location @@ -231,7 +281,7 @@ jobs: - name: Ensure cuda-python installable run: | - if ('${{ inputs.local-ctk }}' -eq '1') { + if ('${{ matrix.LOCAL_CTK }}' -eq '1') { pip install (Get-ChildItem -Filter cuda_python*.whl).FullName } else { pip install "$((Get-ChildItem -Filter cuda_python*.whl).FullName)[all]" From d2d9def453e0a77810b791744a589de4e23d5e86 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Wed, 23 Apr 2025 15:58:40 -0400 Subject: [PATCH 06/19] Use better naming for the windows test runs --- .github/workflows/test-wheel-windows.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index a1820e890..2114c7cf4 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -74,6 +74,7 @@ jobs: echo "MATRIX=${MATRIX}" | tee --append "${GITHUB_OUTPUT}" test: + name: py${{ matrix.PY_VER }}, ${{ matrix.CUDA_VER }}, ${{ (matrix.LOCAL_CTK == '1' && 'local') || 'wheels' }} # The build stage could fail but we want the CI to keep moving. needs: compute-matrix strategy: From 2a11961013adc741cf4006113a6b27a6da779180 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Thu, 24 Apr 2025 10:28:33 -0400 Subject: [PATCH 07/19] Get CUDA build version from JSON, docs and checks, full matrix --- .github/workflows/build.yml | 2 + .github/workflows/ci.yml | 62 ++++++++++++++++++++++---- .github/workflows/test-wheel-linux.yml | 50 ++++++++++++++++++++- versions.json | 7 +++ 4 files changed, 111 insertions(+), 10 deletions(-) create mode 100644 versions.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d002ea830..5f0cfb7d5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,6 +22,8 @@ jobs: matrix: python-version: - "3.9" + - "3.10" + - "3.11" - "3.12" - "3.13" name: py${{ matrix.python-version }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f3d77ca9..546a46d23 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,7 @@ name: "CI" concurrency: - group: ${{ github.workflow }}-${{ - github.ref_name == 'main' && format('ci-main-build-test-{0}', github.run_id) || - format('ci-pr-build-test-on-{0}-against-branch-{1}', github.event_name, github.ref_name) - }} + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} cancel-in-progress: true on: @@ -14,7 +11,24 @@ on: - "main" jobs: + ci-vars: + runs-on: ubuntu-latest + outputs: + CUDA_BUILD_VER: ${{ steps.get-vars.outputs.cuda_build_ver }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Get CUDA build version + id: get-vars + run: | + cuda_build_ver=$(jq -r .cuda.build.version versions.json) + echo "cuda_build_ver=$cuda_build_ver" >> $GITHUB_OUTPUT + build: + needs: + - ci-vars strategy: fail-fast: false matrix: @@ -22,14 +36,14 @@ jobs: - linux-64 - linux-aarch64 - win-64 - name: Build ${{ matrix.host-platform }}, CUDA 12.8.0 + name: Build ${{ matrix.host-platform }}, CUDA ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }} if: ${{ github.repository_owner == 'nvidia' }} secrets: inherit uses: ./.github/workflows/build.yml with: host-platform: ${{ matrix.host-platform }} - cuda-version: "12.8.0" + cuda-version: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }} test-linux: strategy: @@ -43,6 +57,7 @@ jobs: permissions: contents: read # This is required for actions/checkout needs: + - ci-vars - build secrets: inherit uses: @@ -50,7 +65,7 @@ jobs: with: build-type: pull-request host-platform: ${{ matrix.host-platform }} - build-ctk-ver: 12.8.0 + build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }} test-windows: strategy: @@ -63,6 +78,7 @@ jobs: permissions: contents: read # This is required for actions/checkout needs: + - ci-vars - build secrets: inherit uses: @@ -70,4 +86,34 @@ jobs: with: build-type: pull-request host-platform: ${{ matrix.host-platform }} - build-ctk-ver: 12.8.0 + build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }} + + doc: + name: Docs + if: ${{ github.repository_owner == 'nvidia' }} + # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages + permissions: + id-token: write + contents: write + pull-requests: write + needs: + - ci-vars + - build + secrets: inherit + uses: + ./.github/workflows/build-docs.yml + with: + build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }} + + checks: + name: Check job status + permissions: + checks: read + needs: + - build + - test-linux + - test-windows + - doc + secrets: inherit + uses: + ./.github/workflows/status-check.yml diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 3275bee7e..e13dafb1f 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -58,13 +58,59 @@ jobs: # export MATRICES=" pull-request: - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } ${special_runner} nightly: - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + ${special_runner} " # Use the nightly matrix for branch tests diff --git a/versions.json b/versions.json new file mode 100644 index 000000000..eb1e19f2f --- /dev/null +++ b/versions.json @@ -0,0 +1,7 @@ +{ + "cuda": { + "build": { + "version": "12.8.0" + } + } +} From 231ce39f090191333a3cf6c4efec225b4a172e6a Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Thu, 24 Apr 2025 11:21:49 -0400 Subject: [PATCH 08/19] Use the latest driver for CUDA 12.8.0 testing --- .github/workflows/test-wheel-linux.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index e13dafb1f..16024c787 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -62,54 +62,54 @@ jobs: - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } ${special_runner} nightly: - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } ${special_runner} " From 3c293313270cc0c281833498857e81dcc9ef5563 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Thu, 24 Apr 2025 16:20:10 -0400 Subject: [PATCH 09/19] Trim down the matrix, remove old workflow --- .github/workflows/test-wheel-linux.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 16024c787..23cf64ebe 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -59,30 +59,17 @@ jobs: export MATRICES=" pull-request: - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } ${special_runner} nightly: - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } From ca3f18ee8d999089ba0fc07410677c40f0aa0861 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Thu, 24 Apr 2025 17:13:29 -0400 Subject: [PATCH 10/19] Tweak the matrix for more coverage Add a note on combinations that are known not to work together. --- .github/workflows/test-wheel-linux.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 23cf64ebe..8378222e6 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -56,18 +56,20 @@ jobs: # # [PY_VER, CUDA_VER, LOCAL_CTK, GPU, DRIVER] # + # Note that DRIVER: `earliest` does not work with CUDA 12.8.0 and LOCAL_CTK: 0 does not work with CUDA 12.0.1. + # export MATRICES=" pull-request: - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } ${special_runner} From ef440a5af457b1bd9debd8f14f6ac5521b1f2b94 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 5 May 2025 12:41:23 -0400 Subject: [PATCH 11/19] Suggestion from Leo to retain original workflow name --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 546a46d23..3e64cbd75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,5 @@ -name: "CI" +# Note: This name is referred to in the test job, so make sure any changes are sync'd up! +name: "CI: Build and test" concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} From e5286d0bef093bebe2c79d3b978f56d3e4e9f6db Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 5 May 2025 12:49:29 -0400 Subject: [PATCH 12/19] Rename build.yml and addd comment on action --- .github/workflows/{build.yml => build-wheel.yml} | 2 ++ .github/workflows/ci.yml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) rename .github/workflows/{build.yml => build-wheel.yml} (98%) diff --git a/.github/workflows/build.yml b/.github/workflows/build-wheel.yml similarity index 98% rename from .github/workflows/build.yml rename to .github/workflows/build-wheel.yml index 5f0cfb7d5..c2c016cdc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-wheel.yml @@ -47,6 +47,8 @@ jobs: id: setup-python uses: actions/setup-python@v5 with: + # WAR: setup-python is not relocatable... + # see https://github.com/actions/setup-python/issues/871 python-version: "3.12" - name: Set up MSVC diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e64cbd75..9b9064e8f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: if: ${{ github.repository_owner == 'nvidia' }} secrets: inherit uses: - ./.github/workflows/build.yml + ./.github/workflows/build-wheel.yml with: host-platform: ${{ matrix.host-platform }} cuda-version: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }} From 35716986c6de388bd51aa6743a2d47d0aafefdfd Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 5 May 2025 12:49:59 -0400 Subject: [PATCH 13/19] Adjust bash default for the workflow --- .github/workflows/test-wheel-linux.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 8378222e6..899bafb95 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -20,6 +20,10 @@ on: type: string default: "." +defaults: + run: + shell: bash --noprofile --norc -xeuo pipefail {0} + jobs: compute-matrix: runs-on: ubuntu-latest @@ -39,8 +43,6 @@ jobs: - name: Compute Python Test Matrix id: compute-matrix run: | - set -eo pipefail - # Set a default GPU based upon architecture. gpu="l4" if [[ "${ARCH}" == "arm64" ]]; then @@ -134,9 +136,6 @@ jobs: image: ubuntu:22.04 env: NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} - defaults: - run: - shell: bash --noprofile --norc -xeuo pipefail {0} steps: - name: Ensure GPU is working run: nvidia-smi From 4d1738b5fa9a0cdcee648f45f06a6dfec007f429 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 5 May 2025 12:54:00 -0400 Subject: [PATCH 14/19] Adjust the bash default for workflows --- .github/workflows/test-wheel-windows.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index 2114c7cf4..4dadf1b11 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -23,6 +23,9 @@ on: jobs: compute-matrix: runs-on: ubuntu-latest + defaults: + run: + shell: bash --noprofile --norc -xeuo pipefail {0} env: BUILD_TYPE: ${{ inputs.build-type }} ARCH: ${{ (inputs.host-platform == 'win-64' && 'amd64') }} @@ -38,8 +41,6 @@ jobs: - name: Compute Python Test Matrix id: compute-matrix run: | - set -eo pipefail - # Please keep the matrices sorted in ascending order by the following: # # [PY_VER, CUDA_VER, LOCAL_CTK] From 453531004be068418edcb3de77621a9c18719c5e Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 5 May 2025 13:41:00 -0400 Subject: [PATCH 15/19] Move the JSON file, keep names unique --- .github/workflows/ci.yml | 5 +++-- versions.json => ci/versions.json | 0 2 files changed, 3 insertions(+), 2 deletions(-) rename versions.json => ci/versions.json (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b9064e8f..dd26b8cd5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,6 @@ # Note: This name is referred to in the test job, so make sure any changes are sync'd up! -name: "CI: Build and test" +# Further this is referencing a run in the backport branch to fetch old bindings. +name: "CI" concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} @@ -24,7 +25,7 @@ jobs: - name: Get CUDA build version id: get-vars run: | - cuda_build_ver=$(jq -r .cuda.build.version versions.json) + cuda_build_ver=$(jq -r .cuda.build.version ci/versions.json) echo "cuda_build_ver=$cuda_build_ver" >> $GITHUB_OUTPUT build: diff --git a/versions.json b/ci/versions.json similarity index 100% rename from versions.json rename to ci/versions.json From ab1a327d042ac8e944ccd77a71d035cee425104f Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 5 May 2025 15:40:58 -0400 Subject: [PATCH 16/19] 12.0.1 won't with with CUDA 11.x drivers Also fix the conditional install of git for windows based on local CTK. --- .github/workflows/test-wheel-linux.yml | 2 +- .github/workflows/test-wheel-windows.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index 899bafb95..bcc24f459 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -69,7 +69,7 @@ jobs: - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index 4dadf1b11..8f694e5dd 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -152,7 +152,7 @@ jobs: - name: Install Git for Windows # the GPU runner image does not have Git Bash pre-installed... - if: ${{ inputs.local-ctk == '1' }} + if: ${{ matrix.LOCAL_CTK == '1' }} env: # doesn't seem there's an easy way to avoid hard-coding it? GFW_EXE_URL: https://github.com/git-for-windows/git/releases/download/v2.49.0.windows.1/PortableGit-2.49.0-64-bit.7z.exe @@ -167,7 +167,7 @@ jobs: - name: Install zstd # the GPU runner image does not have zstd pre-installed... and it's needed by actions/cache - if: ${{ inputs.local-ctk == '1' }} + if: ${{ matrix.LOCAL_CTK == '1' }} env: # doesn't seem there's an easy way to avoid hard-coding it? ZSTD_URL: https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-v1.5.7-win64.zip From 2e811f3ec4b765a6ba74203989f968e28df82912 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 5 May 2025 17:38:41 -0400 Subject: [PATCH 17/19] Remove `build-and-test.yml` This is replaced by `ci.yml`. --- .github/workflows/build-and-test.yml | 324 --------------------------- 1 file changed, 324 deletions(-) delete mode 100644 .github/workflows/build-and-test.yml diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml deleted file mode 100644 index f996ba79e..000000000 --- a/.github/workflows/build-and-test.yml +++ /dev/null @@ -1,324 +0,0 @@ -# Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED. -# -# SPDX-License-Identifier: Apache-2.0 - -# Note: This name is referred to in the test job, so make sure any changes are sync'd up! -name: "CI: Build and test" - -concurrency: - group: ${{ github.workflow }}-${{ - github.ref_name == 'main' && format('ci-main-build-test-{0}', github.run_id) || - format('ci-pr-build-test-on-{0}-against-branch-{1}', github.event_name, github.ref_name) - }} - cancel-in-progress: true - -on: - push: - branches: - #- "pull-request/[0-9]+" - - "main" - -jobs: - build: - strategy: - fail-fast: false - matrix: - host-platform: - - linux-64 - - linux-aarch64 - - win-64 - python-version: - - "3.13" - - "3.12" - - "3.11" - - "3.10" - - "3.9" - cuda-version: - # Note: this is for build-time only. - - "12.9.0" - name: Build (${{ matrix.host-platform }}, Python ${{ matrix.python-version }}, CUDA ${{ matrix.cuda-version }}) - if: ${{ github.repository_owner == 'nvidia' }} - permissions: - contents: read # This is required for actions/checkout - runs-on: ${{ (matrix.host-platform == 'linux-64' && 'linux-amd64-cpu8') || - (matrix.host-platform == 'linux-aarch64' && 'linux-arm64-cpu8') || - (matrix.host-platform == 'win-64' && 'windows-2019') }} - # (matrix.host-platform == 'win-64' && 'windows-amd64-cpu8') }} - outputs: - BUILD_CTK_VER: ${{ steps.pass_env.outputs.CUDA_VERSION }} - defaults: - run: - shell: bash --noprofile --norc -xeuo pipefail {0} - steps: - - name: Checkout ${{ github.event.repository.name }} - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - # WAR: setup-python is not relocatable... - # see https://github.com/actions/setup-python/issues/871 - - name: Set up Python ${{ matrix.python-version }} - if: ${{ startsWith(matrix.host-platform, 'linux') }} - id: setup-python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - name: Set up MSVC - if: ${{ startsWith(matrix.host-platform, 'win') }} - uses: ilammy/msvc-dev-cmd@v1 - - - name: Set environment variables - run: | - PYTHON_VERSION_FORMATTED=$(echo '${{ matrix.python-version }}' | tr -d '.') - if [[ "${{ matrix.host-platform }}" == linux* ]]; then - CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-manylinux*" - REPO_DIR=$(pwd) - elif [[ "${{ matrix.host-platform }}" == win* ]]; then - CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-win_amd64" - PWD=$(pwd) - REPO_DIR=$(cygpath -w $PWD) - fi - - echo "CUDA_BINDINGS_PARALLEL_LEVEL=$(nproc)" >> $GITHUB_ENV - CUDA_CORE_ARTIFACT_BASENAME="cuda-core-python${PYTHON_VERSION_FORMATTED}-${{ matrix.host-platform }}" - echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}" >> $GITHUB_ENV - echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${{ github.sha }}" >> $GITHUB_ENV - echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "$REPO_DIR/cuda_core/dist")" >> $GITHUB_ENV - CUDA_BINDINGS_ARTIFACT_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda${{ matrix.cuda-version }}-${{ matrix.host-platform }}" - echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" >> $GITHUB_ENV - echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${{ github.sha }}" >> $GITHUB_ENV - echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "$REPO_DIR/cuda_bindings/dist")" >> $GITHUB_ENV - echo "CIBW_BUILD=${CIBW_BUILD}" >> $GITHUB_ENV - - - name: Dump environment - run: | - env - - - name: Build cuda.core wheel - uses: pypa/cibuildwheel@v2.22.0 - env: - CIBW_BUILD: ${{ env.CIBW_BUILD }} - CIBW_ARCHS_LINUX: "native" - CIBW_BUILD_VERBOSITY: 1 - with: - package-dir: ./cuda_core/ - output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }} - - - name: List the cuda.core artifacts directory - run: | - if [[ "${{ matrix.host-platform }}" == win* ]]; then - export CHOWN=chown - else - export CHOWN="sudo chown" - fi - $CHOWN -R $(whoami) ${{ env.CUDA_CORE_ARTIFACTS_DIR }} - ls -lahR ${{ env.CUDA_CORE_ARTIFACTS_DIR }} - - - name: Check cuda.core wheel - run: | - pip install twine - twine check ${{ env.CUDA_CORE_ARTIFACTS_DIR }}/*.whl - - - name: Upload cuda.core build artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ env.CUDA_CORE_ARTIFACT_NAME }} - path: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}/*.whl - if-no-files-found: error - - - name: Set up mini CTK - uses: ./.github/actions/fetch_ctk - continue-on-error: false - with: - host-platform: ${{ matrix.host-platform }} - cuda-version: ${{ matrix.cuda-version }} - - - name: Build cuda.bindings wheel - uses: pypa/cibuildwheel@v2.22.0 - env: - CIBW_BUILD: ${{ env.CIBW_BUILD }} - CIBW_ARCHS_LINUX: "native" - CIBW_BUILD_VERBOSITY: 1 - # CIBW mounts the host filesystem under /host - CIBW_ENVIRONMENT_LINUX: > - CUDA_PATH=/host/${{ env.CUDA_PATH }} - LIBRARY_PATH=/host/${{ env.CUDA_PATH }}/lib - CUDA_BINDINGS_PARALLEL_LEVEL=${{ env.CUDA_BINDINGS_PARALLEL_LEVEL }} - CIBW_ENVIRONMENT_WINDOWS: > - CUDA_HOME=${{ env.CUDA_PATH }} - LIB="${CUDA_HOME}\\lib\\x64;${LIB}" - CUDA_BINDINGS_PARALLEL_LEVEL=${{ env.CUDA_BINDINGS_PARALLEL_LEVEL }} - with: - package-dir: ./cuda_bindings/ - output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }} - - - name: List the cuda.bindings artifacts directory - run: | - if [[ "${{ matrix.host-platform }}" == win* ]]; then - export CHOWN=chown - else - export CHOWN="sudo chown" - fi - $CHOWN -R $(whoami) ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }} - ls -lahR ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }} - - - name: Check cuda.bindings wheel - run: | - twine check ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl - - - name: Upload cuda.bindings build artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ env.CUDA_BINDINGS_ARTIFACT_NAME }} - path: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl - if-no-files-found: error - - # upload-artifact's "overwrite: true" option has a race condition among parallel - # jobs, so we let job 0 do the work - - name: Build and check cuda-python wheel - if: ${{ strategy.job-index == 0 }} - run: | - pushd cuda_python - pip wheel -v --no-deps . - twine check *.whl - popd - - - name: List the cuda-python artifacts directory - if: ${{ strategy.job-index == 0 }} - run: | - if [[ "${{ matrix.host-platform }}" == win* ]]; then - export CHOWN=chown - else - export CHOWN="sudo chown" - fi - $CHOWN -R $(whoami) cuda_python/*.whl - ls -lahR cuda_python - - - name: Upload cuda-python build artifacts - if: ${{ strategy.job-index == 0 }} - uses: actions/upload-artifact@v4 - with: - name: cuda-python-wheel - path: cuda_python/*.whl - if-no-files-found: error - - - name: Pass environment variables to the next runner - id: pass_env - run: | - echo "CUDA_VERSION=${{ matrix.cuda-version }}" >> $GITHUB_OUTPUT - - test-linux: - strategy: - fail-fast: false - # TODO: add driver version here - matrix: - host-platform: - - linux-64 - - linux-aarch64 - python-version: - - "3.13" - - "3.12" - - "3.11" - - "3.10" - - "3.9" - cuda-version: - # Note: this is for test-time only. - - "12.9.0" - - "12.0.1" - - "11.8.0" - local-ctk: - - 1 # use mini CTK - - 0 # use CTK wheels - runner: - - default - exclude: - # To test this combo would require nontrivial installation steps. - - cuda-version: "12.0.1" - local-ctk: 0 - include: - - host-platform: linux-64 - python-version: "3.12" - cuda-version: "12.9.0" - local-ctk: 1 - runner: H100 - name: Test (${{ matrix.host-platform }}, Python ${{ matrix.python-version }}, CUDA ${{ matrix.cuda-version }}, Runner ${{ matrix.runner }}, ${{ (matrix.local-ctk == '1' && 'local CTK') || 'CTK wheels' }}) - if: ${{ github.repository_owner == 'nvidia' }} - permissions: - contents: read # This is required for actions/checkout - needs: - - build - secrets: inherit - uses: - ./.github/workflows/test-wheel-linux.yml - with: - host-platform: ${{ matrix.host-platform }} - python-version: ${{ matrix.python-version }} - build-ctk-ver: ${{ needs.build.outputs.BUILD_CTK_VER }} - cuda-version: ${{ matrix.cuda-version }} - local-ctk: ${{ matrix.local-ctk}} - runner: ${{ matrix.runner }} - - test-windows: - strategy: - fail-fast: false - # TODO: add driver version here - matrix: - host-platform: - - win-64 - python-version: - - "3.12" - cuda-version: - # Note: this is for test-time only. - - "12.9.0" - - "11.8.0" - local-ctk: - - 1 # use mini CTK - - 0 # use CTK wheels - runner: - - default - name: Test (${{ matrix.host-platform }}, Python ${{ matrix.python-version }}, CUDA ${{ matrix.cuda-version }}, Runner ${{ matrix.runner }}, ${{ (matrix.local-ctk == '1' && 'local CTK') || 'CTK wheels' }}) - if: ${{ github.repository_owner == 'nvidia' }} - permissions: - contents: read # This is required for actions/checkout - needs: - - build - secrets: inherit - uses: - ./.github/workflows/test-wheel-windows.yml - with: - host-platform: ${{ matrix.host-platform }} - python-version: ${{ matrix.python-version }} - build-ctk-ver: ${{ needs.build.outputs.BUILD_CTK_VER }} - cuda-version: ${{ matrix.cuda-version }} - local-ctk: ${{ matrix.local-ctk}} - runner: ${{ matrix.runner }} - - doc: - name: Docs - if: ${{ github.repository_owner == 'nvidia' }} - # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages - permissions: - id-token: write - contents: write - pull-requests: write - needs: - - build - secrets: inherit - uses: - ./.github/workflows/build-docs.yml - with: - build-ctk-ver: ${{ needs.build.outputs.BUILD_CTK_VER }} - - checks: - name: Check job status - permissions: - checks: read - needs: - - build - - test-linux - - test-windows - - doc - secrets: inherit - uses: - ./.github/workflows/status-check.yml From c5eb72ceaf157babfca3176f7c681f329e784507 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Tue, 6 May 2025 10:34:52 -0400 Subject: [PATCH 18/19] Make `cuda-verion` required, add missing copright/license Also pin actions to SHAs (skip ilammy/msvc-dev-cmd for now awaiting update to the allow list). --- .github/workflows/build-wheel.yml | 10 +++++++--- .github/workflows/ci.yml | 4 ++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-wheel.yml b/.github/workflows/build-wheel.yml index c2c016cdc..e776c70ec 100644 --- a/.github/workflows/build-wheel.yml +++ b/.github/workflows/build-wheel.yml @@ -1,3 +1,7 @@ +# Copyright (c) 2025, NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED. +# +# SPDX-License-Identifier: Apache-2.0 + on: workflow_call: inputs: @@ -5,8 +9,8 @@ on: required: true type: string cuda-version: + required: true type: string - default: "12.8.0" defaults: run: @@ -83,7 +87,7 @@ jobs: env - name: Build cuda.core wheel - uses: pypa/cibuildwheel@v2.22.0 + uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3 env: CIBW_BUILD: ${{ env.CIBW_BUILD }} CIBW_ARCHS_LINUX: "native" @@ -122,7 +126,7 @@ jobs: cuda-version: ${{ inputs.cuda-version }} - name: Build cuda.bindings wheel - uses: pypa/cibuildwheel@v2.22.0 + uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3 env: CIBW_BUILD: ${{ env.CIBW_BUILD }} CIBW_ARCHS_LINUX: "native" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd26b8cd5..9cd892c2f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,7 @@ +# Copyright (c) 2025, NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED. +# +# SPDX-License-Identifier: Apache-2.0 + # Note: This name is referred to in the test job, so make sure any changes are sync'd up! # Further this is referencing a run in the backport branch to fetch old bindings. name: "CI" From 959321a1fa67462141e1bee0cedd12d00f8ea272 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Tue, 6 May 2025 16:40:34 -0400 Subject: [PATCH 19/19] Move the build and tests to CUDA 12.9.0 --- .github/workflows/test-wheel-linux.yml | 34 ++++++++++++------------ .github/workflows/test-wheel-windows.yml | 8 +++--- ci/versions.json | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/workflows/test-wheel-linux.yml b/.github/workflows/test-wheel-linux.yml index bcc24f459..5b6fb43e5 100644 --- a/.github/workflows/test-wheel-linux.yml +++ b/.github/workflows/test-wheel-linux.yml @@ -51,56 +51,56 @@ jobs: # Add a special entry for the H100 runner on amd64. special_runner="" if [[ "${ARCH}" == "amd64" ]]; then - special_runner="- { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: 'H100', DRIVER: 'latest' }" + special_runner="- { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: 'H100', DRIVER: 'latest' }" fi # Please keep the matrices sorted in ascending order by the following: # # [PY_VER, CUDA_VER, LOCAL_CTK, GPU, DRIVER] # - # Note that DRIVER: `earliest` does not work with CUDA 12.8.0 and LOCAL_CTK: 0 does not work with CUDA 12.0.1. + # Note that DRIVER: `earliest` does not work with CUDA 12.9.0 and LOCAL_CTK: 0 does not work with CUDA 12.0.1. # export MATRICES=" pull-request: - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'earliest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } ${special_runner} nightly: - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.9', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.10', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.11', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'earliest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '11.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.0.1', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } - - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.8.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.9.0', LOCAL_CTK: '0', GPU: ${gpu}, DRIVER: 'latest' } + - { ARCH: ${ARCH}, PY_VER: '3.13', CUDA_VER: '12.9.0', LOCAL_CTK: '1', GPU: ${gpu}, DRIVER: 'latest' } ${special_runner} " diff --git a/.github/workflows/test-wheel-windows.yml b/.github/workflows/test-wheel-windows.yml index 8f694e5dd..818fb903f 100644 --- a/.github/workflows/test-wheel-windows.yml +++ b/.github/workflows/test-wheel-windows.yml @@ -49,13 +49,13 @@ jobs: pull-request: - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.9.0', LOCAL_CTK: '0' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.9.0', LOCAL_CTK: '1' } nightly: - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '0' } - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '11.8.0', LOCAL_CTK: '1' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '0' } - - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.8.0', LOCAL_CTK: '1' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.9.0', LOCAL_CTK: '0' } + - { ARCH: ${ARCH}, PY_VER: '3.12', CUDA_VER: '12.9.0', LOCAL_CTK: '1' } " # Use the nightly matrix for branch tests diff --git a/ci/versions.json b/ci/versions.json index eb1e19f2f..5608eeb1d 100644 --- a/ci/versions.json +++ b/ci/versions.json @@ -1,7 +1,7 @@ { "cuda": { "build": { - "version": "12.8.0" + "version": "12.9.0" } } }