diff --git a/java/ci/Dockerfile.centos7 b/java/ci/Dockerfile.centos7 deleted file mode 100644 index b2c620848de..00000000000 --- a/java/ci/Dockerfile.centos7 +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (c) 2020-2023, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -### -# Build the image for cudf development environment. -# -# Arguments: CUDA_VERSION=11.X.Y -# -### -ARG CUDA_VERSION=11.8.0 -FROM nvidia/cuda:$CUDA_VERSION-devel-centos7 - -### Install basic requirements -ARG DEVTOOLSET_VERSION=11 -RUN yum install -y centos-release-scl -RUN yum install -y devtoolset-${DEVTOOLSET_VERSION} epel-release -RUN yum install -y git zlib-devel maven tar wget patch ninja-build - -## pre-create the CMAKE_INSTALL_PREFIX folder, set writable by any user for Jenkins -RUN mkdir /usr/local/rapids && mkdir /rapids && chmod 777 /usr/local/rapids && chmod 777 /rapids - -ARG CMAKE_VERSION=3.26.4 -RUN cd /usr/local/ && wget --quiet https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz && \ - tar zxf cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz && \ - rm cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz - -ENV PATH /usr/local/cmake-${CMAKE_VERSION}-linux-x86_64/bin:$PATH - -ARG CCACHE_VERSION=4.6 -RUN cd /tmp && wget --quiet https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz && \ - tar zxf ccache-${CCACHE_VERSION}.tar.gz && \ - rm ccache-${CCACHE_VERSION}.tar.gz && \ - cd ccache-${CCACHE_VERSION} && \ - mkdir build && \ - cd build && \ - scl enable devtoolset-${DEVTOOLSET_VERSION} \ - "cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ - -DZSTD_FROM_INTERNET=ON \ - -DREDIS_STORAGE_BACKEND=OFF && \ - cmake --build . --parallel ${PARALLEL_LEVEL} --target install" && \ - cd ../.. && \ - rm -rf ccache-${CCACHE_VERSION} diff --git a/java/ci/Dockerfile.rocky b/java/ci/Dockerfile.rocky new file mode 100644 index 00000000000..7797dde7901 --- /dev/null +++ b/java/ci/Dockerfile.rocky @@ -0,0 +1,63 @@ +# +# Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +### +# Build the image for cudf development environment. +# +# Arguments: CUDA_VERSION=[11.X.Y, 12.X.Y], OS_RELEASE=[8, 9], TARGETPLATFORM=[linux/amd64, linux/amd64] +# +### +ARG CUDA_VERSION=11.8.0 +ARG OS_RELEASE=8 +ARG TARGETPLATFORM=linux/amd64 +# multi-platform build with: docker buildx build --platform linux/arm64,linux/amd64 on either amd64 or arm64 host +# check available offcial arm-based docker images at https://hub.docker.com/r/nvidia/cuda/tags (OS/ARCH) +FROM --platform=$TARGETPLATFORM nvidia/cuda:$CUDA_VERSION-devel-rockylinux$OS_RELEASE +ARG TOOLSET_VERSION=11 +### Install basic requirements +RUN dnf install -y scl-utils gcc-toolset-${TOOLSET_VERSION} +RUN dnf --enablerepo=powertools install -y git zlib-devel maven tar wget patch ninja-build +## pre-create the CMAKE_INSTALL_PREFIX folder, set writable by any user for Jenkins +RUN mkdir /usr/local/rapids && mkdir /rapids && chmod 777 /usr/local/rapids && chmod 777 /rapids + +# 3.22.3+: CUDA architecture 'native' support + flexible CMAKE__*_LAUNCHER for ccache +ARG CMAKE_VERSION=3.26.4 +# default x86_64 from x86 build, aarch64 cmake for arm build +ARG CMAKE_ARCH=x86_64 +RUN cd /usr/local && wget --quiet https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-${CMAKE_ARCH}.tar.gz && \ + tar zxf cmake-${CMAKE_VERSION}-linux-${CMAKE_ARCH}.tar.gz && \ + rm cmake-${CMAKE_VERSION}-linux-${CMAKE_ARCH}.tar.gz +ENV PATH /usr/local/cmake-${CMAKE_VERSION}-linux-${CMAKE_ARCH}/bin:$PATH + +# ccache for interactive builds +ARG CCACHE_VERSION=4.6 +RUN cd /tmp && wget --quiet https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz && \ + tar zxf ccache-${CCACHE_VERSION}.tar.gz && \ + rm ccache-${CCACHE_VERSION}.tar.gz && \ + cd ccache-${CCACHE_VERSION} && \ + mkdir build && \ + cd build && \ + scl enable gcc-toolset-${TOOLSET_VERSION} \ + "cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DZSTD_FROM_INTERNET=ON \ + -DREDIS_STORAGE_BACKEND=OFF && \ + cmake --build . --parallel 4 --target install" && \ + cd ../.. && \ + rm -rf ccache-${CCACHE_VERSION} + +# disable cuda container constraints to allow running w/ elder drivers on data-center GPUs +ENV NVIDIA_DISABLE_REQUIRE="true" diff --git a/java/ci/README.md b/java/ci/README.md index da24c5923ea..18ad3cc4d0d 100644 --- a/java/ci/README.md +++ b/java/ci/README.md @@ -11,14 +11,14 @@ In the root path of cuDF repo, run below command to build the docker image. ```bash -docker build -f java/ci/Dockerfile.centos7 --build-arg CUDA_VERSION=11.8.0 -t cudf-build:11.8.0-devel-centos7 . +docker build -f java/ci/Dockerfile.rocky --build-arg CUDA_VERSION=11.8.0 -t cudf-build:11.8.0-devel-rocky8 . ``` The following CUDA versions are supported w/ CUDA Enhanced Compatibility: * CUDA 11.0+ Change the --build-arg CUDA_VERSION to what you need. -You can replace the tag "cudf-build:11.8.0-devel-centos7" with another name you like. +You can replace the tag "cudf-build:11.8.0-devel-rocky8" with another name you like. ## Start the docker then build @@ -26,7 +26,7 @@ You can replace the tag "cudf-build:11.8.0-devel-centos7" with another name you Run below command to start a docker container with GPU. ```bash -nvidia-docker run -it cudf-build:11.8.0-devel-centos7 bash +nvidia-docker run -it cudf-build:11.8.0-devel-rocky8 bash ``` ### Download the cuDF source code @@ -42,7 +42,7 @@ git clone --recursive https://github.com/rapidsai/cudf.git -b branch-24.06 ```bash cd cudf export WORKSPACE=`pwd` -scl enable devtoolset-11 "java/ci/build-in-docker.sh" +scl enable gcc-toolset-11 "java/ci/build-in-docker.sh" ``` ### The output