FROM nvcr.io/nvidia/pytorch:22.03-py3 ARG EFA_INSTALLER_VERSION=latest ARG AWS_OFI_NCCL_VERSION=aws ARG NCCL_TESTS_VERSION=master ARG NCCL_VERSION=2.12.10-1 RUN apt-get update -y RUN apt-get remove -y --allow-change-held-packages \ libmlx5-1 ibverbs-utils libibverbs-dev libibverbs1 \ libnccl2 libnccl-dev RUN rm -rf /opt/hpcx \ && rm -rf /usr/local/mpi \ && rm -rf /usr/local/ucx \ && rm -f /etc/ld.so.conf.d/hpcx.conf \ && ldconfig ENV OPAL_PREFIX= RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated \ git \ gcc \ vim \ kmod \ openssh-client \ openssh-server \ build-essential \ curl \ autoconf \ libtool \ gdb \ automake \ cmake \ python3-pip \ python2-dev \ apt-utils \ devscripts \ debhelper \ libsubunit-dev \ check \ pkg-config RUN mkdir -p /var/run/sshd RUN sed -i 's/[ #]\(.*StrictHostKeyChecking \).*/ \1no/g' /etc/ssh/ssh_config && \ echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config && \ sed -i 's/#\(StrictModes \).*/\1no/g' /etc/ssh/sshd_config ENV LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:/opt/amazon/openmpi/lib:/opt/nccl/build/lib:/opt/amazon/efa/lib:/opt/aws-ofi-nccl/install/lib:$LD_LIBRARY_PATH ENV PATH=/opt/amazon/openmpi/bin/:/opt/amazon/efa/bin:/usr/bin:/usr/local/bin:$PATH RUN curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py \ && python /tmp/get-pip.py \ && pip install awscli pynvml ################################################# ## Install NVIDIA GDRCopy RUN git clone https://github.com/NVIDIA/gdrcopy.git $HOME/gdrcopy \ && cd $HOME/gdrcopy \ && make lib_install \ && cd $HOME/gdrcopy/tests \ && make \ && mv copylat copybw sanity apiperf /usr/bin/ \ && rm -rf $HOME/gdrcopy ################################################# ## Install EFA installer RUN cd $HOME \ && curl -O https://efa-installer.amazonaws.com/aws-efa-installer-${EFA_INSTALLER_VERSION}.tar.gz \ && tar -xf $HOME/aws-efa-installer-${EFA_INSTALLER_VERSION}.tar.gz \ && cd aws-efa-installer \ && ./efa_installer.sh -y -g -d --skip-kmod --skip-limit-conf --no-verify \ && rm -rf $HOME/aws-efa-installer* ################################################### ## Install NCCL RUN git clone https://github.com/NVIDIA/nccl -b v${NCCL_VERSION} /opt/nccl \ && cd /opt/nccl \ && make -j src.build CUDA_HOME=/usr/local/cuda \ NVCC_GENCODE="-gencode=arch=compute_86,code=sm_86 -gencode=arch=compute_80,code=sm_80 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_60,code=sm_60" ################################################### ## Install AWS-OFI-NCCL plugin RUN export OPAL_PREFIX="" \ && git clone https://github.com/aws/aws-ofi-nccl.git /opt/aws-ofi-nccl \ && cd /opt/aws-ofi-nccl \ && env \ && git checkout ${AWS_OFI_NCCL_VERSION} \ && ./autogen.sh \ && ./configure --prefix=/opt/aws-ofi-nccl/install \ --with-libfabric=/opt/amazon/efa/ \ --with-cuda=/usr/local/cuda \ --with-nccl=/opt/nccl/build \ --with-mpi=/opt/amazon/openmpi/ \ && make && make install ################################################### ## Install NCCL-tests RUN git clone -b ${NCCL_TESTS_VERSION} https://github.com/NVIDIA/nccl-tests.git /opt/nccl-tests \ && cd /opt/nccl-tests \ && make MPI=1 \ MPI_HOME=/opt/amazon/openmpi/ \ CUDA_HOME=/usr/local/cuda \ NCCL_HOME=/opt/nccl/build \ NVCC_GENCODE="-gencode=arch=compute_86,code=sm_86 -gencode=arch=compute_80,code=sm_80 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_60,code=sm_60" RUN rm -rf /var/lib/apt/lists/* ENV LD_PRELOAD /opt/nccl/build/lib/libnccl.so