# # Copyright (c) 2021-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. # Sample Dockerfile to install UCX in a Ubuntu 22.04 image with RDMA support. # # The parameters are: # - RDMA_CORE_VERSION: Set to 32.1 to match the rdma-core line in the latest # released MLNX_OFED 5.x driver # - CUDA_VER: 13.0.1 by default # - UCX_VER, UCX_CUDA_VER, and UCX_ARCH: # Used to pick a package matching a specific UCX version and # CUDA runtime from the UCX github repo. UCX_CUDA_VER is the CUDA version # that UCX is built for (can be older than CUDA_VER due to backwards compatibility). # See: https://github.com/openucx/ucx/releases/ # - UBUNTU_VER: 22.04 by default # # The Dockerfile first fetches and builds `rdma-core` to satisfy requirements for # the ucx-ib and ucx-rdma RPMs. # # Note that tzdata has to be installed with a time zone configuration, and UTC has been picked in this container # ARG RDMA_CORE_VERSION=32.1 ARG CUDA_VER=13.0.1 ARG UCX_VER=1.19.1 ARG UCX_CUDA_VER=13 ARG UCX_ARCH=x86_64 ARG UBUNTU_VER=22.04 # Throw away image to build rdma_core FROM ubuntu:${UBUNTU_VER} as rdma_core ARG RDMA_CORE_VERSION ARG UBUNTU_VER ARG CUDA_VER ARG UCX_ARCH RUN apt-get update && apt-get install -y gnupg2 # https://forums.developer.nvidia.com/t/notice-cuda-linux-repository-key-rotation/212771 RUN CUDA_UBUNTU_VER=`echo "$UBUNTU_VER"| sed -s 's/\.//'` && \ apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu$CUDA_UBUNTU_VER/x86_64/3bf863cc.pub # hack to get tzdata to install RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata RUN apt update && apt install -y dh-make wget build-essential cmake gcc libudev-dev libnl-3-dev libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3 python3-docutils pandoc dh-python RUN wget https://github.com/linux-rdma/rdma-core/releases/download/v${RDMA_CORE_VERSION}/rdma-core-${RDMA_CORE_VERSION}.tar.gz RUN tar -xvf *.tar.gz && cd rdma-core*/ && dpkg-buildpackage -b -d # Now start the main container FROM nvidia/cuda:${CUDA_VER}-runtime-ubuntu${UBUNTU_VER} ARG UCX_VER ARG UCX_CUDA_VER ARG UCX_ARCH ARG UBUNTU_VER RUN mkdir /tmp/ucx_install COPY --from=rdma_core /*.deb /tmp/ucx_install/ RUN apt update RUN apt-get install -y wget RUN cd /tmp/ucx_install && \ wget https://github.com/openucx/ucx/releases/download/v$UCX_VER/ucx-$UCX_VER-ubuntu$UBUNTU_VER-mofed5-cuda$UCX_CUDA_VER-$UCX_ARCH.tar.bz2 && \ tar -xvf ucx-$UCX_VER-ubuntu$UBUNTU_VER-mofed5-cuda$UCX_CUDA_VER-$UCX_ARCH.tar.bz2 && \ apt install -y /tmp/ucx_install/*.deb && \ rm -rf /tmp/ucx_install