From 6d7c9579bb29e04798c0914844f5a9ab678c0ecb Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Thu, 30 Jul 2026 11:49:36 +0800 Subject: [PATCH 1/9] Migrate to CTK 13 as the default for Linux. --- containers/ci_container.yml | 6 +++--- containers/conda_env/linux_cpu_test.yml | 8 +++++--- containers/dockerfile/Dockerfile.clang_tidy | 8 ++++---- containers/dockerfile/Dockerfile.cpu | 16 +--------------- containers/dockerfile/Dockerfile.gpu | 2 +- .../Dockerfile.gpu_build_cuda13_rockylinux8 | 4 ++-- .../Dockerfile.gpu_build_r_rockylinux8 | 2 +- .../dockerfile/Dockerfile.gpu_build_rockylinux8 | 16 +--------------- containers/dockerfile/Dockerfile.jvm | 2 +- containers/dockerfile/Dockerfile.jvm_gpu_build | 2 +- .../dockerfile/Dockerfile.manylinux_2_28_aarch64 | 2 +- 11 files changed, 21 insertions(+), 47 deletions(-) diff --git a/containers/ci_container.yml b/containers/ci_container.yml index 0039303..2b10748 100644 --- a/containers/ci_container.yml +++ b/containers/ci_container.yml @@ -8,7 +8,7 @@ x-rapids_versions: x-cuda_versions: cuda: &cuda_version "12.9.0" - nccl: &nccl_version "2.29.2-1" + nccl: &nccl_version "2.30.7-1" xgb-ci.gpu_build_rockylinux8: container_def: gpu_build_rockylinux8 @@ -29,14 +29,14 @@ xgb-ci.gpu_build_rockylinux8_aarch64: xgb-ci.gpu_build_cuda13_rockylinux8: container_def: gpu_build_cuda13_rockylinux8 build_args: - CUDA_VERSION: "13.0.0" + CUDA_VERSION: "13.3.0" NCCL_VERSION: *nccl_version ARCH: x86_64 xgb-ci.gpu_build_cuda13_rockylinux8_aarch64: container_def: gpu_build_cuda13_rockylinux8 build_args: - CUDA_VERSION: "13.0.0" + CUDA_VERSION: "13.3.0" NCCL_VERSION: *nccl_version ARCH: aarch64 diff --git a/containers/conda_env/linux_cpu_test.yml b/containers/conda_env/linux_cpu_test.yml index 26db088..2e1f9f4 100644 --- a/containers/conda_env/linux_cpu_test.yml +++ b/containers/conda_env/linux_cpu_test.yml @@ -27,19 +27,21 @@ dependencies: - pytest - pytest-timeout - pytest-cov -- python-kubernetes - urllib3 - jsonschema - loky>=3.5.1 - pyarrow +# Federated learning +- libgrpc - protobuf -- cloudpickle -- modin # PySpark +- cloudpickle - pyspark>=4.0 - grpcio - grpcio-status - googleapis-common-protos - zstandard +# misc +- modin - pip: - py-ubjson diff --git a/containers/dockerfile/Dockerfile.clang_tidy b/containers/dockerfile/Dockerfile.clang_tidy index c353bf7..d416609 100644 --- a/containers/dockerfile/Dockerfile.clang_tidy +++ b/containers/dockerfile/Dockerfile.clang_tidy @@ -16,16 +16,16 @@ RUN \ # Install clang-tidy: https://apt.llvm.org/ RUN \ - apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main" && \ + apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-21 main" && \ wget -O llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key && \ apt-key add ./llvm-snapshot.gpg.key && \ rm llvm-snapshot.gpg.key && \ apt-get update && \ - apt-get install -y clang-tidy-19 clang-19 libomp-19-dev + apt-get install -y clang-tidy-21 clang-21 libomp-21-dev # Set default clang-tidy version -RUN update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-19 100 && \ - update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100 +RUN update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-21 100 && \ + update-alternatives --install /usr/bin/clang clang /usr/bin/clang-21 100 # Install Python packages RUN pip3 install cmake diff --git a/containers/dockerfile/Dockerfile.cpu b/containers/dockerfile/Dockerfile.cpu index 626828b..7a6da46 100644 --- a/containers/dockerfile/Dockerfile.cpu +++ b/containers/dockerfile/Dockerfile.cpu @@ -1,6 +1,6 @@ FROM ubuntu:22.04 ARG ARCH=x86_64 -ARG MINIFORGE_VERSION=24.9.2-0 +ARG MINIFORGE_VERSION=26.3.2-3 SHELL ["/bin/bash", "-c"] @@ -26,20 +26,6 @@ RUN \ wget -nv -O conda.sh https://github.com/conda-forge/miniforge/releases/download/$MINIFORGE_VERSION/Miniforge3-$MINIFORGE_VERSION-Linux-${ARCH}.sh && \ bash conda.sh -b -p /opt/miniforge -# Install gRPC -# Patch Abseil to apply https://github.com/abseil/abseil-cpp/issues/1629 -RUN git clone -b v1.65.4 https://github.com/grpc/grpc.git \ - --recurse-submodules --depth 1 && \ - pushd grpc && \ - pushd third_party/abseil-cpp && \ - git fetch origin master && \ - git cherry-pick -n cfde5f74e276049727f9556f13473a59fe77d9eb && \ - popd && \ - cmake -S . -B build -GNinja -DCMAKE_INSTALL_PREFIX=/opt/grpc -DCMAKE_CXX_VISIBILITY_PRESET=hidden && \ - cmake --build build --target install && \ - popd && \ - rm -rf grpc - RUN mamba install awscli -y # install awscli into base # Create new Conda environment diff --git a/containers/dockerfile/Dockerfile.gpu b/containers/dockerfile/Dockerfile.gpu index 75fb92a..deed401 100644 --- a/containers/dockerfile/Dockerfile.gpu +++ b/containers/dockerfile/Dockerfile.gpu @@ -5,7 +5,7 @@ ARG RAPIDS_VERSION # Should be first 4 digits (e.g. 24.06) ARG NCCL_VERSION ARG ARCH=x86_64 -ARG MINIFORGE_VERSION=24.9.2-0 +ARG MINIFORGE_VERSION=26.3.2-3 ARG PYTHON_VERSION=3.12 SHELL ["/bin/bash", "-c"] diff --git a/containers/dockerfile/Dockerfile.gpu_build_cuda13_rockylinux8 b/containers/dockerfile/Dockerfile.gpu_build_cuda13_rockylinux8 index 055ded3..4905974 100644 --- a/containers/dockerfile/Dockerfile.gpu_build_cuda13_rockylinux8 +++ b/containers/dockerfile/Dockerfile.gpu_build_cuda13_rockylinux8 @@ -3,7 +3,7 @@ FROM nvcr.io/nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 ARG CUDA_VERSION ARG NCCL_VERSION ARG ARCH=x86_64 -ARG MINIFORGE_VERSION=25.11.0-1 +ARG MINIFORGE_VERSION=26.3.2-3 ARG CMAKE_VERSION=4.1.0 SHELL ["/bin/bash", "-c"] @@ -36,7 +36,7 @@ RUN \ export NCCL_VERSION=$NCCL_VERSION && \ dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/${CUDA_REPO_ARCH}/cuda-rhel8.repo && \ dnf -y update && \ - dnf install -y libnccl-${NCCL_VERSION}+cuda13.1 libnccl-devel-${NCCL_VERSION}+cuda13.1 libnccl-static-${NCCL_VERSION}+cuda13.1 + dnf install -y libnccl-${NCCL_VERSION}+cuda${CUDA_SHORT} libnccl-devel-${NCCL_VERSION}+cuda${CUDA_SHORT} libnccl-static-${NCCL_VERSION}+cuda${CUDA_SHORT} # Install lightweight sudo (not bound to TTY) RUN sh /scripts/install_gosu.sh diff --git a/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 b/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 index 58cdc79..42134f0 100644 --- a/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 +++ b/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 @@ -2,7 +2,7 @@ ARG CUDA_VERSION=notset FROM nvcr.io/nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 ARG CUDA_VERSION ARG R_VERSION -ARG MINIFORGE_VERSION=24.9.2-0 +ARG MINIFORGE_VERSION=26.3.2-3 ARG CMAKE_VERSION=3.31.2 SHELL ["/bin/bash", "-c"] diff --git a/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 b/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 index bb5f17c..af13c1c 100644 --- a/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 +++ b/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 @@ -4,7 +4,7 @@ ARG CUDA_VERSION ARG NCCL_VERSION ARG RAPIDS_VERSION ARG ARCH=x86_64 -ARG MINIFORGE_VERSION=24.9.2-0 +ARG MINIFORGE_VERSION=26.3.2-3 ARG CMAKE_VERSION=3.31.2 SHELL ["/bin/bash", "-c"] @@ -39,20 +39,6 @@ RUN \ dnf -y update && \ dnf install -y libnccl-${NCCL_VERSION}+cuda${CUDA_SHORT} libnccl-devel-${NCCL_VERSION}+cuda${CUDA_SHORT} -# Install gRPC -# Patch Abseil to apply https://github.com/abseil/abseil-cpp/issues/1629 -RUN git clone -b v1.65.4 https://github.com/grpc/grpc.git \ - --recurse-submodules --depth 1 && \ - pushd grpc && \ - pushd third_party/abseil-cpp && \ - git fetch origin master && \ - git cherry-pick -n cfde5f74e276049727f9556f13473a59fe77d9eb && \ - popd && \ - cmake -S . -B build -GNinja -DCMAKE_INSTALL_PREFIX=/opt/grpc -DCMAKE_CXX_VISIBILITY_PRESET=hidden && \ - cmake --build build --target install && \ - popd && \ - rm -rf grpc - # Install RMM # Patch out -Werror RUN git clone -b v${RAPIDS_VERSION}.00 https://github.com/rapidsai/rmm.git --recurse-submodules --depth 1 && \ diff --git a/containers/dockerfile/Dockerfile.jvm b/containers/dockerfile/Dockerfile.jvm index 85392e5..1feea6e 100644 --- a/containers/dockerfile/Dockerfile.jvm +++ b/containers/dockerfile/Dockerfile.jvm @@ -1,5 +1,5 @@ FROM rockylinux:8 -ARG MINIFORGE_VERSION=24.9.2-0 +ARG MINIFORGE_VERSION=26.3.2-3 ARG CMAKE_VERSION=3.31.2 ARG MAVEN_VERSION=3.9.16 diff --git a/containers/dockerfile/Dockerfile.jvm_gpu_build b/containers/dockerfile/Dockerfile.jvm_gpu_build index b6ff0e5..1cf9626 100644 --- a/containers/dockerfile/Dockerfile.jvm_gpu_build +++ b/containers/dockerfile/Dockerfile.jvm_gpu_build @@ -2,7 +2,7 @@ ARG CUDA_VERSION=notset FROM nvcr.io/nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 ARG CUDA_VERSION ARG NCCL_VERSION -ARG MINIFORGE_VERSION=24.9.2-0 +ARG MINIFORGE_VERSION=26.3.2-3 ARG CMAKE_VERSION=3.31.2 ARG MAVEN_VERSION=3.9.16 diff --git a/containers/dockerfile/Dockerfile.manylinux_2_28_aarch64 b/containers/dockerfile/Dockerfile.manylinux_2_28_aarch64 index 0a490fb..d9fa794 100644 --- a/containers/dockerfile/Dockerfile.manylinux_2_28_aarch64 +++ b/containers/dockerfile/Dockerfile.manylinux_2_28_aarch64 @@ -1,5 +1,5 @@ FROM quay.io/pypa/manylinux_2_28_aarch64 -ARG MINIFORGE_VERSION=24.9.2-0 +ARG MINIFORGE_VERSION=26.3.2-3 SHELL ["/bin/bash", "-c"] From 84da0e2432224b220b16eb80cf8848cc663a674a Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Thu, 30 Jul 2026 11:58:24 +0800 Subject: [PATCH 2/9] cmake version. --- containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 | 2 +- containers/dockerfile/Dockerfile.gpu_build_rockylinux8 | 2 +- containers/dockerfile/Dockerfile.jvm | 2 +- containers/dockerfile/Dockerfile.jvm_gpu_build | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 b/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 index 42134f0..4b0dcd5 100644 --- a/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 +++ b/containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8 @@ -3,7 +3,7 @@ FROM nvcr.io/nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 ARG CUDA_VERSION ARG R_VERSION ARG MINIFORGE_VERSION=26.3.2-3 -ARG CMAKE_VERSION=3.31.2 +ARG CMAKE_VERSION=4.1.0 SHELL ["/bin/bash", "-c"] diff --git a/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 b/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 index af13c1c..6273b93 100644 --- a/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 +++ b/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 @@ -5,7 +5,7 @@ ARG NCCL_VERSION ARG RAPIDS_VERSION ARG ARCH=x86_64 ARG MINIFORGE_VERSION=26.3.2-3 -ARG CMAKE_VERSION=3.31.2 +ARG CMAKE_VERSION=4.1.0 SHELL ["/bin/bash", "-c"] diff --git a/containers/dockerfile/Dockerfile.jvm b/containers/dockerfile/Dockerfile.jvm index 1feea6e..3e5e7be 100644 --- a/containers/dockerfile/Dockerfile.jvm +++ b/containers/dockerfile/Dockerfile.jvm @@ -1,6 +1,6 @@ FROM rockylinux:8 ARG MINIFORGE_VERSION=26.3.2-3 -ARG CMAKE_VERSION=3.31.2 +ARG CMAKE_VERSION=4.1.0 ARG MAVEN_VERSION=3.9.16 SHELL ["/bin/bash", "-c"] diff --git a/containers/dockerfile/Dockerfile.jvm_gpu_build b/containers/dockerfile/Dockerfile.jvm_gpu_build index 1cf9626..d57cf94 100644 --- a/containers/dockerfile/Dockerfile.jvm_gpu_build +++ b/containers/dockerfile/Dockerfile.jvm_gpu_build @@ -3,7 +3,7 @@ FROM nvcr.io/nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 ARG CUDA_VERSION ARG NCCL_VERSION ARG MINIFORGE_VERSION=26.3.2-3 -ARG CMAKE_VERSION=3.31.2 +ARG CMAKE_VERSION=4.1.0 ARG MAVEN_VERSION=3.9.16 SHELL ["/bin/bash", "-c"] From cfde442696c7d384610a8e5c86c205de5be03e41 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Thu, 30 Jul 2026 12:34:36 +0800 Subject: [PATCH 3/9] all images. --- .github/workflows/containers.yml | 6 +++--- containers/ci_container.yml | 16 +++++++++------- ...8 => Dockerfile.gpu_build_cuda12_rockylinux8} | 2 +- containers/extract_build_args.sh | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) rename containers/dockerfile/{Dockerfile.gpu_build_cuda13_rockylinux8 => Dockerfile.gpu_build_cuda12_rockylinux8} (95%) diff --git a/.github/workflows/containers.yml b/.github/workflows/containers.yml index fb57c93..b431c3f 100644 --- a/.github/workflows/containers.yml +++ b/.github/workflows/containers.yml @@ -38,7 +38,7 @@ jobs: - xgb-ci.gpu - xgb-ci.gpu_build_r_rockylinux8 - xgb-ci.gpu_build_rockylinux8 - - xgb-ci.gpu_build_cuda13_rockylinux8 + - xgb-ci.gpu_build_cuda12_rockylinux8 - xgb-ci.jvm - xgb-ci.jvm_gpu_build - xgb-ci.manylinux_2_28_x86_64 @@ -50,10 +50,10 @@ jobs: runner: linux-arm64-cpu - image_repo: xgb-ci.manylinux_2_28_aarch64 runner: linux-arm64-cpu - - image_repo: xgb-ci.gpu_build_cuda13_rockylinux8_aarch64 - runner: linux-arm64-cpu - image_repo: xgb-ci.gpu_build_rockylinux8_aarch64 runner: linux-arm64-cpu + - image_repo: xgb-ci.gpu_build_cuda12_rockylinux8_aarch64 + runner: linux-arm64-cpu - image_repo: xgb-ci.cpu_aarch64 runner: linux-arm64-cpu - image_repo: xgb-ci.gpu_aarch64 diff --git a/containers/ci_container.yml b/containers/ci_container.yml index 2b10748..9561143 100644 --- a/containers/ci_container.yml +++ b/containers/ci_container.yml @@ -7,7 +7,8 @@ x-rapids_versions: stable: &rapids_version "26.04" x-cuda_versions: - cuda: &cuda_version "12.9.0" + default: &cuda_version "13.3.0" + cuda12: &cuda12_version "12.9.0" nccl: &nccl_version "2.30.7-1" xgb-ci.gpu_build_rockylinux8: @@ -26,17 +27,18 @@ xgb-ci.gpu_build_rockylinux8_aarch64: RAPIDS_VERSION: *rapids_version ARCH: aarch64 -xgb-ci.gpu_build_cuda13_rockylinux8: - container_def: gpu_build_cuda13_rockylinux8 +# CUDA 12 is used only to build the xgboost-cu12 PyPI package. +xgb-ci.gpu_build_cuda12_rockylinux8: + container_def: gpu_build_cuda12_rockylinux8 build_args: - CUDA_VERSION: "13.3.0" + CUDA_VERSION: *cuda12_version NCCL_VERSION: *nccl_version ARCH: x86_64 -xgb-ci.gpu_build_cuda13_rockylinux8_aarch64: - container_def: gpu_build_cuda13_rockylinux8 +xgb-ci.gpu_build_cuda12_rockylinux8_aarch64: + container_def: gpu_build_cuda12_rockylinux8 build_args: - CUDA_VERSION: "13.3.0" + CUDA_VERSION: *cuda12_version NCCL_VERSION: *nccl_version ARCH: aarch64 diff --git a/containers/dockerfile/Dockerfile.gpu_build_cuda13_rockylinux8 b/containers/dockerfile/Dockerfile.gpu_build_cuda12_rockylinux8 similarity index 95% rename from containers/dockerfile/Dockerfile.gpu_build_cuda13_rockylinux8 rename to containers/dockerfile/Dockerfile.gpu_build_cuda12_rockylinux8 index 4905974..8e185bd 100644 --- a/containers/dockerfile/Dockerfile.gpu_build_cuda13_rockylinux8 +++ b/containers/dockerfile/Dockerfile.gpu_build_cuda12_rockylinux8 @@ -36,7 +36,7 @@ RUN \ export NCCL_VERSION=$NCCL_VERSION && \ dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/${CUDA_REPO_ARCH}/cuda-rhel8.repo && \ dnf -y update && \ - dnf install -y libnccl-${NCCL_VERSION}+cuda${CUDA_SHORT} libnccl-devel-${NCCL_VERSION}+cuda${CUDA_SHORT} libnccl-static-${NCCL_VERSION}+cuda${CUDA_SHORT} + dnf install -y libnccl-${NCCL_VERSION}+cuda${CUDA_SHORT} libnccl-devel-${NCCL_VERSION}+cuda${CUDA_SHORT} # Install lightweight sudo (not bound to TTY) RUN sh /scripts/install_gosu.sh diff --git a/containers/extract_build_args.sh b/containers/extract_build_args.sh index 2d4985a..72ef422 100755 --- a/containers/extract_build_args.sh +++ b/containers/extract_build_args.sh @@ -5,7 +5,7 @@ ## Example input: ## xgb-ci.clang_tidy ## Example output: -## CONTAINER_DEF='clang_tidy' BUILD_ARGS='--build-arg CUDA_VERSION_ARG=12.4.1' +## CONTAINER_DEF='clang_tidy' BUILD_ARGS='--build-arg CUDA_VERSION=13.3.0' if [ "$#" -ne 1 ]; then echo "Usage: $0 [image_repo]" From f7dc1a5e759e9efa01daad23234f7dfb40c1f099 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Thu, 30 Jul 2026 18:32:27 +0800 Subject: [PATCH 4/9] clang, rmm. --- containers/ci_container.yml | 4 ++-- containers/dockerfile/Dockerfile.gpu_build_rockylinux8 | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/containers/ci_container.yml b/containers/ci_container.yml index 9561143..53830a7 100644 --- a/containers/ci_container.yml +++ b/containers/ci_container.yml @@ -27,7 +27,7 @@ xgb-ci.gpu_build_rockylinux8_aarch64: RAPIDS_VERSION: *rapids_version ARCH: aarch64 -# CUDA 12 is used only to build the xgboost-cu12 PyPI package. +# CUDA 12 builders are used only for the xgboost-cu12 PyPI package. xgb-ci.gpu_build_cuda12_rockylinux8: container_def: gpu_build_cuda12_rockylinux8 build_args: @@ -70,7 +70,7 @@ xgb-ci.gpu_aarch64: xgb-ci.clang_tidy: container_def: clang_tidy build_args: - CUDA_VERSION: *cuda_version + CUDA_VERSION: *cuda12_version xgb-ci.cpu: container_def: cpu diff --git a/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 b/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 index 6273b93..3a29bd8 100644 --- a/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 +++ b/containers/dockerfile/Dockerfile.gpu_build_rockylinux8 @@ -41,13 +41,17 @@ RUN \ # Install RMM # Patch out -Werror +# Force the static logger dependencies to use the container's GCC toolchain instead of +# reusing ABI-incompatible shared libraries from Miniforge. RUN git clone -b v${RAPIDS_VERSION}.00 https://github.com/rapidsai/rmm.git --recurse-submodules --depth 1 && \ pushd rmm && \ find . -name CMakeLists.txt -print0 | xargs -0 sed -i 's/-Werror//g' && \ pushd cpp && \ mkdir build && \ pushd build && \ - cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=/opt/rmm -DCUDA_STATIC_RUNTIME=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF && \ + cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=/opt/rmm -DCUDA_STATIC_RUNTIME=ON \ + -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF \ + -DCPM_DOWNLOAD_fmt=ON -DCPM_DOWNLOAD_spdlog=ON && \ cmake --build . --target install && \ popd && popd && popd && \ rm -rf rmm From e7992409d3dcc3741bcf9214735f8db72edc071c Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Fri, 31 Jul 2026 01:40:40 +0800 Subject: [PATCH 5/9] Drop clang tidy container. --- .github/workflows/containers.yml | 1 - containers/ci_container.yml | 7 +--- containers/dockerfile/Dockerfile.clang_tidy | 41 --------------------- containers/extract_build_args.sh | 4 +- 4 files changed, 3 insertions(+), 50 deletions(-) delete mode 100644 containers/dockerfile/Dockerfile.clang_tidy diff --git a/.github/workflows/containers.yml b/.github/workflows/containers.yml index b431c3f..b6c0a48 100644 --- a/.github/workflows/containers.yml +++ b/.github/workflows/containers.yml @@ -32,7 +32,6 @@ jobs: fail-fast: false matrix: image_repo: - - xgb-ci.clang_tidy - xgb-ci.cpu - xgb-ci.cpu_build_r_doc - xgb-ci.gpu diff --git a/containers/ci_container.yml b/containers/ci_container.yml index 53830a7..a6ced12 100644 --- a/containers/ci_container.yml +++ b/containers/ci_container.yml @@ -27,7 +27,7 @@ xgb-ci.gpu_build_rockylinux8_aarch64: RAPIDS_VERSION: *rapids_version ARCH: aarch64 -# CUDA 12 builders are used only for the xgboost-cu12 PyPI package. +# CUDA 12 builders are used for the xgboost-cu12 PyPI package and clang CI jobs. xgb-ci.gpu_build_cuda12_rockylinux8: container_def: gpu_build_cuda12_rockylinux8 build_args: @@ -67,11 +67,6 @@ xgb-ci.gpu_aarch64: RAPIDS_VERSION: *rapids_version ARCH: aarch64 -xgb-ci.clang_tidy: - container_def: clang_tidy - build_args: - CUDA_VERSION: *cuda12_version - xgb-ci.cpu: container_def: cpu build_args: diff --git a/containers/dockerfile/Dockerfile.clang_tidy b/containers/dockerfile/Dockerfile.clang_tidy deleted file mode 100644 index d416609..0000000 --- a/containers/dockerfile/Dockerfile.clang_tidy +++ /dev/null @@ -1,41 +0,0 @@ -ARG CUDA_VERSION=notset -FROM nvidia/cuda:$CUDA_VERSION-devel-ubuntu22.04 -ARG CUDA_VERSION - -ENV DEBIAN_FRONTEND=noninteractive -ENV GOSU_VERSION=1.10 - -COPY scripts/install_gosu.sh /scripts/ - -RUN \ - apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub && \ - apt-get update && \ - apt-get install -y wget git python3 python3-pip software-properties-common \ - apt-transport-https ca-certificates gnupg-agent && \ - apt-get install -y ninja-build libgtest-dev libgmock-dev - -# Install clang-tidy: https://apt.llvm.org/ -RUN \ - apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-21 main" && \ - wget -O llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key && \ - apt-key add ./llvm-snapshot.gpg.key && \ - rm llvm-snapshot.gpg.key && \ - apt-get update && \ - apt-get install -y clang-tidy-21 clang-21 libomp-21-dev - -# Set default clang-tidy version -RUN update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-21 100 && \ - update-alternatives --install /usr/bin/clang clang /usr/bin/clang-21 100 - -# Install Python packages -RUN pip3 install cmake - -# Install lightweight sudo (not bound to TTY) -RUN sh /scripts/install_gosu.sh - -# Default entry-point to use if running locally -# It will preserve attributes of created files -COPY entrypoint.sh /scripts/ - -WORKDIR /workspace -ENTRYPOINT ["/scripts/entrypoint.sh"] diff --git a/containers/extract_build_args.sh b/containers/extract_build_args.sh index 72ef422..d1e9d28 100755 --- a/containers/extract_build_args.sh +++ b/containers/extract_build_args.sh @@ -3,9 +3,9 @@ ## given the image repo. ## ## Example input: -## xgb-ci.clang_tidy +## xgb-ci.cpu ## Example output: -## CONTAINER_DEF='clang_tidy' BUILD_ARGS='--build-arg CUDA_VERSION=13.3.0' +## CONTAINER_DEF='cpu' BUILD_ARGS='--build-arg ARCH=x86_64' if [ "$#" -ne 1 ]; then echo "Usage: $0 [image_repo]" From e64908bdf15dc144fc76056c972388eba2c0c8ff Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Fri, 31 Jul 2026 01:43:03 +0800 Subject: [PATCH 6/9] Drop federated learning. --- containers/conda_env/linux_cpu_test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/containers/conda_env/linux_cpu_test.yml b/containers/conda_env/linux_cpu_test.yml index 2e1f9f4..3676576 100644 --- a/containers/conda_env/linux_cpu_test.yml +++ b/containers/conda_env/linux_cpu_test.yml @@ -31,9 +31,6 @@ dependencies: - jsonschema - loky>=3.5.1 - pyarrow -# Federated learning -- libgrpc -- protobuf # PySpark - cloudpickle - pyspark>=4.0 From cd17a2908fd80b0c4f97f90583cfae8ef01d67cb Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Fri, 31 Jul 2026 09:32:14 +0800 Subject: [PATCH 7/9] CTK 12 images. --- .github/workflows/containers.yml | 3 +++ containers/ci_container.yml | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/.github/workflows/containers.yml b/.github/workflows/containers.yml index b6c0a48..1242064 100644 --- a/.github/workflows/containers.yml +++ b/.github/workflows/containers.yml @@ -35,6 +35,7 @@ jobs: - xgb-ci.cpu - xgb-ci.cpu_build_r_doc - xgb-ci.gpu + - xgb-ci.gpu_cuda12 - xgb-ci.gpu_build_r_rockylinux8 - xgb-ci.gpu_build_rockylinux8 - xgb-ci.gpu_build_cuda12_rockylinux8 @@ -57,6 +58,8 @@ jobs: runner: linux-arm64-cpu - image_repo: xgb-ci.gpu_aarch64 runner: linux-arm64-cpu + - image_repo: xgb-ci.gpu_cuda12_aarch64 + runner: linux-arm64-cpu steps: # Restart Docker daemon so that it recognizes the ephemeral disks - run: sudo systemctl restart docker diff --git a/containers/ci_container.yml b/containers/ci_container.yml index a6ced12..74663bd 100644 --- a/containers/ci_container.yml +++ b/containers/ci_container.yml @@ -67,6 +67,23 @@ xgb-ci.gpu_aarch64: RAPIDS_VERSION: *rapids_version ARCH: aarch64 +# CUDA 12 runtime images provide native test environments for xgboost-cu12. +xgb-ci.gpu_cuda12: + container_def: gpu + build_args: + CUDA_VERSION: *cuda12_version + NCCL_VERSION: *nccl_version + RAPIDS_VERSION: *rapids_version + ARCH: x86_64 + +xgb-ci.gpu_cuda12_aarch64: + container_def: gpu + build_args: + CUDA_VERSION: *cuda12_version + NCCL_VERSION: *nccl_version + RAPIDS_VERSION: *rapids_version + ARCH: aarch64 + xgb-ci.cpu: container_def: cpu build_args: From 56859a4bdcda6215b45b9b53643dbbc9dfe69963 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Fri, 31 Jul 2026 11:37:21 +0800 Subject: [PATCH 8/9] Install polars. --- containers/conda_env/linux_cpu_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/containers/conda_env/linux_cpu_test.yml b/containers/conda_env/linux_cpu_test.yml index 3676576..128388e 100644 --- a/containers/conda_env/linux_cpu_test.yml +++ b/containers/conda_env/linux_cpu_test.yml @@ -31,6 +31,7 @@ dependencies: - jsonschema - loky>=3.5.1 - pyarrow +- polars # PySpark - cloudpickle - pyspark>=4.0 From 789a5e813c0eeaf8e9d034096378e4530f32eed8 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Fri, 31 Jul 2026 14:09:02 +0800 Subject: [PATCH 9/9] Disable modin. --- containers/conda_env/linux_cpu_test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/containers/conda_env/linux_cpu_test.yml b/containers/conda_env/linux_cpu_test.yml index 128388e..348eb3a 100644 --- a/containers/conda_env/linux_cpu_test.yml +++ b/containers/conda_env/linux_cpu_test.yml @@ -39,7 +39,9 @@ dependencies: - grpcio-status - googleapis-common-protos - zstandard -# misc -- modin +# The modin on conda forge is old at the time of writing (0.32.0). Old modin constraints +# the numpy version to <2. Pulling it from PyPI is not safe with its large dependency +# tree. Just disable it on the CPU CI for now. +# - modin - pip: - py-ubjson