Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/containers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ jobs:
fail-fast: false
matrix:
image_repo:
- xgb-ci.clang_tidy
- 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_cuda13_rockylinux8
- xgb-ci.gpu_build_cuda12_rockylinux8
- xgb-ci.jvm
- xgb-ci.jvm_gpu_build
- xgb-ci.manylinux_2_28_x86_64
Expand All @@ -50,14 +50,16 @@ 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
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
Expand Down
36 changes: 25 additions & 11 deletions containers/ci_container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ x-rapids_versions:
stable: &rapids_version "26.04"

x-cuda_versions:
cuda: &cuda_version "12.9.0"
nccl: &nccl_version "2.29.2-1"
default: &cuda_version "13.3.0"
cuda12: &cuda12_version "12.9.0"
nccl: &nccl_version "2.30.7-1"
Comment thread
trivialfis marked this conversation as resolved.

xgb-ci.gpu_build_rockylinux8:
container_def: gpu_build_rockylinux8
Expand All @@ -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 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:
CUDA_VERSION: "13.0.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.0.0"
CUDA_VERSION: *cuda12_version
NCCL_VERSION: *nccl_version
ARCH: aarch64

Expand Down Expand Up @@ -65,10 +67,22 @@ xgb-ci.gpu_aarch64:
RAPIDS_VERSION: *rapids_version
ARCH: aarch64

xgb-ci.clang_tidy:
container_def: clang_tidy
# CUDA 12 runtime images provide native test environments for xgboost-cu12.
xgb-ci.gpu_cuda12:
container_def: gpu
build_args:
CUDA_VERSION: *cuda_version
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
Expand Down
10 changes: 6 additions & 4 deletions containers/conda_env/linux_cpu_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,21 @@ dependencies:
- pytest
- pytest-timeout
- pytest-cov
- python-kubernetes
- urllib3
- jsonschema
- loky>=3.5.1
- pyarrow
- protobuf
- cloudpickle
- modin
- polars
# PySpark
- cloudpickle
- pyspark>=4.0
- grpcio
- grpcio-status
- googleapis-common-protos
- zstandard
# 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
41 changes: 0 additions & 41 deletions containers/dockerfile/Dockerfile.clang_tidy

This file was deleted.

16 changes: 1 addition & 15 deletions containers/dockerfile/Dockerfile.cpu
Original file line number Diff line number Diff line change
@@ -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"]

Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion containers/dockerfile/Dockerfile.gpu
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down Expand Up @@ -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}

# Install lightweight sudo (not bound to TTY)
RUN sh /scripts/install_gosu.sh
Expand Down
4 changes: 2 additions & 2 deletions containers/dockerfile/Dockerfile.gpu_build_r_rockylinux8
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ 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 CMAKE_VERSION=3.31.2
ARG MINIFORGE_VERSION=26.3.2-3
ARG CMAKE_VERSION=4.1.0

SHELL ["/bin/bash", "-c"]

Expand Down
24 changes: 7 additions & 17 deletions containers/dockerfile/Dockerfile.gpu_build_rockylinux8
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ ARG CUDA_VERSION
ARG NCCL_VERSION
ARG RAPIDS_VERSION
ARG ARCH=x86_64
ARG MINIFORGE_VERSION=24.9.2-0
ARG CMAKE_VERSION=3.31.2
ARG MINIFORGE_VERSION=26.3.2-3
ARG CMAKE_VERSION=4.1.0

SHELL ["/bin/bash", "-c"]

Expand Down Expand Up @@ -39,29 +39,19 @@ 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
# 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 && \
Comment on lines +52 to +54

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, we should be able to remove this once we rip out the RMM integration from XGBoost

cmake --build . --target install && \
popd && popd && popd && \
rm -rf rmm
Expand Down
4 changes: 2 additions & 2 deletions containers/dockerfile/Dockerfile.jvm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM rockylinux:8
ARG MINIFORGE_VERSION=24.9.2-0
ARG CMAKE_VERSION=3.31.2
ARG MINIFORGE_VERSION=26.3.2-3
ARG CMAKE_VERSION=4.1.0
ARG MAVEN_VERSION=3.9.16

SHELL ["/bin/bash", "-c"]
Expand Down
4 changes: 2 additions & 2 deletions containers/dockerfile/Dockerfile.jvm_gpu_build
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ 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 CMAKE_VERSION=3.31.2
ARG MINIFORGE_VERSION=26.3.2-3
ARG CMAKE_VERSION=4.1.0
ARG MAVEN_VERSION=3.9.16

SHELL ["/bin/bash", "-c"]
Expand Down
2 changes: 1 addition & 1 deletion containers/dockerfile/Dockerfile.manylinux_2_28_aarch64
Original file line number Diff line number Diff line change
@@ -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"]

Expand Down
4 changes: 2 additions & 2 deletions containers/extract_build_args.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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_ARG=12.4.1'
## CONTAINER_DEF='cpu' BUILD_ARGS='--build-arg ARCH=x86_64'

if [ "$#" -ne 1 ]; then
echo "Usage: $0 [image_repo]"
Expand Down