From d36cb8f827d05418ec7e9493d85210323598a062 Mon Sep 17 00:00:00 2001 From: storypku Date: Sat, 26 Sep 2020 06:56:55 -0700 Subject: [PATCH] Docker: CUDA image with TensorRT to avoid CN build error "Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)" when running "apt-get -y update" --- docker/build/build_cyber.sh | 7 +++++- docker/build/cyber.x86_64.dockerfile | 6 ++--- .../build/installers/install_gpu_support.sh | 18 ++++++++----- docker/build/pre_cyber.x86_64.dockerfile | 25 +++++++++++++++++++ 4 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 docker/build/pre_cyber.x86_64.dockerfile diff --git a/docker/build/build_cyber.sh b/docker/build/build_cyber.sh index 65e8738de9..a72795ad81 100755 --- a/docker/build/build_cyber.sh +++ b/docker/build/build_cyber.sh @@ -168,10 +168,15 @@ TAG="" function determine_tag() { local docker_fn="$(basename ${DOCKERFILE})" local myid="${docker_fn%%.*}" - if [ "${myid}" = "tegra_cyber" ]; then + if [[ "${myid}" == "tegra_cyber" ]]; then local cuda_ver="10.2" local cudnn_ver="8" TAG="${REPO}:L4T-${cuda_ver}-cudnn${cudnn_ver}-${UBT_LTS}-${TIME}" + elif [[ "${myid}" == "pre_cyber" ]]; then + local cuda_ver="10.2" + local cudnn_ver="7" + local trt_ver="7" + TAG="${REPO}:cuda${cuda_ver}-cudnn${cudnn_ver}-trt${trt_ver}-devel-${UBT_LTS}-${TARGET_ARCH}" else TAG="${REPO}:cyber-${TARGET_ARCH}-${UBT_LTS}-${TIME}" fi diff --git a/docker/build/cyber.x86_64.dockerfile b/docker/build/cyber.x86_64.dockerfile index 63cd9c57ec..865d79fc71 100644 --- a/docker/build/cyber.x86_64.dockerfile +++ b/docker/build/cyber.x86_64.dockerfile @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 +ARG BASE_IMAGE=apolloauto/apollo:cuda10.2-cudnn7-trt7-devel-18.04-x86_64 FROM ${BASE_IMAGE} ARG BUILD_STAGE @@ -12,8 +12,8 @@ ENV PATH /opt/apollo/sysroot/bin:$PATH COPY installers /tmp/installers COPY rcfiles /opt/apollo/rcfiles -# Pre-downloaded tarballs -COPY archive /tmp/archive +# (Deprecated) Pre-downloaded tarballs +# COPY archive /tmp/archive RUN bash /tmp/installers/install_minimal_environment.sh ${GEOLOC} RUN bash /tmp/installers/install_cmake.sh diff --git a/docker/build/installers/install_gpu_support.sh b/docker/build/installers/install_gpu_support.sh index bee1969ec3..fb0a871525 100755 --- a/docker/build/installers/install_gpu_support.sh +++ b/docker/build/installers/install_gpu_support.sh @@ -27,13 +27,19 @@ apt_get_update_and_install \ libatlas-base-dev \ liblapack-dev -# TODO(storypku): GPU Build only -apt_get_update_and_install \ - libcublas10 \ - libcublas-dev +TARGET_ARCH="$(uname -m)" + +# Note(storypku): +# 1) cublas disabled for x86 since already installed before this installer runs + +if [[ "${TARGET_ARCH}" == "aarch64" ]]; then + apt_get_update_and_install \ + libcublas10 \ + libcublas-dev -info "Install TensorRT 7 ..." -bash ${CURR_DIR}/install_tensorrt.sh + info "Install TensorRT 7 ..." + bash ${CURR_DIR}/install_tensorrt.sh +fi info "Install libtorch ..." bash ${CURR_DIR}/install_libtorch.sh diff --git a/docker/build/pre_cyber.x86_64.dockerfile b/docker/build/pre_cyber.x86_64.dockerfile new file mode 100644 index 0000000000..7352a9ca52 --- /dev/null +++ b/docker/build/pre_cyber.x86_64.dockerfile @@ -0,0 +1,25 @@ +ARG BASE_IMAGE=nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 +FROM ${BASE_IMAGE} + +ENV TENSORRT_VERSION 7.0.0-1+cuda10.2 + +RUN apt-get -y update \ + && apt-get install -y --no-install-recommends \ + libnvinfer7="${TENSORRT_VERSION}" \ + libnvonnxparsers7="${TENSORRT_VERSION}" \ + libnvparsers7="${TENSORRT_VERSION}" \ + libnvinfer-plugin7="${TENSORRT_VERSION}" \ + libnvinfer-dev="${TENSORRT_VERSION}" \ + libnvonnxparsers-dev="${TENSORRT_VERSION}" \ + libnvparsers-dev="${TENSORRT_VERSION}" \ + libnvinfer-plugin-dev="${TENSORRT_VERSION}" \ + && find /usr/lib/x86_64-linux-gnu/ -type f \ + \( -name "libnv*_static.a" -or -name "libmyelin_*_static.a" \) \ + -delete -print \ + && apt-get -y clean \ + && rm -rf /var/lib/apt/lists/* \ + && rm -f /etc/apt/sources.list.d/nvidia-ml.list \ + && rm -f /etc/apt/sources.list.d/cuda.list + +# NVIDIA apt sources.list removed to speed up build +# Remove static TensorRT libraries -- GitLab