Skip to content

Commit 781b0c0

Browse files
authored
Bump the legate SHA, add CUDA 13 wheels (#1665)
Simplify the workflows where reasonable, remove unused matrix variables and add in CUDA 13 builds. Ensure the PRs filter on the latest for both Python and CUDA version.
1 parent 7507411 commit 781b0c0

4 files changed

Lines changed: 67 additions & 51 deletions

File tree

.github/workflows/pr.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
LEGATE_SHA: ${{ steps.legate-sha.outputs.sha }}
2727
steps:
2828
- name: Checkout repository
29-
uses: actions/checkout@v6.0.2
29+
uses: actions/checkout@v6
3030
with:
3131
fetch-depth: 0
3232
- name: Get the Legate SHA
@@ -41,15 +41,15 @@ jobs:
4141
with:
4242
build-type: pull-request
4343
legate-sha: ${{ needs.legate-sha.outputs.LEGATE_SHA }}
44-
matrix_filter: group_by(.ARCH) | map(max_by(.PY_VER|split(".")|map(tonumber)))
44+
matrix_filter: group_by([.ARCH, .CUDA_VER]) | map(max_by(.PY_VER|split(".")|map(tonumber)))
4545
wheels-test:
46-
needs: [wheels-build, legate-sha, telemetry-setup]
46+
needs: [wheels-build, legate-sha]
4747
secrets: inherit
4848
uses: ./.github/workflows/wheels-test.yml
4949
with:
5050
build-type: pull-request
5151
legate-sha: ${{ needs.legate-sha.outputs.LEGATE_SHA }}
52-
matrix_filter: group_by(.ARCH) | map(max_by(.PY_VER|split(".")|map(tonumber)))
52+
matrix_filter: group_by([.ARCH, (.CUDA_VER | split(".")[0])]) | map(max_by([(.CUDA_VER | split(".") | map(tonumber)), (.PY_VER | split(".") | map(tonumber))]))
5353
wheels-mac:
5454
name: wheels-mac (optional)
5555
needs: [legate-sha, telemetry-setup]

.github/workflows/wheels-build.yml

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ on:
1717
node_type:
1818
type: string
1919
default: "cpu16"
20-
cuda_ver:
21-
type: string
22-
default: "12.9.1"
2320
linux_ver:
2421
type: string
2522
default: "rockylinux8"
@@ -58,22 +55,31 @@ jobs:
5855
steps:
5956
- name: Compute Build Matrix
6057
id: compute-matrix
58+
env:
59+
CUDA12_VER: "12.9.1"
60+
CUDA13_VER: "13.0.0"
6161
run: |
6262
set -eo pipefail
6363
6464
# please keep the matrices sorted in ascending order by the following:
6565
#
66-
# [ARCH, PY_VER, CUDA_VER, LINUX_VER]
66+
# [ARCH, CUDA_VER, PY_VER]
6767
#
6868
export MATRIX="
6969
# amd64
70-
- { ARCH: 'amd64', PY_VER: '3.11', TARGET_DEV: 'gpu', BUILD_MODE: 'release' }
71-
- { ARCH: 'amd64', PY_VER: '3.12', TARGET_DEV: 'gpu', BUILD_MODE: 'release' }
72-
- { ARCH: 'amd64', PY_VER: '3.13', TARGET_DEV: 'gpu', BUILD_MODE: 'release' }
70+
- { ARCH: 'amd64', CUDA_VER: '${CUDA12_VER}', PY_VER: '3.11' }
71+
- { ARCH: 'amd64', CUDA_VER: '${CUDA12_VER}', PY_VER: '3.12' }
72+
- { ARCH: 'amd64', CUDA_VER: '${CUDA12_VER}', PY_VER: '3.13' }
73+
- { ARCH: 'amd64', CUDA_VER: '${CUDA13_VER}', PY_VER: '3.11' }
74+
- { ARCH: 'amd64', CUDA_VER: '${CUDA13_VER}', PY_VER: '3.12' }
75+
- { ARCH: 'amd64', CUDA_VER: '${CUDA13_VER}', PY_VER: '3.13' }
7376
# arm64
74-
- { ARCH: 'arm64', PY_VER: '3.11', TARGET_DEV: 'gpu', BUILD_MODE: 'release' }
75-
- { ARCH: 'arm64', PY_VER: '3.12', TARGET_DEV: 'gpu', BUILD_MODE: 'release' }
76-
- { ARCH: 'arm64', PY_VER: '3.13', TARGET_DEV: 'gpu', BUILD_MODE: 'release' }
77+
- { ARCH: 'arm64', CUDA_VER: '${CUDA12_VER}', PY_VER: '3.11' }
78+
- { ARCH: 'arm64', CUDA_VER: '${CUDA12_VER}', PY_VER: '3.12' }
79+
- { ARCH: 'arm64', CUDA_VER: '${CUDA12_VER}', PY_VER: '3.13' }
80+
- { ARCH: 'arm64', CUDA_VER: '${CUDA13_VER}', PY_VER: '3.11' }
81+
- { ARCH: 'arm64', CUDA_VER: '${CUDA13_VER}', PY_VER: '3.12' }
82+
- { ARCH: 'arm64', CUDA_VER: '${CUDA13_VER}', PY_VER: '3.13' }
7783
"
7884
7985
MATRIX="$(
@@ -83,49 +89,55 @@ jobs:
8389
8490
echo "MATRIX=${MATRIX}" | tee --append "${GITHUB_OUTPUT}"
8591
build:
86-
name: ${{ matrix.ARCH }}, py${{ matrix.PY_VER }}, ${{ matrix.TARGET_DEV }}, ${{ matrix.BUILD_MODE }}
92+
name: ${{ matrix.ARCH }}, ${{ matrix.CUDA_VER }} py${{ matrix.PY_VER }}
8793
needs: compute-matrix
8894
timeout-minutes: 90
8995
strategy:
9096
fail-fast: false
9197
matrix: ${{ fromJSON(needs.compute-matrix.outputs.MATRIX) }}
9298
runs-on: "linux-${{ matrix.ARCH }}-${{ inputs.node_type }}"
9399
container:
94-
image: rapidsai/ci-wheel:cuda${{ inputs.cuda_ver }}-${{ inputs.linux_ver }}-py${{ matrix.PY_VER }}
95-
env:
96-
BUILD_MODE: ${{ matrix.BUILD_MODE }}
100+
image: rapidsai/ci-wheel:cuda${{ matrix.CUDA_VER }}-${{ inputs.linux_ver }}-py${{ matrix.PY_VER }}
97101
steps:
98102
- name: Telemetry setup
99103
uses: rapidsai/shared-actions/telemetry-dispatch-setup@main
100104
continue-on-error: true
101105
if: ${{ vars.TELEMETRY_ENABLED == 'true' && github.run_attempt == '1' }}
102106
with:
103-
extra_attributes: "legate.PACKAGER=conda,legate.CUDA_VER=${{ inputs.cuda_ver }},legate.PY_VER=${{ matrix.PY_VER }},legate.ARCH=${{ matrix.ARCH }}"
107+
extra_attributes: "legate.PACKAGER=conda,legate.CUDA_VER=${{ matrix.CUDA_VER }},legate.PY_VER=${{ matrix.PY_VER }},legate.ARCH=${{ matrix.ARCH }}"
104108
env:
105109
GH_TOKEN: ${{ github.token }}
106-
- name: Get the SHA
107-
id: get-sha
108-
run: |
109-
sha=$(echo ${{github.sha}} | head -c 10)
110-
echo "sha=$sha" >> $GITHUB_OUTPUT
111110
- if: github.repository_owner == 'nv-legate'
112111
name: Get AWS credentials for sccache bucket
113112
uses: aws-actions/configure-aws-credentials@v6
114113
with:
115114
aws-region: us-east-2
116115
role-duration-seconds: 28800 # 8 hours
117116
role-to-assume: arn:aws:iam::279114543810:role/gha-oidc-nv-legate
118-
- uses: actions/checkout@v6.0.2
117+
- uses: actions/checkout@v6
119118
with:
120119
repository: ${{ inputs.repo }}
121120
ref: ${{ inputs.sha }}
122121
fetch-depth: 0
123122
- name: Add default paths to the env
124123
run: |
125124
echo "$(pwd)"/continuous_integration/scripts/tools >> "${GITHUB_PATH}"
125+
- name: Extract CUDA major version
126+
env:
127+
CUDA_VER: ${{ matrix.CUDA_VER }}
128+
run: |
129+
cuda_major_ver="${CUDA_VER%%.*}"
130+
case "${cuda_major_ver}" in
131+
12|13) ;;
132+
*)
133+
echo "Unsupported CUDA major version: ${cuda_major_ver}" >&2
134+
exit 1
135+
;;
136+
esac
137+
echo "CUDA_MAJOR_VER=${cuda_major_ver}" >> "${GITHUB_ENV}"
126138
- name: Download the legate wheel
127139
env:
128-
BUILD_NAME: ${{ matrix.ARCH }}-${{ matrix.TARGET_DEV }}-cuda12-py${{ matrix.PY_VER }}
140+
BUILD_NAME: ${{ matrix.ARCH }}-cuda${{ env.CUDA_MAJOR_VER }}-py${{ matrix.PY_VER }}
129141
GH_TOKEN: ${{ secrets.NV_LEGATE_INTER_REPOS_ACCESS_RO }}
130142
run: |
131143
echo "::group::Checking rate limit for API calls"
@@ -139,11 +151,10 @@ jobs:
139151
GH_TOKEN: ${{ github.token }}
140152
- name: Wheel upload
141153
env:
142-
BUILD_SHA: ${{ steps.get-sha.outputs.sha }}
143-
BUILD_NAME: ${{ matrix.ARCH }}-${{ matrix.TARGET_DEV }}-cuda12-py${{ matrix.PY_VER }}
154+
BUILD_NAME: ${{ matrix.ARCH }}-cuda${{ env.CUDA_MAJOR_VER }}-py${{ matrix.PY_VER }}
144155
uses: actions/upload-artifact@v7
145156
with:
146-
name: cupynumeric-wheel-${{ env.BUILD_NAME }}-g${{ env.BUILD_SHA }}
157+
name: cupynumeric-wheel-${{ env.BUILD_NAME }}
147158
path: final-dist/*.whl
148159
- name: Telemetry upload attributes
149160
uses: rapidsai/shared-actions/telemetry-dispatch-stash-job-artifacts@main

.github/workflows/wheels-test.yml

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,17 @@ jobs:
5454
5555
# please keep the matrices sorted in ascending order by the following:
5656
#
57-
# [ARCH, PY_VER, CUDA_VER, LINUX_VER]
57+
# [ARCH, CUDA_VER, PY_VER, LINUX_VER]
5858
#
5959
export MATRIX="
6060
# amd64
61-
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.2.2', TARGET_DEV: 'gpu', GPU: 'l4', LINUX_VER: 'ubuntu22.04' }
62-
- { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.8.0', TARGET_DEV: 'gpu', GPU: 'l4', LINUX_VER: 'ubuntu24.04' }
63-
- { ARCH: 'amd64', PY_VER: '3.13', CUDA_VER: '12.9.1', TARGET_DEV: 'gpu', GPU: 'l4', LINUX_VER: 'ubuntu22.04' }
64-
# arm64 - disabled due to ARM GPU runner availability
65-
# - { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.2.2', TARGET_DEV: 'gpu', GPU: 'a100', LINUX_VER: 'ubuntu22.04' }
66-
# - { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.8.0', TARGET_DEV: 'gpu', GPU: 'a100', LINUX_VER: 'ubuntu24.04' }
67-
# - { ARCH: 'arm64', PY_VER: '3.13', CUDA_VER: '12.9.1', TARGET_DEV: 'gpu', GPU: 'a100', LINUX_VER: 'ubuntu22.04' }
61+
- { ARCH: 'amd64', CUDA_VER: '12.2.2', PY_VER: '3.11', GPU: 'l4', LINUX_VER: 'ubuntu22.04' }
62+
- { ARCH: 'amd64', CUDA_VER: '12.8.0', PY_VER: '3.12', GPU: 'l4', LINUX_VER: 'ubuntu22.04' }
63+
- { ARCH: 'amd64', CUDA_VER: '12.9.1', PY_VER: '3.13', GPU: 'l4', LINUX_VER: 'ubuntu24.04' }
64+
# Disable runtime tests for CUDA 13, this is pending fixes see #1679.
65+
#- { ARCH: 'amd64', CUDA_VER: '13.0.0', PY_VER: '3.11', GPU: 'l4', LINUX_VER: 'ubuntu24.04' }
66+
#- { ARCH: 'amd64', CUDA_VER: '13.1.0', PY_VER: '3.12', GPU: 'l4', LINUX_VER: 'ubuntu24.04' }
67+
#- { ARCH: 'amd64', CUDA_VER: '13.2.0', PY_VER: '3.13', GPU: 'l4', LINUX_VER: 'ubuntu24.04' }
6868
"
6969
7070
MATRIX="$(
@@ -75,7 +75,7 @@ jobs:
7575
echo "MATRIX=${MATRIX}" | tee --append "${GITHUB_OUTPUT}"
7676
7777
build:
78-
name: ${{ matrix.ARCH }}, py${{ matrix.PY_VER }}, ${{ matrix.CUDA_VER }}, ${{ matrix.LINUX_VER }}, ${{ matrix.GPU }}
78+
name: ${{ matrix.ARCH }}, ${{ matrix.CUDA_VER }}, py${{ matrix.PY_VER }}, ${{ matrix.LINUX_VER }}, ${{ matrix.GPU }}
7979
needs: compute-matrix
8080
timeout-minutes: 90
8181
strategy:
@@ -95,12 +95,7 @@ jobs:
9595
extra_attributes: "legate.PACKAGER=conda,legate.CUDA_VER=${{ matrix.CUDA_VER }},legate.PY_VER=${{ matrix.PY_VER }},legate.ARCH=${{ matrix.ARCH }}"
9696
env:
9797
GH_TOKEN: ${{ github.token }}
98-
- name: Get the SHA
99-
id: get-sha
100-
run: |
101-
sha=$(echo ${{github.sha}} | head -c 10)
102-
echo "sha=$sha" >> $GITHUB_OUTPUT
103-
- uses: actions/checkout@v6.0.2
98+
- uses: actions/checkout@v6
10499
with:
105100
repository: ${{ inputs.repo }}
106101
ref: ${{ inputs.sha }}
@@ -113,22 +108,32 @@ jobs:
113108
- name: Setup proxy cache
114109
uses: nv-gha-runners/setup-proxy-cache@main
115110
continue-on-error: true
116-
# Skip the cache on RDS Lab nodes
117-
if: ${{ matrix.GPU != 'v100' && matrix.GPU != 'a100' }}
111+
- name: Extract CUDA major version
112+
env:
113+
CUDA_VER: ${{ matrix.CUDA_VER }}
114+
run: |
115+
cuda_major_ver="${CUDA_VER%%.*}"
116+
case "${cuda_major_ver}" in
117+
12|13) ;;
118+
*)
119+
echo "Unsupported CUDA major version: ${cuda_major_ver}" >&2
120+
exit 1
121+
;;
122+
esac
123+
echo "CUDA_MAJOR_VER=${cuda_major_ver}" >> "${GITHUB_ENV}"
118124
- name: Download the legate wheel
119125
env:
120-
BUILD_NAME: ${{ matrix.ARCH }}-${{ matrix.TARGET_DEV }}-cuda12-py${{ matrix.PY_VER }}
126+
BUILD_NAME: ${{ matrix.ARCH }}-cuda${{ env.CUDA_MAJOR_VER }}-py${{ matrix.PY_VER }}
121127
GH_TOKEN: ${{ secrets.NV_LEGATE_INTER_REPOS_ACCESS_RO }}
122128
run: |
123129
legate-gh-download-artifact ${{ inputs.legate-sha }} "legate-wheel-${{ env.BUILD_NAME }}" "wheel"
124130
- name: Download the wheel from the build job
125131
env:
126-
BUILD_SHA: ${{ steps.get-sha.outputs.sha }}
127-
BUILD_NAME: ${{ matrix.ARCH }}-${{ matrix.TARGET_DEV }}-cuda12-py${{ matrix.PY_VER }}
132+
BUILD_NAME: ${{ matrix.ARCH }}-cuda${{ env.CUDA_MAJOR_VER }}-py${{ matrix.PY_VER }}
128133
uses: actions/download-artifact@v8
129134
with:
130135
path: final-dist
131-
name: cupynumeric-wheel-${{ env.BUILD_NAME }}-g${{ env.BUILD_SHA }}
136+
name: cupynumeric-wheel-${{ env.BUILD_NAME }}
132137
- name: Run tests
133138
run: ${{ inputs.script }}
134139
- name: Telemetry upload attributes

cmake/versions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"artifact_name": "${{ inputs.platform }}-${{ inputs.build-type }}-<<repo>>-python${{ inputs.python-version }}-${{ inputs.target-device }}-release-with_tests-${{ inputs.network }}-<<git_tag>>",
77
"artifact_workflow": "ci-gh.yml",
88
"git_shallow": false,
9-
"git_tag": "6c2ba81617ee91e93be4e79bd0dbb419b06eabd1",
9+
"git_tag": "9fa26241e1b430be032a1315f11d7231ab079dc2",
1010
"git_url": "git@github.com:nv-legate/legate.internal.git",
1111
"nightly_workflow": "ci-gh-nightly-release.yml",
1212
"org": "nv-legate",

0 commit comments

Comments
 (0)