Skip to content

Commit

Permalink
added new GPU docker files (#3408)
Browse files Browse the repository at this point in the history
* added new GPU docker files

* removed maintainer label
  • Loading branch information
StrikerRUS authored Oct 9, 2020
1 parent 7667592 commit 5c9c109
Show file tree
Hide file tree
Showing 3 changed files with 155 additions and 1 deletion.
14 changes: 13 additions & 1 deletion docker/gpu/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
# Tiny Distroless Dockerfile for LightGBM GPU CLI-only Version

`dockerfile-cli-only-distroless.gpu` - A multi-stage build based on the `nvidia/opencl:devel` (build) and `distroless/cc-debian10` (production) images. LightGBM (CLI-only) can be utilized in GPU and CPU modes. The resulting image size is around 15 MB.

---

# Small Dockerfile for LightGBM GPU CLI-only Version

`dockerfile-cli-only.gpu` - A multi-stage build based on the `nvidia/opencl:devel` (build) and `nvidia/opencl:runtime` (production) images. LightGBM (CLI-only) can be utilized in GPU and CPU modes. The resulting image size is around 100 MB.

---

# Dockerfile for LightGBM GPU Version with Python

A docker file with LightGBM utilizing nvidia-docker. The file is based on the `nvidia/cuda:8.0-cudnn5-devel` image.
`dockerfile.gpu` - A docker file with LightGBM utilizing nvidia-docker. The file is based on the `nvidia/cuda:8.0-cudnn5-devel` image.
LightGBM can be utilized in GPU and CPU modes and via Python (2.7 & 3.6).

## Contents
Expand Down
75 changes: 75 additions & 0 deletions docker/gpu/dockerfile-cli-only-distroless.gpu
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Copyright (c) 2020 The Rector and Visitors of the University of Virginia
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
# documentation files (the "Software"), to deal in the Software without restriction, including without
# limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
# Software, and to permit persons to whom the Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or substantial portions
# of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
# TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

FROM nvidia/opencl:devel AS build
ARG DEBIAN_FRONTEND=noninteractive
ARG OPENCL_LIBRARIES=/usr/lib/x86_64-linux-gnu
ARG OPENCL_INCLUDE_DIR=/usr/include/CL

# SYSTEM
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
git \
ca-certificates \
libglib2.0-0 \
libxext6 \
libsm6 \
libxrender1 \
cmake \
libboost-dev \
libboost-system-dev \
libboost-filesystem-dev \
gcc \
g++ && \
rm -rf /var/lib/apt/lists/*

# LightGBM
WORKDIR /opt
RUN git clone --recursive --branch stable --depth 1 https://github.com/Microsoft/LightGBM && \
cd LightGBM && mkdir build && cd build && \
cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=${OPENCL_LIBRARIES}/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=$OPENCL_INCLUDE_DIR .. && \
make OPENCL_HEADERS=$OPENCL_INCLUDE_DIR LIBOPENCL=$OPENCL_LIBRARIES

FROM gcr.io/distroless/cc-debian10
COPY --from=build \
/opt/LightGBM/lightgbm \
/opt/LightGBM/lib_lightgbm.so \
/opt/LightGBM/
COPY --from=build \
/usr/lib/x86_64-linux-gnu/libOpenCL.so.1 \
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 \
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 \
/usr/lib/x86_64-linux-gnu/libgomp.so.1 \
/usr/lib/x86_64-linux-gnu/libstdc++.so.6 \
/usr/lib/x86_64-linux-gnu/
COPY --from=build \
/lib/x86_64-linux-gnu/libm.so.6 \
/lib/x86_64-linux-gnu/libgcc_s.so.1 \
/lib/x86_64-linux-gnu/libpthread.so.0 \
/lib/x86_64-linux-gnu/libc.so.6 \
/lib/x86_64-linux-gnu/libdl.so.2 \
/lib/x86_64-linux-gnu/
COPY --from=build \
/lib64/ld-linux-x86-64.so.2 \
/lib64/
COPY --from=build /etc/OpenCL/vendors/nvidia.icd /etc/OpenCL/vendors/nvidia.icd

ENV PATH /opt/LightGBM:${PATH}
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8

ENTRYPOINT ["lightgbm"]
67 changes: 67 additions & 0 deletions docker/gpu/dockerfile-cli-only.gpu
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Copyright (c) 2020 The Rector and Visitors of the University of Virginia
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
# documentation files (the "Software"), to deal in the Software without restriction, including without
# limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
# Software, and to permit persons to whom the Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or substantial portions
# of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
# TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

FROM nvidia/opencl:devel AS build
ARG DEBIAN_FRONTEND=noninteractive
ARG OPENCL_LIBRARIES=/usr/lib/x86_64-linux-gnu
ARG OPENCL_INCLUDE_DIR=/usr/include/CL

# SYSTEM
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
git \
ca-certificates \
libglib2.0-0 \
libxext6 \
libsm6 \
libxrender1 \
cmake \
libboost-dev \
libboost-system-dev \
libboost-filesystem-dev \
gcc \
g++ && \
rm -rf /var/lib/apt/lists/*

# LightGBM
WORKDIR /opt
RUN git clone --recursive --branch stable --depth 1 https://github.com/Microsoft/LightGBM && \
cd LightGBM && mkdir build && cd build && \
cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=${OPENCL_LIBRARIES}/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=$OPENCL_INCLUDE_DIR .. && \
make OPENCL_HEADERS=$OPENCL_INCLUDE_DIR LIBOPENCL=$OPENCL_LIBRARIES

FROM nvidia/opencl:runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
libxext6 \
libsm6 \
libxrender1 \
libboost-system-dev \
libboost-filesystem-dev \
gcc \
g++ && \
rm -rf /var/lib/apt/lists/*

COPY --from=build \
/opt/LightGBM/lightgbm \
/opt/LightGBM/lib_lightgbm.so \
/opt/LightGBM/

ENV PATH /opt/LightGBM:${PATH}
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8

ENTRYPOINT ["lightgbm"]

0 comments on commit 5c9c109

Please sign in to comment.