name: CUDA Version on: push: # run on pushes to LightGBM branches matching certain names branches: - cuda-* # Run manually by clicking a button in the UI workflow_dispatch: # automatically cancel in-progress builds if another commit is pushed concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true # default to 0 permissions # (job-level overrides add the minimal permissions needed) permissions: contents: none jobs: test: # yamllint disable-line rule:line-length name: ${{ matrix.task }} ${{ matrix.cuda_version }} ${{ matrix.method }} (${{ matrix.linux_version }}, ${{ matrix.compiler }}, Python ${{ matrix.python_version }}) # yamllint disable-line rule:line-length # ref: https://docs.github.com/en/actions/concepts/runners/about-larger-runners#specifications-for-gpu-larger-runners runs-on: github-hosted-linux-gpu-amd64 container: image: nvcr.io/nvidia/cuda:${{ matrix.cuda_version }}-devel-${{ matrix.linux_version }} env: CMAKE_BUILD_PARALLEL_LEVEL: 4 COMPILER: ${{ matrix.compiler }} CONDA: /tmp/miniforge DEBIAN_FRONTEND: noninteractive METHOD: ${{ matrix.method }} OS_NAME: linux PYTHON_VERSION: ${{ matrix.python_version }} TASK: ${{ matrix.task }} SKBUILD_STRICT_CONFIG: true options: --gpus all timeout-minutes: 30 permissions: contents: write strategy: fail-fast: false matrix: include: - method: wheel compiler: gcc python_version: "3.11" cuda_version: "13.2.1" linux_version: "ubuntu24.04" task: cuda - method: wheel compiler: gcc python_version: "3.11" cuda_version: "12.9.1" linux_version: "ubuntu22.04" task: cuda - method: source compiler: gcc python_version: "3.14" cuda_version: "12.2.2" linux_version: "ubuntu22.04" task: cuda - method: pip compiler: gcc python_version: "3.12" cuda_version: "11.8.0" linux_version: "ubuntu20.04" task: cuda steps: - name: Install latest git and sudo run: | apt-get update apt-get install --no-install-recommends -y \ ca-certificates \ software-properties-common add-apt-repository ppa:git-core/ppa -y apt-get update apt-get install --no-install-recommends -y \ git \ sudo - name: Checkout repository uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 5 persist-credentials: false submodules: true - name: Setup and run tests env: CI_CUDA_VERSION: ${{ matrix.cuda_version }} run: | export BUILD_ARTIFACTSTAGINGDIRECTORY="${{ github.workspace }}/artifacts" export BUILD_DIRECTORY="$GITHUB_WORKSPACE" export PATH=$CONDA/bin:$PATH # check GPU usage nvidia-smi # build and test $GITHUB_WORKSPACE/.ci/setup.sh $GITHUB_WORKSPACE/.ci/test.sh all-cuda-jobs-successful: if: always() runs-on: ubuntu-latest needs: - test permissions: statuses: read steps: - name: Note that all tests succeeded uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # v1.2.2 with: jobs: ${{ toJSON(needs) }}