@@ -17,7 +17,7 @@ ARG BASE_IMAGE="nvcr.io/nvidia/cuda-dl-base"
1717ARG BASE_IMAGE_TAG="25.06-cuda12.9-devel-ubuntu24.04"
1818ARG OS
1919
20- FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG}
20+ FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nixl-base
2121
2222# Set default OS if not provided
2323ARG OS=${OS:-ubuntu24}
@@ -62,7 +62,28 @@ RUN apt-get update -y && \
6262 clang \
6363 hwloc \
6464 libhwloc-dev \
65- libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev # aws-sdk-cpp dependencies
65+ libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev \
66+ python3-dev \
67+ python3-pip \
68+ curl \
69+ wget \
70+ numactl \
71+ git \
72+ libiberty-dev \
73+ libgoogle-glog-dev \
74+ libgmock-dev \
75+ libjsoncpp-dev \
76+ libpython3-dev \
77+ libboost-all-dev \
78+ meson \
79+ pkg-config \
80+ pybind11-dev \
81+ net-tools \
82+ iproute2 \
83+ pciutils \
84+ libpci-dev \
85+ libibmad-dev \
86+ doxygen
6687
6788# Add DOCA repository and install packages
6889RUN ARCH_SUFFIX=$(if [ "${ARCH}" = "aarch64" ]; then echo "arm64" ; else echo "amd64" ; fi) && \
@@ -167,6 +188,9 @@ RUN wget --tries=3 --waitretry=5 --timeout=30 --read-timeout=60 \
167188 make install && \
168189 ldconfig
169190
191+ # Stage 2: Build NIXL (default stage)
192+ FROM nixl-base
193+
170194# By default, uv downloads python packages to $HOME/.cache/uv and hard links them
171195# from the virtual environment. This means that the files reside in /root/.cache/uv,
172196# which is not what we want since some systems mount user home dir into /root,
@@ -190,14 +214,20 @@ RUN uv pip install --upgrade meson meson-python pybind11 patchelf pyYAML click t
190214RUN export UV_INDEX="https://download.pytorch.org/whl/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d .)" && \
191215 uv pip install torch torchvision torchaudio
192216
217+ # Re-declare ARGs needed in this stage
218+ ARG NIXL_PREFIX="/usr/local/nixl"
219+ ARG NIXL_PLUGIN_DIR="$NIXL_PREFIX/lib/x86_64-linux-gnu/plugins"
220+ ARG ARCH="x86_64"
221+ ARG DEFAULT_PYTHON_VERSION="3.12"
222+ ARG UCX_PREFIX="/usr"
223+ ARG UCX_PLUGIN_DIR="$UCX_PREFIX/lib/ucx"
224+ ARG LIBFABRIC_INSTALL_PATH="/usr/local"
225+
193226WORKDIR /workspace/nixl
194227COPY . /workspace/nixl
195228
196229ENV LD_LIBRARY_PATH=/usr/local/lib:$LIBFABRIC_INSTALL_PATH/lib:$LD_LIBRARY_PATH
197230
198- # Install pybind11 via apt
199- RUN apt-get update && apt-get install -y --no-install-recommends pybind11-dev
200-
201231ENV NIXL_PREFIX=$NIXL_PREFIX
202232RUN rm -rf build && \
203233 mkdir build && \
0 commit comments