101 lines
4.8 KiB
Docker
101 lines
4.8 KiB
Docker
# A image for building paddle binaries
|
|
|
|
# build docker image
|
|
# docker build -t paddlepaddle/paddle:latest-dev-ipu -f tools/dockerfile/Dockerfile.ipu .
|
|
|
|
# run a container
|
|
# docker run --ulimit memlock=-1:-1 --net=host --cap-add=IPC_LOCK --device=/dev/infiniband/ --ipc=host --rm -it paddlepaddle/paddle:latest-dev-ipu bash
|
|
|
|
FROM graphcore/poplar:3.0.0
|
|
MAINTAINER PaddlePaddle Authors <paddle-dev@baidu.com>
|
|
|
|
# ENV variables
|
|
ARG WITH_AVX
|
|
ENV HOME /root
|
|
ENV WITH_AVX=${WITH_AVX:-ON}
|
|
|
|
# install pkgs
|
|
RUN apt-get update && apt-get install -y apt-utils
|
|
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
|
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata
|
|
RUN apt-get update && apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && add-apt-repository ppa:ubuntu-toolchain-r/test
|
|
RUN apt-get update && apt-get install -y curl wget vim git unzip unrar tar xz-utils libssl-dev bzip2 gzip make libgcc-s1 sudo openssh-server \
|
|
coreutils ntp language-pack-zh-hans python-qt4 libsm6 libxext6 libxrender-dev libgl1-mesa-glx libsqlite3-dev libopenblas-dev \
|
|
bison graphviz libjpeg-dev zlib1g zlib1g-dev automake locales swig net-tools libtool module-init-tools numactl libnuma-dev \
|
|
openssl libffi-dev pciutils libblas-dev gfortran libblas3 liblapack-dev liblapack3 default-jre screen tmux gdb lldb gcc g++
|
|
RUN apt-get update && apt-get install -y rdma-core librdmacm1
|
|
|
|
# Downgrade gcc&&g++
|
|
WORKDIR /usr/bin
|
|
COPY tools/dockerfile/build_scripts /build_scripts
|
|
RUN bash /build_scripts/install_gcc.sh gcc82 && rm -rf /build_scripts
|
|
RUN cp gcc gcc.bak && cp g++ g++.bak && rm gcc && rm g++
|
|
RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/local/bin/gcc
|
|
RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/local/bin/g++
|
|
RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/gcc
|
|
RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/bin/g++
|
|
ENV PATH=/usr/local/gcc-8.2/bin:$PATH
|
|
|
|
# install cmake
|
|
WORKDIR /home
|
|
RUN wget -q https://cmake.org/files/v3.18/cmake-3.18.0-Linux-x86_64.tar.gz && tar -zxvf cmake-3.18.0-Linux-x86_64.tar.gz && rm cmake-3.18.0-Linux-x86_64.tar.gz
|
|
ENV PATH=/home/cmake-3.18.0-Linux-x86_64/bin:$PATH
|
|
|
|
# conda 4.9.2
|
|
WORKDIR /opt
|
|
ARG CONDA_FILE=Miniconda3-py38_23.10.0-1-Linux-x86_64.sh
|
|
RUN cd /opt && wget -q https://repo.anaconda.com/miniconda/${CONDA_FILE} && chmod +x ${CONDA_FILE}
|
|
RUN mkdir /opt/conda && ./${CONDA_FILE} -b -f -p "/opt/conda" && rm -rf ${CONDA_FILE}
|
|
ENV PATH=/opt/conda/bin:${PATH}
|
|
RUN conda init bash && conda install -n base jupyter jupyterlab
|
|
RUN conda install -n base spdlog==1.8.0 -y
|
|
|
|
# Install Go and glide
|
|
RUN wget -qO- https://paddle-ci.cdn.bcebos.com/go1.8.1.linux-amd64.tar.gz | \
|
|
tar -xz -C /usr/local && \
|
|
mkdir /root/gopath && \
|
|
mkdir /root/gopath/bin && \
|
|
mkdir /root/gopath/src
|
|
ENV GOROOT=/usr/local/go GOPATH=/root/gopath
|
|
# should not be in the same line with GOROOT definition, otherwise docker build could not find GOROOT.
|
|
ENV PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin
|
|
# install glide
|
|
RUN curl -s -q https://glide.sh/get | sh
|
|
|
|
# git credential to skip password typing
|
|
RUN git config --global credential.helper store
|
|
|
|
# Fix locales to en_US.UTF-8
|
|
RUN localedef -i en_US -f UTF-8 en_US.UTF-8
|
|
|
|
# install pytest and pre-commit
|
|
RUN /opt/conda/bin/pip install pre-commit pytest protocol PyGithub
|
|
|
|
# install Paddle requirement
|
|
RUN wget https://raw.githubusercontent.com/PaddlePaddle/Paddle/develop/python/requirements.txt -O /root/requirements.txt
|
|
RUN /opt/conda/bin/pip install -r /root/requirements.txt && \
|
|
rm -rf /root/requirements.txt
|
|
|
|
RUN wget https://raw.githubusercontent.com/PaddlePaddle/Paddle/develop/python/unittest_py/requirements.txt -O /root/requirements.txt
|
|
RUN /opt/conda/bin/pip install -r /root/requirements.txt && rm -rf /root/requirements.txt
|
|
|
|
# Older versions of patchelf limited the size of the files being processed and were fixed in this pr.
|
|
# https://github.com/NixOS/patchelf/commit/ba2695a8110abbc8cc6baf0eea819922ee5007fa
|
|
# So install a newer version here.
|
|
RUN wget -q https://paddle-ci.cdn.bcebos.com/patchelf_0.10-2_amd64.deb && \
|
|
dpkg -i patchelf_0.10-2_amd64.deb
|
|
|
|
# ccache 3.7.9
|
|
RUN wget https://paddle-ci.gz.bcebos.com/ccache-3.7.9.tar.gz && \
|
|
tar xf ccache-3.7.9.tar.gz && mkdir /usr/local/ccache-3.7.9 && cd ccache-3.7.9 && \
|
|
./configure -prefix=/usr/local/ccache-3.7.9 && \
|
|
make -j8 && make install && \
|
|
ln -s /usr/local/ccache-3.7.9/bin/ccache /usr/local/bin/ccache
|
|
|
|
# # clang-form 3.8.0
|
|
# RUN wget https://paddle-ci.cdn.bcebos.com/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz && \
|
|
# tar xf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz && cd clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04 && \
|
|
# cp -r * /usr/local && cd .. && rm -rf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04 && rm -rf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
|
|
|
|
RUN apt-get clean -y
|