Remove suffix for production, use only L4s in PR CI. #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | ||
workflow_call: | ||
inputs: | ||
build_type: | ||
required: true | ||
type: string | ||
branch: | ||
type: string | ||
date: | ||
type: string | ||
sha: | ||
type: string | ||
repo: | ||
type: string | ||
script: | ||
type: string | ||
default: "ci/test_cpp.sh" | ||
matrix_filter: | ||
type: string | ||
default: "." | ||
container-options: | ||
required: false | ||
type: string | ||
default: "-e _NOOP" | ||
defaults: | ||
run: | ||
shell: bash | ||
permissions: | ||
actions: read | ||
checks: none | ||
contents: read | ||
deployments: none | ||
discussions: none | ||
id-token: write | ||
issues: none | ||
packages: read | ||
pages: none | ||
pull-requests: read | ||
repository-projects: none | ||
security-events: none | ||
statuses: none | ||
jobs: | ||
compute-matrix: | ||
runs-on: ubuntu-latest | ||
env: | ||
BUILD_TYPE: ${{ inputs.build_type }} | ||
outputs: | ||
MATRIX: ${{ steps.compute-matrix.outputs.MATRIX }} | ||
steps: | ||
- name: Validate Test Type | ||
run: | | ||
if [[ "$BUILD_TYPE" != "pull-request" ]] && [[ "$BUILD_TYPE" != "nightly" ]]; then | ||
echo "Invalid build type! Must be 'nightly' or 'pull-request'." | ||
exit 1 | ||
fi | ||
- name: Compute C++ Test Matrix | ||
id: compute-matrix | ||
run: | | ||
set -eo pipefail | ||
# please keep the matrices sorted in ascending order by the following: | ||
# | ||
# [ARCH, PY_VER, CUDA_VER, LINUX_VER, GPU, DRIVER, DEPENDENCIES] | ||
# | ||
export MATRICES=" | ||
pull-request: | ||
# amd64 | ||
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } | ||
- { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.5.1', LINUX_VER: 'ubuntu24.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } | ||
# arm64 | ||
- { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } | ||
nightly: | ||
# amd64 | ||
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.4.3', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'earliest', DEPENDENCIES: 'oldest' } | ||
- { ARCH: 'amd64', PY_VER: '3.10', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } | ||
- { ARCH: 'amd64', PY_VER: '3.11', CUDA_VER: '12.0.1', LINUX_VER: 'rockylinux8', GPU: 'l4', DRIVER: 'latest', DEPENDENCIES: 'latest' } | ||
- { ARCH: 'amd64', PY_VER: '3.12', CUDA_VER: '12.5.1', LINUX_VER: 'ubuntu24.04', GPU: 'h100', DRIVER: 'latest', DEPENDENCIES: 'latest' } | ||
# arm64 | ||
- { ARCH: 'arm64', PY_VER: '3.10', CUDA_VER: '12.2.2', LINUX_VER: 'ubuntu22.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'oldest' } | ||
- { ARCH: 'arm64', PY_VER: '3.11', CUDA_VER: '11.8.0', LINUX_VER: 'ubuntu20.04', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } | ||
- { ARCH: 'arm64', PY_VER: '3.12', CUDA_VER: '12.5.1', LINUX_VER: 'rockylinux8', GPU: 'a100', DRIVER: 'latest', DEPENDENCIES: 'latest' } | ||
" | ||
TEST_MATRIX=$(yq -n 'env(MATRICES) | .[strenv(BUILD_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}" | ||
tests: | ||
name: ${{ matrix.CUDA_VER }}, ${{ matrix.PY_VER }}, ${{ matrix.ARCH }}, ${{ matrix.LINUX_VER }}, ${{ matrix.GPU }}, ${{ matrix.DRIVER }}-driver, ${{ matrix.DEPENDENCIES }}-deps | ||
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 | ||
env: | ||
RAPIDS_ARTIFACTS_DIR: ${{ github.workspace }}/artifacts | ||
RAPIDS_DEPENDENCIES: ${{ matrix.DEPENDENCIES }} | ||
RAPIDS_TESTS_DIR: ${{ github.workspace }}/test-results | ||
container: | ||
image: rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }} | ||
options: ${{ inputs.container-options }} | ||
env: | ||
RAPIDS_BUILD_TYPE: ${{ inputs.build_type }} | ||
NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} | ||
steps: | ||
- name: Telemetry setup | ||
uses: rapidsai/shared-actions/telemetry-dispatch-setup@main | ||
continue-on-error: true | ||
if: ${{ vars.TELEMETRY_ENABLED == 'true' }} | ||
with: | ||
extra_attributes: "rapids.package_type=conda,rapids.operation=test-cpp,rapids.cuda=${{ matrix.CUDA_VER }},rapids.py=${{ matrix.PY_VER }},rapids.arch=${{ matrix.ARCH }},rapids.linux=${{ matrix.LINUX_VER }},rapids.gpu=${{ matrix.GPU }},rapids.driver=${{ matrix.DRIVER }},rapids.deps=${{ matrix.DEPENDENCIES }}" | ||
- uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ vars.AWS_ROLE_ARN }} | ||
aws-region: ${{ vars.AWS_REGION }} | ||
role-duration-seconds: 43200 # 12h | ||
- uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ inputs.repo }} | ||
ref: ${{ inputs.sha }} | ||
fetch-depth: 0 | ||
- name: Standardize repository information | ||
run: | | ||
echo "RAPIDS_REPOSITORY=${{ inputs.repo || github.repository }}" >> "${GITHUB_ENV}" | ||
echo "RAPIDS_SHA=$(git rev-parse HEAD)" >> "${GITHUB_ENV}" | ||
echo "RAPIDS_REF_NAME=${{ inputs.branch || github.ref_name }}" >> "${GITHUB_ENV}" | ||
echo "RAPIDS_NIGHTLY_DATE=${{ inputs.date }}" >> "${GITHUB_ENV}" | ||
- name: C++ tests | ||
run: ${{ inputs.script }} | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
- name: Generate test report | ||
uses: test-summary/[email protected] | ||
with: | ||
paths: "${{ env.RAPIDS_TESTS_DIR }}/*.xml" | ||
if: always() | ||
- name: Upload additional artifacts | ||
if: "!cancelled()" | ||
run: rapids-upload-artifacts-dir cuda${RAPIDS_CUDA_VERSION%%.*}_$(arch) |