From 82c6768ab7134406800ac0a3eb1542cb95b30501 Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner <mm@ucw.sh> Date: Fri, 28 May 2021 15:20:45 +0200 Subject: [PATCH] Add support for CUDA 11 --- .gitlab-ci.yml | 47 +++++++++++---- jupyterhub/base/Dockerfile | 3 +- jupyterhub/vim/Dockerfile | 3 +- ubuntu/{ => cuda-10}/Dockerfile | 0 ubuntu/cuda-11/Dockerfile | 101 ++++++++++++++++++++++++++++++++ 5 files changed, 139 insertions(+), 15 deletions(-) rename ubuntu/{ => cuda-10}/Dockerfile (100%) create mode 100644 ubuntu/cuda-11/Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f9c46a2..e1600dd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,16 +2,27 @@ stages: - build - deploy -build ubuntu: +"build: [cuda-10]": stage: build tags: [linux, shell] script: - image_name="${CI_REGISTRY}/${CI_PROJECT_PATH,,}" - - podman build --cgroup-manager=cgroupfs --pull -t "${image_name}/ubuntu" ubuntu - - podman build --cgroup-manager=cgroupfs -t "${image_name}/jupyterhub" jupyterhub/base - - podman build --cgroup-manager=cgroupfs -t "${image_name}/jupyterhub_vim" jupyterhub/vim + - cuda_tag="cuda-10" + - podman build --cgroup-manager=cgroupfs --pull -t "${image_name}/ubuntu:${cuda_tag}" -f ubuntu/cuda-10/Dockerfile ubuntu + - podman build --cgroup-manager=cgroupfs --build-arg CUDA_TAG=${cuda_tag} -t "${image_name}/jupyterhub:${cuda_tag}" jupyterhub/base + - podman build --cgroup-manager=cgroupfs --build-arg CUDA_TAG=${cuda_tag} -t "${image_name}/jupyterhub_vim:${cuda_tag}" jupyterhub/vim -deploy ubuntu: +"build: [cuda-11]": + stage: build + tags: [linux, shell] + script: + - image_name="${CI_REGISTRY}/${CI_PROJECT_PATH,,}" + - cuda_tag="cuda-11" + - podman build --cgroup-manager=cgroupfs --pull -t "${image_name}/ubuntu:${cuda_tag}" -f ubuntu/cuda-11/Dockerfile ubuntu + - podman build --cgroup-manager=cgroupfs --build-arg CUDA_TAG=${cuda_tag} -t "${image_name}/jupyterhub:${cuda_tag}" jupyterhub/base + - podman build --cgroup-manager=cgroupfs --build-arg CUDA_TAG=${cuda_tag} -t "${image_name}/jupyterhub_vim:${cuda_tag}" jupyterhub/vim + +deploy: stage: deploy tags: [linux, shell] only: @@ -22,13 +33,23 @@ deploy ubuntu: - image_name="${CI_REGISTRY}/${CI_PROJECT_PATH,,}" - podman push "${image_name}/ubuntu" - calver="$(date -u +'%Y%m%dT%H%MZ')" - - podman tag "${image_name}/jupyterhub" "${image_name}/jupyterhub:$calver" - - podman push "${image_name}/jupyterhub:$calver" - - podman image rm "${image_name}/jupyterhub:$calver" - - docker pull "${image_name}/jupyterhub:$calver" - - podman tag "${image_name}/jupyterhub_vim" "${image_name}/jupyterhub_vim:$calver" - - podman push "${image_name}/jupyterhub_vim:$calver" - - podman image rm "${image_name}/jupyterhub_vim:$calver" - - docker pull "${image_name}/jupyterhub_vim:$calver" + - cuda_tag="cuda-10" + - podman tag "${image_name}/jupyterhub:${cuda_tag}" "${image_name}/jupyterhub:$calver_${cuda_tag}" + - podman push "${image_name}/jupyterhub:$calver_${cuda_tag}" + - podman image rm "${image_name}/jupyterhub:$calver_${cuda_tag}" + - docker pull "${image_name}/jupyterhub:$calver_${cuda_tag}" + - podman tag "${image_name}/jupyterhub_vim:${cuda_tag}" "${image_name}/jupyterhub_vim:$calver_${cuda_tag}" + - podman push "${image_name}/jupyterhub_vim:${calver}_${cuda_tag}" + - podman image rm "${image_name}/jupyterhub_vim:${calver}_${cuda_tag}" + - docker pull "${image_name}/jupyterhub_vim:${calver}_${cuda_tag}" + - cuda_tag="cuda-11" + - podman tag "${image_name}/jupyterhub:${cuda_tag}" "${image_name}/jupyterhub:$calver_${cuda_tag}" + - podman push "${image_name}/jupyterhub:$calver_${cuda_tag}" + - podman image rm "${image_name}/jupyterhub:$calver_${cuda_tag}" + - docker pull "${image_name}/jupyterhub:$calver_${cuda_tag}" + - podman tag "${image_name}/jupyterhub_vim:${cuda_tag}" "${image_name}/jupyterhub_vim:$calver_${cuda_tag}" + - podman push "${image_name}/jupyterhub_vim:${calver}_${cuda_tag}" + - podman image rm "${image_name}/jupyterhub_vim:${calver}_${cuda_tag}" + - docker pull "${image_name}/jupyterhub_vim:${calver}_${cuda_tag}" after_script: - podman logout "${CI_REGISTRY}" diff --git a/jupyterhub/base/Dockerfile b/jupyterhub/base/Dockerfile index d298e15..ca8a0c0 100755 --- a/jupyterhub/base/Dockerfile +++ b/jupyterhub/base/Dockerfile @@ -1,5 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 -FROM git.imp.fu-berlin.de:5000/bioroboticslab/robofish/docker/ubuntu +ARG CUDA_TAG +FROM git.imp.fu-berlin.de:5000/bioroboticslab/robofish/docker/ubuntu:${CUDA_TAG} LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" diff --git a/jupyterhub/vim/Dockerfile b/jupyterhub/vim/Dockerfile index 7db4243..daca3bc 100755 --- a/jupyterhub/vim/Dockerfile +++ b/jupyterhub/vim/Dockerfile @@ -1,5 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 -FROM git.imp.fu-berlin.de:5000/bioroboticslab/robofish/docker/jupyterhub +ARG CUDA_TAG +FROM git.imp.fu-berlin.de:5000/bioroboticslab/robofish/docker/jupyterhub:${CUDA_TAG} LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" diff --git a/ubuntu/Dockerfile b/ubuntu/cuda-10/Dockerfile similarity index 100% rename from ubuntu/Dockerfile rename to ubuntu/cuda-10/Dockerfile diff --git a/ubuntu/cuda-11/Dockerfile b/ubuntu/cuda-11/Dockerfile new file mode 100644 index 0000000..31e4bf5 --- /dev/null +++ b/ubuntu/cuda-11/Dockerfile @@ -0,0 +1,101 @@ +# SPDX-License-Identifier: Apache-2.0 + +ARG UBUNTU_VERSION=18.04 +ARG CUDA_VERSION=11.3.0 +FROM nvidia/cudagl:${CUDA_VERSION}-base-ubuntu${UBUNTU_VERSION} +ENV CUDA ${CUDA_VERSION} + +LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" +LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" + +ARG TZ=Europe/Berlin +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -y --no-install-recommends apt-utils >/dev/null 2>&1 && \ + apt-get install -y --no-install-recommends software-properties-common && \ + apt-get update && \ + apt-get install -y locales && \ + locale-gen en_US.UTF-8 && \ + echo $TZ > /etc/timezone && \ + apt-get install -y tzdata && \ + rm /etc/localtime && \ + ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ + dpkg-reconfigure -f noninteractive tzdata && \ + apt-get install -y --no-install-recommends \ + build-essential \ + pkg-config \ + git \ + file \ + nano \ + zip \ + unzip \ + curl \ + wget \ + rsync \ + && \ + apt-get install -y \ + python3-dev \ + python3-pip \ + python3-venv \ + python3-setuptools \ + python3-distutils \ + && \ + apt-get clean + +ARG CUDNN_VERSION=8.2.0.53-1 +ENV CUDNN ${CUDNN_VERSION} + +ARG CUDNN_MAJOR_VERSION=8 +ENV CUDNN_MAJOR_VERSION ${CUDNN_MAJOR_VERSION} + +ARG LIBNVINFER_VERSION=8.0.0-1 +ARG LIBNVINFER_MAJOR_VERSION=8 + +ENV CUDA_TOOLKIT_PATH /usr/local/cuda + +RUN /bin/bash -c "apt-get update && \ + CUDA_VERSION=\${CUDA%.*} && \ + apt-get install -y --no-install-recommends \ + cuda-command-line-tools-\${CUDA_VERSION//./-} \ + libcublas-dev-\${CUDA_VERSION//./-} \ + cuda-nvrtc-dev-\${CUDA_VERSION//./-} \ + cuda-cudart-dev-\${CUDA_VERSION//./-} \ + libcufft-dev-\${CUDA_VERSION//./-} \ + libcurand-dev-\${CUDA_VERSION//./-} \ + libcusolver-dev-\${CUDA_VERSION//./-} \ + libcusparse-dev-\${CUDA_VERSION//./-} \ + libcudnn\${CUDNN_MAJOR_VERSION}-dev=\${CUDNN}+cuda\${CUDA_VERSION} \ + && \ + find /usr/local/cuda-\${CUDA_VERSION}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \ + rm /usr/lib/x86_64-linux-gnu/libcudnn_static_v\${CUDNN_MAJOR_VERSION}.a && \ + apt-get install -y --no-install-recommends \ + libnvinfer\${LIBNVINFER_MAJOR_VERSION}=\${LIBNVINFER_VERSION}+cuda\${CUDA_VERSION} \ + libnvinfer-dev=\${LIBNVINFER_VERSION}+cuda\${CUDA_VERSION} \ + libnvinfer-plugin-dev=\${LIBNVINFER_VERSION}+cuda\${CUDA_VERSION} \ + libnvinfer-plugin\${LIBNVINFER_MAJOR_VERSION}=\${LIBNVINFER_VERSION}+cuda\${CUDA_VERSION}" + +RUN apt-get update && \ + apt-get install -y \ + libglu1-mesa \ + libjpeg62 \ + liborc-0.4 \ + ffmpeg \ + && \ + apt-get clean + +COPY pip.conf /etc/ + +ENV PYTHON_VERSION=3.8 +ENV PYTHON_PIP_VERSION=20.2.3 +ENV PYTHON_SETUPTOOLS_VERSION=50.3.0 + +RUN apt-get install -y \ + python${PYTHON_VERSION} \ + python${PYTHON_VERSION}-dev \ + python${PYTHON_VERSION}-venv \ + && \ + apt-get clean && \ + python${PYTHON_VERSION} -m pip install --upgrade \ + pip==${PYTHON_PIP_VERSION} \ + setuptools==${PYTHON_SETUPTOOLS_VERSION} -- GitLab