Skip to content

Commit d4a204e

Browse files
committed
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into develop
2 parents c6d500a + 21e878f commit d4a204e

File tree

4 files changed

+99
-92
lines changed

4 files changed

+99
-92
lines changed

paddle/scripts/docker/Dockerfile renamed to Dockerfile

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
FROM ubuntu:14.04
1+
# A image for building paddle binaries
2+
# Use cuda devel base image for both cpu and gpu environment
3+
FROM nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04
24
MAINTAINER PaddlePaddle Authors <[email protected]>
35

46
ARG DEBIAN_FRONTEND=noninteractive
57
ARG UBUNTU_MIRROR
6-
RUN /bin/bash -c 'if [[ -n ${UBUNTU_MIRROR} ]]; then sed -i 's#http://archive.ubuntu.com#${UBUNTU_MIRROR}#g' /etc/apt/sources.list; fi'
8+
RUN /bin/bash -c 'if [[ -n ${UBUNTU_MIRROR} ]]; then sed -i 's#http://archive.ubuntu.com/ubuntu#${UBUNTU_MIRROR}#g' /etc/apt/sources.list; fi'
79

810
# ENV variables
911
ARG BUILD_WOBOQ
@@ -18,10 +20,8 @@ ENV WITH_GPU=OFF
1820
ENV WITH_AVX=${WITH_AVX:-ON}
1921
ENV WITH_DOC=${WITH_DOC:-OFF}
2022
ENV WITH_STYLE_CHECK=${WITH_STYLE_CHECK:-OFF}
21-
ENV DOCKER_BUILD=TRUE
2223

2324
ENV HOME /root
24-
2525
# Add bash enhancements
2626
COPY ./paddle/scripts/docker/root/ /root/
2727

@@ -50,9 +50,7 @@ RUN curl -sSL https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz | tar -xz && \
5050
cd cmake-3.4.1 && ./bootstrap && make -j `nproc` && make install && \
5151
cd .. && rm -rf cmake-3.4.1
5252

53-
COPY . /paddle/
54-
RUN cd /paddle/ && git submodule update --init --recursive
55-
RUN /paddle/paddle/scripts/docker/build.sh
53+
RUN apt-get install -y swig
5654

5755
VOLUME ["/usr/share/nginx/html/data", "/usr/share/nginx/html/paddle"]
5856

@@ -63,9 +61,5 @@ RUN sed -ri 's/^PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
6361
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
6462
EXPOSE 22
6563

66-
# Jupyter Notebook: Paddle book
67-
EXPOSE 8888
68-
69-
COPY ./paddle/scripts/docker/entrypoint /opt/bin/
70-
71-
CMD ["/opt/bin/entrypoint"]
64+
# development image default do build work
65+
CMD ["bash", "/paddle/paddle/scripts/docker/build.sh"]
Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/bin/bash
22
set -e
3+
ARCH=$(uname -i)
34
apt-get update
45
apt-get install -y dh-make
56
cd ~
@@ -8,28 +9,35 @@ mkdir -p ~/dist/cpu
89
mkdir -p ~/dist/cpu-noavx
910
mkdir -p ~/dist/gpu-noavx
1011
cd paddle
11-
mkdir build
12+
13+
# clean build dir and third_party dir cache
14+
rm -rf build third_party
15+
mkdir -p build
1216
cd build
13-
cmake .. -DWITH_GPU=OFF -DWITH_SWIG_PY=ON -DWITH_AVX=ON
17+
cmake .. -DWITH_GPU=OFF -DWITH_SWIG_PY=ON -DWITH_AVX=ON -DWITH_SWIG_PY=ON -DWITH_STYLE_CHECK=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
1418
make -j `nproc`
19+
# FIXME(typhoonzero): add ARCH gpu noavx flag to CPACK_SYSTEM_NAME. Why -D not affect anything?
1520
cpack -D CPACK_GENERATOR='DEB' ..
1621
mv *.deb ~/dist/cpu
1722

1823
rm -rf *
19-
cmake .. -DWITH_GPU=ON -DWITH_SWIG_PY=ON -DWITH_AVX=ON -DCUDNN_ROOT=/usr/
24+
ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so /usr/lib/libcudnn.so
25+
cmake .. -DWITH_GPU=ON -DWITH_SWIG_PY=ON -DWITH_AVX=ON -DCUDNN_ROOT=/usr/ -DWITH_SWIG_PY=ON -DWITH_STYLE_CHECK=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
2026
make -j `nproc`
2127
cpack -D CPACK_GENERATOR='DEB' ..
2228
mv *.deb ~/dist/gpu
2329

2430

2531
rm -rf *
26-
cmake .. -DWITH_GPU=OFF -DWITH_SWIG_PY=ON -DWITH_AVX=OFF
32+
rm -f /usr/lib/libcudnn.so
33+
cmake .. -DWITH_GPU=OFF -DWITH_SWIG_PY=ON -DWITH_AVX=OFF -DWITH_SWIG_PY=ON -DWITH_STYLE_CHECK=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
2734
make -j `nproc`
2835
cpack -D CPACK_GENERATOR='DEB' ..
2936
mv *.deb ~/dist/cpu-noavx
3037

3138
rm -rf *
32-
cmake .. -DWITH_GPU=ON -DWITH_SWIG_PY=ON -DWITH_AVX=OFF -DCUDNN_ROOT=/usr/
39+
ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so /usr/lib/libcudnn.so
40+
cmake .. -DWITH_GPU=ON -DWITH_SWIG_PY=ON -DWITH_AVX=OFF -DCUDNN_ROOT=/usr/ -DWITH_SWIG_PY=ON -DWITH_STYLE_CHECK=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
3341
make -j `nproc`
3442
cpack -D CPACK_GENERATOR='DEB' ..
3543
mv *.deb ~/dist/gpu-noavx

paddle/scripts/docker/Dockerfile.gpu

Lines changed: 0 additions & 71 deletions
This file was deleted.

paddle/scripts/docker/build.sh

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,32 @@ function abort(){
77

88
trap 'abort' 0
99
set -e
10-
10+
mkdir -p /paddle/dist/cpu
11+
mkdir -p /paddle/dist/gpu
12+
mkdir -p /paddle/dist/cpu-noavx
13+
mkdir -p /paddle/dist/gpu-noavx
14+
# Set BASE_IMAGE and DEB_PATH according to env variables
15+
if [ ${WITH_GPU} == "ON" ]; then
16+
BASE_IMAGE="nvidia/cuda:7.5-cudnn5-runtime-ubuntu14.04"
17+
# additional packages to install when building gpu images
18+
GPU_DOCKER_PKG="python-pip"
19+
if [ ${WITH_AVX} == "ON" ]; then
20+
DEB_PATH="dist/gpu/"
21+
DOCKER_SUFFIX="gpu"
22+
else
23+
DEB_PATH="dist/gpu-noavx/"
24+
DOCKER_SUFFIX="gpu-noavx"
25+
fi
26+
else
27+
BASE_IMAGE="python:2.7.13-slim"
28+
if [ ${WITH_AVX} == "ON" ]; then
29+
DEB_PATH="dist/cpu/"
30+
DOCKER_SUFFIX="cpu"
31+
else
32+
DEB_PATH="dist/cpu-noavx/"
33+
DOCKER_SUFFIX="noavx"
34+
fi
35+
fi
1136
# If Dockerfile.* sets BUILD_AND_INSTALL to 'ON', it would have copied
1237
# source tree to /paddle, and this scripts should build it into
1338
# /paddle/build.
@@ -17,8 +42,11 @@ if [[ ${BUILD_AND_INSTALL:-OFF} == 'ON' ]]; then
1742
fi
1843

1944
mkdir -p /paddle/build # -p means no error if exists
45+
cd /paddle/build
2046
# clean local cmake and third_party cache
21-
cd /paddle/build && rm -rf * && rm -rf ../third_party
47+
if [ ${DELETE_BUILD_CACHE} == 'ON' ]; then
48+
rm -rf * && rm -rf ../third_party
49+
fi
2250
cmake .. \
2351
-DWITH_DOC=${WITH_DOC:-OFF} \
2452
-DWITH_GPU=${WITH_GPU:-OFF} \
@@ -29,9 +57,15 @@ if [[ ${BUILD_AND_INSTALL:-OFF} == 'ON' ]]; then
2957
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
3058
make -j `nproc`
3159
make install
60+
# generate deb package for current build
61+
# FIXME(typhoonzero): should we remove paddle/scripts/deb ?
62+
# FIXME: CPACK_DEBIAN_PACKAGE_DEPENDS removes all dev dependencies, must
63+
# install them in docker
64+
cpack -D CPACK_GENERATOR='DEB' -D CPACK_DEBIAN_PACKAGE_DEPENDS="" ..
65+
mv /paddle/build/*.deb /paddle/${DEB_PATH}
3266

3367
if [[ ${BUILD_WOBOQ:-OFF} == 'ON' ]]; then
34-
apt-get install -y clang-3.8 llvm-3.8 libclang-3.8-dev
68+
apt-get install -y clang-3.8 llvm-3.8 libclang-3.8-dev
3569
# Install woboq_codebrowser.
3670
git clone https://github.com/woboq/woboq_codebrowser /woboq
3771
cd /woboq
@@ -65,4 +99,46 @@ if [[ ${BUILD_AND_INSTALL:-OFF} == 'ON' ]]; then
6599
fi
66100
fi
67101

102+
# generate production docker image Dockerfile
103+
if [ ${USE_MIRROR} ]; then
104+
MIRROR_UPDATE="sed 's@http:\/\/archive.ubuntu.com\/ubuntu\/@mirror:\/\/mirrors.ubuntu.com\/mirrors.txt@' -i /etc/apt/sources.list && \\"
105+
else
106+
MIRROR_UPDATE="\\"
107+
fi
108+
109+
cat > /paddle/build/Dockerfile.${DOCKER_SUFFIX} <<EOF
110+
FROM ${BASE_IMAGE}
111+
MAINTAINER PaddlePaddle Authors <[email protected]>
112+
113+
# ENV variables
114+
ARG WITH_AVX
115+
ARG WITH_DOC
116+
ARG WITH_STYLE_CHECK
117+
118+
ENV WITH_GPU=${WITH_GPU}
119+
ENV WITH_AVX=\${WITH_AVX:-ON}
120+
ENV WITH_DOC=\${WITH_DOC:-OFF}
121+
ENV WITH_STYLE_CHECK=\${WITH_STYLE_CHECK:-OFF}
122+
123+
ENV HOME /root
124+
ENV LANG en_US.UTF-8
125+
126+
# Use Fix locales to en_US.UTF-8
127+
128+
RUN ${MIRROR_UPDATE}
129+
apt-get update && \
130+
apt-get install -y libgfortran3 ${GPU_DOCKER_PKG} && \
131+
apt-get clean -y && \
132+
pip install --upgrade pip && \
133+
pip install -U 'protobuf==3.1.0' requests
134+
RUN pip install numpy
135+
# Use different deb file when building different type of images
136+
ADD \$PWD/${DEB_PATH}*.deb /usr/local/opt/paddle/deb/
137+
RUN dpkg --force-all -i /usr/local/opt/paddle/deb/*.deb && rm -f /usr/local/opt/paddle/deb/*.deb
138+
139+
ENV PATH="/usr/local/opt/paddle/bin/:${PATH}"
140+
# default command shows the paddle version and exit
141+
CMD ["paddle", "version"]
142+
EOF
143+
68144
trap : 0

0 commit comments

Comments
 (0)