1
1
FROM nvidia/cuda:11.2.1-cudnn8-devel-ubuntu20.04
2
2
3
3
# TensorFlow version is tightly coupled to CUDA and cuDNN so it should be selected carefully
4
- ARG CUDA=11.2
5
- ARG LIBNVINFER=8.0.1 -1
4
+ ARG CUDA=11.2.1
5
+ ARG LIBNVINFER=8.2.3 -1
6
6
ARG LIBNVINFER_MAJOR_VERSION=8
7
- ARG CUDNN=8.1.1.39-1
8
- ENV NCCL=2.8.4
9
- ENV NCCL_VERSION=2.8.4-1+cuda11.2
10
- ENV CUDNN_VERSION 8.1.1.33
7
+ ARG CUDNN=8.2.4.15-1
8
+ ENV CUDNN_VERSION 8.2.4.15
9
+ ENV NCCL=2.11.4
10
+ ENV NCCL_VERSION=2.11.4-1
11
+ ENV MLNX_OFED_VERSION=5.1-2.3.7.1
11
12
ENV MKL_VERSION=2020.3
12
13
ENV MKL_BUILD=279
13
14
ENV NUMPY_VERSION 1.22.2
@@ -19,130 +20,240 @@ ENV PYTHON_VERSION=${python}
19
20
20
21
ENV DEBIAN_FRONTEND=noninteractive \
21
22
MPLBACKEND=Svg \
22
- CPLUS_INCLUDE_PATH=/usr/include/gdal \
23
- C_INCLUDE_PATH=/usr/include/gdal \
23
+ PIP_IGNORE_INSTALLED=0 \
24
24
PYTHONUNBUFFERED=1 \
25
25
LIBRARY_PATH=/usr/local/cuda/lib64/stubs \
26
26
_CUDA_COMPAT_PATH="/usr/local/cuda/compat" \
27
- LD_LIBRARY_PATH="/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64:/usr/include/x86_64-linux-gnu:/opt/intel/compilers_and_libraries_2020.3.279/linux/mkl/lib/intel64" \
28
- PATH="/usr/local/mpi/bin:/usr/local/ucx:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/bin/cmake/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tensorrt/bin:/usr/local/src/lightgbm/LightGBM:/usr/local/bin/mecab" \
27
+ LD_LIBRARY_PATH="/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64:/usr/lib/x86_64-linux-gnu:/usr/include/x86_64-linux-gnu:/opt/intel/compilers_and_libraries_2020.3.279/linux/mkl/lib/intel64" \
28
+ PATH="/usr/local/nvm/versions/node/v16.6.1/bin:/usr/local/mpi/bin:/usr/local/ucx:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/bin/cmake/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tensorrt/bin:/usr/local/src/lightgbm/LightGBM:/usr/local/bin/mecab" \
29
+ CPLUS_INCLUDE_PATH=/usr/include/gdal \
30
+ C_INCLUDE_PATH=/usr/include/gdal \
29
31
mecab_dicdir=/usr/local/lib/mecab/dic/mecab-ko-dic \
30
32
LANG=C.UTF-8
31
33
32
34
# Set default shell to /bin/bash
33
35
SHELL ["/bin/bash", "-cu"]
34
36
37
+ WORKDIR /tmp
35
38
RUN rm -fr /var/lib/apt/lists/* && \
36
39
apt-get update -y && \
37
40
apt-get install -y --no-install-recommends software-properties-common wget && \
41
+ curl -sL https://deb.nodesource.com/setup_12.x | bash - && \
38
42
add-apt-repository -y "deb http://security.ubuntu.com/ubuntu xenial-security main" && \
39
43
add-apt-repository -y ppa:deadsnakes/ppa && \
40
44
add-apt-repository -y ppa:bashtop-monitor/bashtop && \
41
45
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB && \
42
46
apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB && \
43
47
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB && \
44
48
wget https://apt.repos.intel.com/setup/intelproducts.list -O /etc/apt/sources.list.d/intelproducts.list && \
49
+ apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub &&\
45
50
apt-get update -y && \
46
- apt-get install -y --allow-downgrades --allow-change-held-packages --no-install-recommends \
51
+ apt-get install -y --no-install-recommends \
52
+ automake \
47
53
bashtop \
54
+ build-essential \
48
55
ca-certificates \
49
56
curl \
57
+ devscripts \
58
+ dh-make \
50
59
dkms \
60
+ fakeroot \
61
+ ffmpeg \
51
62
fonts-nanum \
52
63
fonts-nanum-coding \
53
64
fonts-nanum-extra \
54
65
g++ \
66
+ gcc \
55
67
gfortran \
68
+ gir1.2-gtk-3.0 \
69
+ git \
70
+ graphviz \
56
71
htop \
57
72
intel-mkl-2020.3-111 intel-ipp-2020.2-108 intel-tbb-2020.3-108 intel-daal-2020.2-108 intel-mpi-2019.8-108 \
58
73
iputils-ping \
59
74
libasound2-dev \
75
+ libatlas-base-dev \
60
76
libavcodec-dev \
77
+ libavformat-dev \
78
+ libavresample-dev \
61
79
libboost-dev \
62
80
libboost-filesystem-dev \
63
81
libboost-system-dev \
64
- libcairo2-dev libgirepository1.0-dev pkg-config gir1.2-gtk-3.0 \
65
- libgdal-dev python3-gdal \
82
+ libcairo2-dev \
83
+ libcurl3-dev \
84
+ libdc1394-22-dev \
85
+ libeigen3-dev \
86
+ libfaac-dev \
87
+ libfreetype6-dev \
88
+ libgdal-dev \
89
+ libgeos++-dev \
90
+ libgeos-dev \
91
+ libgflags-dev \
92
+ libgirepository1.0-dev \
93
+ libgoogle-glog-dev \
94
+ libgphoto2-dev \
95
+ libgstreamer-plugins-base1.0-dev \
96
+ libgstreamer1.0-dev \
97
+ libgtk-3-dev \
98
+ libhdf5-dev \
99
+ libhdf5-serial-dev \
66
100
libjasper-dev \
101
+ libjpeg-dev \
102
+ liblapack-dev \
103
+ libmp3lame-dev \
104
+ libmpdec2 \
67
105
libnuma-dev \
68
- libopenblas-dev liblapack-dev \
106
+
107
+ # libnvinfer8=${LIBNVINFER}+cuda${CUDA} \
108
+ # libnvonnxparsers8=${LIBNVINFER}+cuda${CUDA} \
109
+ # libnvparsers8=${LIBNVINFER}+cuda${CUDA} \
110
+ # libnvinfer-plugin8=${LIBNVINFER}+cuda${CUDA} \
111
+ # libnvinfer-dev=${LIBNVINFER}+cuda${CUDA} \
112
+ # libnvonnxparsers-dev=${LIBNVINFER}+cuda${CUDA} \
113
+ # libnvparsers-dev=${LIBNVINFER}+cuda${CUDA} \
114
+ # libnvinfer-plugin-dev=${LIBNVINFER}+cuda${CUDA} \
115
+
116
+ libopenblas-dev \
117
+ libopencore-amrnb-dev \
118
+ libopencore-amrwb-dev \
119
+ libpng-dev \
120
+ libportmidi-dev \
121
+ libproj-dev \
122
+ libprotobuf-dev \
123
+ libsdl-dev \
124
+ libsdl-image1.2-dev \
125
+ libsdl-mixer1.2-dev \
126
+ libsdl-ttf2.0-dev \
69
127
libsm6 \
128
+ libsmpeg-dev \
129
+ libssl-dev \
70
130
libswscale-dev \
131
+ libtbb-dev \
132
+ libtheora-dev \
133
+ libtiff-dev \
71
134
libv4l-dev \
135
+ libvorbis-dev \
136
+ libx264-dev \
72
137
libxext6 \
73
138
libxine2-dev \
74
139
libxml2-dev \
75
140
libxrender-dev \
76
141
libxslt1-dev \
142
+ libxvidcore-dev \
143
+ libzmq3-dev \
144
+ lintian \
77
145
make \
146
+ mercurial \
78
147
mime-support \
79
148
ncurses-term \
80
149
net-tools \
150
+ nodejs \
151
+ nvtop \
152
+ openjdk-8-jdk \
153
+ openssh-client \
81
154
openssh-server \
82
155
pdsh \
83
- proj-bin libproj-dev libgeos-dev libgeos++-dev graphviz \
156
+ pkg-config \
157
+ proj-bin \
158
+ protobuf-compiler \
159
+ python${PYTHON_VERSION} \
160
+ python${PYTHON_VERSION} \
161
+ python${PYTHON_VERSION}-dev \
162
+ python${PYTHON_VERSION}-dev \
163
+ python${PYTHON_VERSION}-distutils \
164
+ python-apt \
165
+ python3-gdal \
166
+ python3-libnvinfer=${LIBNVINFER}+cuda${CUDA} \
84
167
subversion \
85
168
unzip \
169
+ v4l-utils \
170
+ vim \
171
+ wget \
172
+ x264 \
86
173
xvfb \
87
174
xz-utils \
88
175
yasm \
89
176
zip \
90
- openssh-client \
91
- build-essential \
92
- gcc \
93
- git \
94
- libavformat-dev \
95
- libcurl3-dev \
96
- libfreetype6-dev \
97
- libgeos-dev libgeos++-dev \
98
- libhdf5-serial-dev \
99
- libjpeg-dev \
100
- libmpdec2 \
101
- libpng-dev \
102
- libsdl-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev \
103
- libsmpeg-dev libportmidi-dev libavformat-dev libswscale-dev \
104
- libssl-dev \
105
- libtiff-dev \
106
- libzmq3-dev \
107
- pkg-config \
108
- python${PYTHON_VERSION} \
109
- python${PYTHON_VERSION}-dev \
110
177
vim \
111
- wget \
112
178
zlib1g-dev && \
179
+ # install nccl
180
+ curl -fsSL https://developer.download.nvidia.com/compute/redist/nccl/v2.11/nccl_2.11.4-1+cuda11.2_x86_64.txz -O && \
181
+ tar --no-same-owner --keep-old-files --lzma -xvf nccl_${NCCL}-1+cuda11.2_x86_64.txz -C /usr/local/cuda/lib64/ --strip-components=2 --wildcards '*/lib/libnccl.so.*' && \
182
+ tar --no-same-owner --keep-old-files --lzma -xvf nccl_${NCCL}-1+cuda11.2_x86_64.txz -C /usr/lib/pkgconfig/ --strip-components=3 --wildcards '*/lib/pkgconfig/*' && \
183
+ rm nccl_${NCCL}-1+cuda11.2_x86_64.txz && \
184
+ ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/stubs/libcuda.so.1 && \
185
+ echo "/usr/local/cuda/lib64/stubs" > /etc/ld.so.conf.d/z-cuda-stubs.conf && \
186
+ ldconfig && \
113
187
echo "/opt/intel/daal/lib/intel64" >> /etc/ls.so.conf && \
114
188
echo "/opt/intel/ipp/lib/intel64" >> /etc/ls.so.conf && \
115
189
echo "/opt/intel/lib/intel64" >> /etc/ls.so.conf && \
116
190
echo "/opt/intel/mkl/lib/intel64" >> /etc/ls.so.conf && \
117
- find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete
191
+ find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \
192
+ # Add OpenCL ICD files for LightGBM
193
+ mkdir -p /etc/OpenCL/vendors && \
194
+ echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
118
195
196
+ ARG CUDA_VERSION=11.4.2
197
+ ENV TRT_VERSION 8.2.3.0
198
+ RUN v="${TRT_VERSION%.*}-1+cuda${CUDA_VERSION%.*}" &&\
199
+ apt-get update &&\
200
+ sudo apt-get install libnvinfer8=${v} libnvonnxparsers8=${v} libnvparsers8=${v} libnvinfer-plugin8=${v} \
201
+ libnvinfer-dev=${v} libnvonnxparsers-dev=${v} libnvparsers-dev=${v} libnvinfer-plugin-dev=${v} \
202
+ python3-libnvinfer=${v};
203
+ # OFED
119
204
WORKDIR /tmp
120
- RUN curl -fsSL https://developer.download.nvidia. com/compute/redist/nccl/v2.8/nccl_2.8.4-1+cuda11.2_x86_64.txz -O && \
121
- tar --no-same-owner --keep-old-files --lzma -xvf nccl_${NCCL}-1+cuda11.2_x86_64.txz -C /usr/local/cuda/lib64/ --strip-components=2 --wildcards '*/lib/libnccl.so.*' && \
122
- tar --no-same-owner --keep-old-files --lzma -xvf nccl_${NCCL}-1+cuda11.2_x86_64.txz -C /usr/lib/pkgconfig/ --strip-components=3 --wildcards '*/lib/pkgconfig/*' && \
123
- rm nccl_${NCCL}-1+cuda11.2_x86_64.txz && \
124
- ldconfig
205
+ RUN wget -q -O - https://www.mellanox. com/downloads/ofed/MLNX_OFED-5.1-2.3.7.1/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64.tgz | tar xzf - && \
206
+ cd /tmp/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64 && \
207
+ ./mlnxofedinstall --user-space-only --without-fw-update --all -q && \
208
+ cd /tmp && \
209
+ rm -rf /tmp/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64*
125
210
126
- RUN ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/stubs/libcuda.so.1 && \
127
- echo "/usr/local/cuda/lib64/stubs" > /etc/ld.so.conf.d/z-cuda-stubs.conf && \
128
- ldconfig
211
+ RUN wget https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-Linux-x86_64.sh \
212
+ -q -O /tmp/cmake-install.sh && \
213
+ chmod u+x /tmp/cmake-install.sh && \
214
+ mkdir /usr/bin/cmake && \
215
+ /tmp/cmake-install.sh --skip-license --prefix=/usr/bin/cmake && \
216
+ rm /tmp/cmake-install.sh
129
217
130
- # Install CUDA-11.2 + cuDNN 8.1.1
131
- RUN ln -s /usr/local/cuda-11.2 /usr/local/cuda && \
132
- ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so.8.1.1xs /usr/local/cuda/lib64/libcudnn.so && \
218
+ # Oracle client
219
+ RUN mkdir -p /opt/oracle && \
220
+ cd /opt/oracle && \
221
+ apt-get clean && \
222
+ rm -rf /var/lib/apt/lists/* && \
223
+ apt-get update -y && \
224
+ apt-get install -y --no-install-recommends libaio1 default-libmysqlclient-dev && \
225
+ wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
226
+ unzip instantclient-basiclite-linuxx64.zip && \
227
+ rm -f instantclient-basiclite-linuxx64.zip && \
228
+ cd /opt/oracle/instantclient* && \
229
+ rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci && \
230
+ echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && \
133
231
ldconfig
134
232
135
- RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash - && \
136
- apt-get update -y && \
137
- apt-get install -y nodejs
233
+ # install git-lfs
234
+ WORKDIR /tmp
235
+ RUN curl -sLO https://github.com/git-lfs/git-lfs/releases/download/v3.0.2/git-lfs-linux-amd64-v3.0.2.tar.gz && \
236
+ tar -zxf git-lfs-linux-amd64-v3.0.2.tar.gz && \
237
+ bash install.sh && \
238
+ rm -rf /tmp/*
138
239
139
- # Add OpenCL ICD files for LightGBM
140
- RUN mkdir -p /etc/OpenCL/vendors && \
141
- echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
240
+ # Install BashTop
241
+ WORKDIR /tmp
242
+ RUN git clone https://github.com/aristocratos/bashtop.git && \
243
+ cd bashtop && \
244
+ make install
142
245
143
- RUN if [[ "${PYTHON_VERSION}" == "3.8" ]]; then \
144
- apt-get install -y python${PYTHON_VERSION}-distutils python-apt ; \
145
- fi
246
+ # Install Open UCX
247
+ WORKDIR /tmp
248
+ RUN wget https://github.com/openucx/ucx/archive/v1.12.0.tar.gz && \
249
+ tar xvf v1.12.0.tar.gz && \
250
+ cd ucx-1.12.0 && \
251
+ bash ./autogen.sh && \
252
+ mkdir build && \
253
+ cd build && \
254
+ ../configure --prefix=/usr/local/ucx && \
255
+ make -j$(nproc) && \
256
+ make install
146
257
147
258
RUN rm -r /usr/bin/python3 && \
148
259
ln -s /usr/bin/python3.8 /usr/bin/python3 && \
@@ -221,13 +332,6 @@ RUN echo "Install mecab-ko-dic" && \
221
332
git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git && \
222
333
python3 -m pip install /tmp/mecab-python-0.996
223
334
224
- RUN wget https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-Linux-x86_64.sh \
225
- -q -O /tmp/cmake-install.sh && \
226
- chmod u+x /tmp/cmake-install.sh && \
227
- mkdir /usr/bin/cmake && \
228
- /tmp/cmake-install.sh --skip-license --prefix=/usr/bin/cmake && \
229
- rm /tmp/cmake-install.sh
230
-
231
335
WORKDIR /tmp
232
336
COPY ./requirements.py38.txt /tmp
233
337
RUN python3 -m pip install --no-cache-dir -r requirements.py38.txt && \
@@ -319,17 +423,6 @@ RUN cd /usr/local/src && mkdir lightgbm && cd lightgbm && \
319
423
cd /usr/local/src/lightgbm/LightGBM/python-package && \
320
424
python3 setup.py install --precompile
321
425
322
- # Install Open UCX
323
- WORKDIR /tmp
324
- RUN wget https://github.com/openucx/ucx/archive/v1.12.0.tar.gz && \
325
- tar xvf v1.12.0.tar.gz && \
326
- cd ucx-1.12.0 && \
327
- bash ./autogen.sh && \
328
- mkdir build && \
329
- cd build && \
330
- ../configure --prefix=/usr/local/ucx && \
331
- make -j$(nproc) && \
332
- make install
333
426
334
427
# Install Open MPI
335
428
RUN mkdir /tmp/openmpi && \
@@ -369,39 +462,7 @@ RUN cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_confi
369
462
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \
370
463
mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config
371
464
372
- # Install git-lfs
373
- WORKDIR /tmp
374
- RUN curl -sLO https://github.com/git-lfs/git-lfs/releases/download/v3.1.2/git-lfs-linux-amd64-v3.1.2.tar.gz && \
375
- tar -zxf git-lfs-linux-amd64-v3.1.2.tar.gz && \
376
- bash install.sh && \
377
- rm -rf /tmp/*
378
-
379
- # Install VSCode
380
- RUN curl -fL https://github.com/cdr/code-server/releases/download/v4.0.2/code-server-4.0.2-linux-amd64.tar.gz \
381
- | tar -C /usr/local/lib -xz && \
382
- mv /usr/local/lib/code-server-4.0.2-linux-amd64 /usr/local/lib/code-server-4.0.2 && \
383
- ln -s /usr/local/lib/code-server-4.0.2/bin/code-server /usr/local/bin/code-server
384
-
385
- # add 19.09.06
386
- RUN git clone --recursive https://github.com/dmlc/xgboost && \
387
- cd xgboost && \
388
- mkdir build && \
389
- cd build && \
390
- cmake .. -DUSE_CUDA=ON -DUSE_NCCL=ON && \
391
- make -j$(nproc) && \
392
- cd ../python-package && \
393
- python3 setup.py install
394
-
395
- RUN git clone --recursive https://github.com/Microsoft/LightGBM && \
396
- cd LightGBM && \
397
- mkdir build ; cd build && \
398
- cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda-11.2/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda-11.2/include/ .. && \
399
- make -j$(nproc) && \
400
- cd ../python-package && \
401
- python3 setup.py install --precompile
402
-
403
- RUN rm /usr/local/bin/node && \
404
- python3 -m pip install --no-cache-dir jupyter_nbextensions_configurator traitlets
465
+ RUN rm /usr/local/bin/node
405
466
# Install Jupyterlab extensions
406
467
RUN jupyter nbextensions_configurator enable && \
407
468
jupyter contrib nbextension install && \
0 commit comments