@@ -209,170 +209,18 @@ jobs:
209
209
# The build stage could fail but we want the CI to keep moving.
210
210
if : ${{ github.repository_owner == 'nvidia' && !cancelled() }}
211
211
permissions :
212
- id-token : write # This is required for configure-aws-credentials
213
212
contents : read # This is required for actions/checkout
214
- runs-on : ${{ (matrix.runner == 'default' && matrix.host-platform == 'linux-64' && 'linux-amd64-gpu-v100-latest-1') ||
215
- (matrix.runner == 'default' && matrix.host-platform == 'linux-aarch64' && 'linux-arm64-gpu-a100-latest-1') ||
216
- (matrix.runner == 'H100' && 'linux-amd64-gpu-h100-latest-1-testing') }}
217
- # Our self-hosted runners require a container
218
- # TODO: use a different (nvidia?) container
219
- container :
220
- options : -u root --security-opt seccomp=unconfined --shm-size 16g
221
- image : ubuntu:22.04
222
- env :
223
- NVIDIA_VISIBLE_DEVICES : ${{ env.NVIDIA_VISIBLE_DEVICES }}
224
213
needs :
225
214
- build
226
- defaults :
227
- run :
228
- shell : bash --noprofile --norc -xeuo pipefail {0}
229
- steps :
230
- - name : Ensure GPU is working
231
- run : nvidia-smi
232
-
233
- - name : Checkout ${{ github.event.repository.name }}
234
- uses : actions/checkout@v4
235
- with :
236
- fetch-depth : 0
237
-
238
- - name : Set environment variables
239
- run : |
240
- PYTHON_VERSION_FORMATTED=$(echo '${{ matrix.python-version }}' | tr -d '.')
241
- if [[ "${{ matrix.host-platform }}" == linux* ]]; then
242
- REPO_DIR=$(pwd)
243
- elif [[ "${{ matrix.host-platform }}" == win* ]]; then
244
- PWD=$(pwd)
245
- REPO_DIR=$(cygpath -w $PWD)
246
- fi
247
-
248
- BUILD_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ needs.build.outputs.BUILD_CTK_VER }})"
249
- TEST_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ matrix.cuda-version }})"
250
- if [[ $BUILD_CUDA_MAJOR != $TEST_CUDA_MAJOR ]]; then
251
- SKIP_CUDA_BINDINGS_TEST=1
252
- else
253
- SKIP_CUDA_BINDINGS_TEST=0
254
- fi
255
-
256
- # make outputs from the previous job as env vars
257
- CUDA_CORE_ARTIFACT_BASENAME="cuda-core-python${PYTHON_VERSION_FORMATTED}-${{ matrix.host-platform }}"
258
- echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}" >> $GITHUB_ENV
259
- echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}" >> $GITHUB_ENV
260
- echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${{ github.sha }}" >> $GITHUB_ENV
261
- echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "$REPO_DIR/cuda_core/dist")" >> $GITHUB_ENV
262
- CUDA_BINDINGS_ARTIFACT_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda${{ needs.build.outputs.BUILD_CTK_VER }}-${{ matrix.host-platform }}"
263
- echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" >> $GITHUB_ENV
264
- echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${{ github.sha }}" >> $GITHUB_ENV
265
- echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "$REPO_DIR/cuda_bindings/dist")" >> $GITHUB_ENV
266
- echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}" >> $GITHUB_ENV
267
-
268
- - name : Install dependencies
269
- uses : ./.github/actions/install_unix_deps
270
- continue-on-error : false
271
- with :
272
- # gcc for Cython tests, jq/wget for artifact fetching
273
- dependencies : " build-essential jq wget"
274
- dependent_exes : " gcc jq wget"
275
-
276
- - name : Download cuda.bindings build artifacts
277
- if : ${{ env.SKIP_CUDA_BINDINGS_TEST == '0'}}
278
- uses : actions/download-artifact@v4
279
- with :
280
- name : ${{ env.CUDA_BINDINGS_ARTIFACT_NAME }}
281
- path : ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
282
-
283
- - name : Download cuda.bindings build artifacts from the prior branch
284
- if : ${{ env.SKIP_CUDA_BINDINGS_TEST == '1'}}
285
- env :
286
- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
287
- run : |
288
- # See https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt.
289
- # gh is needed for artifact fetching.
290
- mkdir -p -m 755 /etc/apt/keyrings \
291
- && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
292
- && cat $out | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
293
- && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
294
- && 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 \
295
- && apt update \
296
- && apt install gh -y
297
-
298
- OLD_BRANCH=$(cat .github/BACKPORT_BRANCH)
299
- OLD_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda*-${{ matrix.host-platform }}*"
300
- LATEST_PRIOR_RUN_ID=$(gh run list -b ${OLD_BRANCH} -L 1 -w "CI: Build and test" -s completed -R NVIDIA/cuda-python --json databaseId | jq '.[]| .databaseId')
301
- gh run download $LATEST_PRIOR_RUN_ID -p ${OLD_BASENAME} -R NVIDIA/cuda-python
302
- ls -al $OLD_BASENAME
303
- mkdir -p "${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}"
304
- mv $OLD_BASENAME/*.whl "${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}"/
305
-
306
- - name : Display structure of downloaded cuda.bindings artifacts
307
- run : |
308
- pwd
309
- ls -lahR $CUDA_BINDINGS_ARTIFACTS_DIR
310
-
311
- - name : Download cuda.core build artifacts
312
- uses : actions/download-artifact@v4
313
- with :
314
- name : ${{ env.CUDA_CORE_ARTIFACT_NAME }}
315
- path : ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
316
-
317
- - name : Display structure of downloaded cuda.core build artifacts
318
- run : |
319
- pwd
320
- ls -lahR $CUDA_CORE_ARTIFACTS_DIR
321
-
322
- - name : Set up Python ${{ matrix.python-version }}
323
- uses : actions/setup-python@v5
324
- with :
325
- python-version : ${{ matrix.python-version }}
326
- env :
327
- # we use self-hosted runners on which setup-python behaves weirdly...
328
- AGENT_TOOLSDIRECTORY : " /opt/hostedtoolcache"
329
-
330
- - name : Set up mini CTK
331
- uses : ./.github/actions/fetch_ctk
332
- continue-on-error : false
333
- with :
334
- host-platform : ${{ matrix.host-platform }}
335
- cuda-version : ${{ matrix.cuda-version }}
336
-
337
- - name : Run cuda.bindings tests
338
- if : ${{ env.SKIP_CUDA_BINDINGS_TEST == '0' }}
339
- run : |
340
- ls $CUDA_PATH
341
-
342
- pushd "${CUDA_BINDINGS_ARTIFACTS_DIR}"
343
- pip install *.whl
344
- popd
345
-
346
- pushd ./cuda_bindings
347
- pip install -r requirements.txt
348
- pytest -rxXs tests/
349
- if [[ "${{ matrix.host-platform }}" == linux* ]]; then
350
- bash tests/cython/build_tests.sh
351
- elif [[ "${{ matrix.host-platform }}" == win* ]]; then
352
- # TODO: enable this once win-64 runners are up
353
- exit 1
354
- fi
355
- pytest -rxXs tests/cython
356
- popd
357
-
358
- - name : Run cuda.core tests
359
- run : |
360
- # If build/test majors match: cuda.bindings is installed in the previous step.
361
- # If mismatch: cuda.bindings is installed from the backport branch.
362
- if [[ "${SKIP_CUDA_BINDINGS_TEST}" == 1 ]]; then
363
- pushd "${CUDA_BINDINGS_ARTIFACTS_DIR}"
364
- pip install *.whl
365
- popd
366
- fi
367
- TEST_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${{ matrix.cuda-version }})"
368
- pushd "${CUDA_CORE_ARTIFACTS_DIR}"
369
- pip install $(ls *.whl)["cu${TEST_CUDA_MAJOR}"]
370
- popd
371
-
372
- pushd ./cuda_core
373
- pip install -r "tests/requirements-cu${TEST_CUDA_MAJOR}.txt"
374
- pytest -rxXs tests/
375
- popd
215
+ secrets : inherit
216
+ uses :
217
+ ./.github/workflows/test_local_ctk.yml
218
+ with :
219
+ host-platform : ${{ matrix.host-platform }}
220
+ python-version : ${{ matrix.python-version }}
221
+ build_ctk_ver : ${{ needs.build.outputs.BUILD_CTK_VER }}
222
+ cuda-version : ${{ matrix.cuda-version }}
223
+ runner : ${{ matrix.runner }}
376
224
377
225
doc :
378
226
name : Docs
0 commit comments